top of page
  • Join our Discord!
  • Join our Kickstarter!

i.a. parte dois

Bem vindo à segunda parte do devlog sobre IA.


Como descrito no exemplo do último devlog, a IA segue a estratégia de produzir 10 vezes mais energia do que recursos. Claro, nós também precisamos de uma estratégia para garantir que recursos também sejam produzidos.



Como uma condição da estratégia usamos "MoreThanGameTimeSeconds"(1). Isso significa que essa estratégia ficará ativa desde o primeiro segundo da partida, até o seu final.


Aqui temos duas estratégias, uma para recursos e outra para energia, que podem ficar ativas ao mesmo tempo. A estratégia de recursos estará sempre ativa, e a estratégia de energia se ativará quando a quantidade de energia produzida for menor que 10x a quantidade de recursos produzida.

Por último, o gerenciador de estratégia cria uma tabela com o nome das estratégias que precisam ser usadas.







A base, extensões e outros locais



Agora que temos uma ou mais estratégias, elas precisam ser usadas em algum lugar. Para esse fim, definiremos locais no mapa onde executaremos essas estratégias.


A primeira área é a base primária, criada na localização do comandante ou da fábrica/engenheiros ali presentes. A linha de código "AILocationCreator" é responsável por essa tarefa. Se necessário, essa também criará novas zonas para servirem de extensões ou postos avançados. Por exemplo, ao presentear unidades ou construções para a IA em uma região onde não há bases adjacentes, ela criará uma nova base no local.


Quando a base ou extensão é criada, 2 funções LUA serão iniciadas para aquele local. Primeira, o "AILocatrionmanager" se ativa. A mesma lê a lista de estratégia e checa quais builds ou formações de unidades precisam ser ativados para aquele local. Builds ou formações de unidades tipicamente são assim:






















Debug: quando definido como verdadeiro, permite que o criador individual seja examinado sem o registro completo do locationmanager. FormerName: Um nome aleatório para esse criador. RunWithStrategy: Aqui estão os nomes das estratégias com as quais esse criador deveria ser executado. Priority: Determina a importância desse criador. RunOnBaseType: Specifica em qual tipo de base este criador é aplicado. AIPlain: Nome da função LUA que esse criador deveria executar. NeedMobileBuilder: Aqui fica especificado que tipo e quantos engenheiros são necessários. Primeiro, a descrição exata da unidade é feita. (MOBILE + ENGINEER + TECH1) É seguida por 2 números, o mínimo e o máximo de engenheiros que queremos usar. A segunda especificação de unidade é usada no caso da primeira condição não ter sido cumprida. Nesse caso, usamos o commander quando nenhum engenheiro está disponível.


Ok, mas agora vamos construí-lo?


A segunda função LUA "AILocationExecutor" é responsável por executar os comandos especificados pelo "AILocationManager". No nosso caso, esses são os criadores para as estratégias "BuildMoreResource" e "BuildMoreEnergy". Aqui as ordens são passadas para cada programa especializado individual, que procura pela unidade requerida e executa seus comandos, como construir ou atacar.


E está sendo construído!


Agradeço pela atenção, vejo vocês no próximo devblog sobre IA. Atenciosamente, Uveso.

5 views0 comments
bottom of page