Eu tenho um projeto para criar um jogo de estratégia em tempo real do zero. Ainda estou no estágio inicial de planejamento, mas tenho programado um pouco para ver a mecânica.
Eu sei programar. Também tenho uma boa idéia de como estruturarei as classes de jogos e a IA baseada em regras (máquina de estado) do jogador de computador.
Quero desenvolver Doutrinas, que darão um comportamento específico a uma unidade específica (mas podem ser usadas em muitas unidades ao mesmo tempo), como Escoteiro, Seguir Rota da Missão, manter Posição (atacar qualquer inimigo que se aproxima ou recuar se estiver sobrecarregado) etc ...
As doutrinas serão aplicadas apenas às unidades, portanto, elas terão uma perspectiva de unidade e não estarão cientes de toda a localização do mapa.
A IA do computador analisará todo o mapa visível e decidirá em qual sociedade atribuir cada unidade, dependendo de outro conjunto de regras.
Eu estou fazendo isso em c # com OpenGL.
Por enquanto, não tenho muito, apenas algumas coisas em testes antes de começar minha concepção principal. Eu tenho um loop de jogo no qual todo o processamento do jogo (onde chamarei o movimento de atualização, combate, renderização, etc, um após o outro) ocorrerá, é chamado com muita frequência se o evento Application.Idle.
Agora, eu estava pensando. Como haverá muitas coisas para processar no gameloop, a IA do computador e as unidades devem selecionar suas ações nesse loop ou será muito lento?
Se quiser que todas as coisas sejam simultâneas, devo criar um Thread separado para a IA do computador? Ou mesmo uma linha separada para cada unidade?
Não tenho muita experiência com multi-threading. Qual seria a melhor abordagem para isso?