AI 개발자 로그의 2부에 오신 걸 환영합니다!
지난화에 이어서, AI가 자원보다 10배 더 많은 에너지를 생산하는 전략을 따르게 되었습니다. 물론, 이것이 더 많은 자원이 생산될 수 있도록 하는 전략도 필요하겠죠.

이번에는, 전략 조건으로 "MoreThanGameTimeSeconds"(1)을 사용했습니다. 이 조건은 해당 전략이 게임이 시작할 때부터 끝날 때까지 작동한다는 걸 의미합니다.
여기서는, 동시에 발동할 수 있는 에너지를 위한 전략과 자원을 위한 전략이 있습니다.
자원 전략은 상시 발동 상태고, 에너지 전략은 에너지가 자원에 비해 10배 이상이 아닐 때 발동하게 됩니다.
마지막으로, 전략 관리자가 실행될 필요가 있는, 전략 이름이 달린 테이블을 만들어내게 됩니다.

기지, 확장 그리고 다른 위치
이제 하나 또는 그 이상의 전략이 생겼으니, 그 전략을 어딘가에서 실행해야 합니다,
이를 위해서, 우리는 전략을 실행할 위치를 맵에서 정의해야 하죠.
처음 위치는 주 기지고, 사령관, 또는 공장/기술자의 위치에 생성됩니다. "AILocationCreator" 가 이걸 담당하게 되죠. 만약 필요하다면, 이 생성기는 전초기지나 확장 기지로 새로운 위치를 지정할 수도 있습니다, 예를 들어, AI가 유닛이나 건물을 선물받았는데 주변에 기지가 없다면, 새로운 기지가 만들어지는 식입니다.
새 기지나 확장이 생성된다면, 2개의 또다른 Lua 기능이 그 위치에서 작동하기 시작합니다.
먼저, "AILocationManager" 가 실행됩니다. 이 관리자는 전략의 목록을 읽고, 해당 위치에 작동되어야 하는 건설이나 유닛 생성기를 확인합니다.
건설 또는 유닛 생성기는 대체로 이렇게 짜여있습니다:

Debug: 참으로 설정되었을 때, 전체적인 locationmanager의 로그 없이도 개개의 생성기가 검사를 받을 수 있도록 설정합니다.
FormerName: 이 생성기를 위한 무작위 이름입니다.
RunWithStrategy: 이 생성기가 실행해야 하는 전략의 이름들이 여기 위치합니다.
Priority: 이 생성기의 중요성을 결정합니다.
RunOnBaseType: 이 생성기가 어떤 종류의 기지에 적용되는지 정합니다.
AIPlan: 이 생성기가 실행시켜야 하는 Lua 기능의 이름입니다.
NeedMobileBuilder: 얼마나 많은 일꾼 유닛을 필요로 하는지 정합니다.
먼저 유닛의 정확한 종류가 설정됩니다. (MOBILE + ENGINEER + TECH1)
그 뒤에 우리가 사용하고 싶은 일꾼 유닛의 최소와 최대 숫자가 뒤따르게 되죠.
두 번째 유닛 종류의 경우, 첫 번째 유닛 조건이 충족되지 않았을 때 사용하기 위함입니다.
여기서는 일꾼 유닛이 없을 때 사령관을 사용하게 되죠.
FormerConditions: 전략과 같이, 생성기가 언제, 어디서 사용될지 결정하게 됩니다.
wantStructures: 일꾼과 같이, 여기서 유닛의 카테고리를 나타나게 됩니다.
desiresAssist: 만약 더 많은 일꾼 유닛들의 지원이 필요하다면, 여기서 명시할 수 있습니다.
그렇다면, 이제 어떻게 건물을 짓게 만들어야 할까요?

두 번째 Lua 기능인 "AILocationExecutor"는 "AILocationManager"가 명시한 생성기를 실행하는 기능을 수행합니다, 여기서는, "BuildMoreResource"와 "BuildMoreEnergy" 전략을 위한 생성기들이 되겠죠. 이곳에서, 각각의 특화된 프로그램 기능으로 명령이 전달되고, 그 프로그램들이 필요한 유닛을 찾아 건설이나 공격과 같은 명령을 수행하게 됩니다.
아, 이제 지어지고 있네요!

여기까지 읽어주셔서 감사드리고, 다음 개발자 로그에서 또 봅시다!
친애하는, Uveso.