안녕 여러분, Uveso에요! 생츄어리의 AI 개발자 로그에 오신 걸 환영합니다!
이 개발자 로그는 AI를 상대로 한 게임을 좋아하시는 플레이어들과, AI를 건드려보거나 자신만의 AI를 설계하고 싶은 모더들을 위한 것입니다.
AI는 무슨 언어를 사용할까요?
AI의 모든 결정을 내리는 기본적인 틀은 Lua를 통해 프로그래밍됩니다.
이곳에서 AI의 현재 전략, AI가 지원하는 플레이어 기능과 임무를 위한 스크립트 등등이 실행되죠.
기지 관리와 확장 역시 여기서 주관하게 됩니다.

우선 AI가 전략을 정하고 나면, 우리는 서서히 Lua의 영역에서 벗어나게 됩니다. 유닛의 움직임, 길찾기, 유닛 생산 등등은 Lua에서 시작하지만 C# 기능을 통해 실행되죠.
이 방식으로, 우리는 폭넓게 모딩이 가능하면서도, 동시에 수천의 유닛을 조작할 수 있는 AI를 만들어낼 수 있었습니다.
그러면 이 AI가 어떻게 작동할까요?
(주목하세요, 여기서부터 세부적인 프로그래밍에 관한 이야기가 시작되니까요)
우선, AI 전략 관리자가 실행됩니다.
이건 독립적인 Lua 프로그램 스레드로, 테이블을 계속해서 돌리고, 특정 조건이 참인지 거짓인지 확인하는 기능만 수행합니다. 특정 전략을 위한 모든 조건이 만족된다면, 그 전략의 이름이 남겨지게 되죠. 동시에 여러 전략이 발동되기도 합니다.
이건 정확하게 어떻게 작동할까요?
우선, 전략 생성기가 어떤 것인지 한번 보도록 합시다:

여기에는 유저 인터페이스에 나타나는 전략 이름과 전략 묘사가 있습니다.
이제 AI난이도가 올 차례입니다. 생츄어리의 경우, AI가 중간, 또는 고급 난이도일 경우에만 전략이 실행됩니다.
모든 전략은 일정한 우선순위를 가지고 실행됩니다. 우선순위가 100인 전략이 우선순위가 50인 전략보다 먼저 실행되는 식이죠.
그리고 전략 생성기의 핵심, 전략 조건이 있습니다. 전략이 사용되려면 해당되는 조건 모두가 참이여야 하죠. 조건은 유닛의 숫자, 상대의 건물이나 맵의 상태일 수 있습니다.
여기서는, 에너지의 총량이 자원의 10배 이하인 것을 조건으로 걸었습니다. ( energy <= resource * x = true )
이 조건이 참으로 충족되면, 전략이 실행되면서 AI가 더 많은 에너지 생산 건물을 짓게 되죠.
다음에 일어나는 일에 대해서는, 다음 AI 개발자 로그에서 다루도록 하겠습니다.
인내심을 가지고 우리 게임을 기다려주셔서 감사드리고, 이번 개발자 로그가 여러분이 흥미롭게 볼 수 있는 글이었다면 좋겠네요.
정성을 담아, Uveso.