Eu sou novo nessa mudança de pilha gamedev, mas já usei os sites de matemática e cs antes.
Então, estou em uma competição para criar IA para uma cobra que competirá com outras quatro cobras em rodadas de 5 minutos, onde as regras são muito parecidas com o tradicional jogo de cobras da Nokia, exceto que há cinco cobras, o tabuleiro é 30x30 e existem uma série de pequenos obstáculos no campo.
Assim como o jogo Nokia, sua cobra cresce quando você chega à fruta e, se você se chocar contra outra cobra ou a parede, você morre. O jogo corre com um atraso de 30 ms entre as jogadas e o servidor envia o novo estado do jogo a cada 50 ms que o código deve analisar e o que não deve e gera a próxima jogada.
O vencedor é a cobra que teve o maior comprimento em qualquer ponto do jogo. Os desempates são decididos por mortes.
Até agora, o que fiz foi implementada uma pesquisa de gráfico A * de cada cobra para determinar se minha cobra é a mais próxima da maçã e, se for, ela vale para a maçã. Caso contrário, criei um pequeno algoritmo para determinar a área mais vazia do tabuleiro, para a qual minha cobra se destina, para antecipar a próxima maçã.
Fora isso, tenho algumas verificações de sobrevivência pequenas para garantir que minha cobra não esteja entrando em uma armadilha que não pode sair e, se ficar presa, tenho algo para lhe dar uma melhor chance de sair.
...
Enfim, testei minha cobra em um servidor de teste e funciona muito bem. Geralmente, minha estratégia de ir apenas para a maçã quando é algo certo e encontrar espaço quando não o faz crescer mais rápido do que qualquer outra cobra (algumas cobras fazem uma coisa semelhante, mas geralmente apenas vão para o meio ou para um canto) às vezes ganham nesses jogos de teste, mas é mais frequentemente derrotado pela mesma cobra que parece ter vantagem sobre a capacidade de sobrevivência (minha cobra cresce mais rápido, mas depois morre de alguma forma e essa outra cobra apenas caminha lentamente e ganha consistência.
Então, eu estava pensando em alguma idéia que alguém tenha para tentar melhorar minha cobra. Ou talvez idéias em uma nova abordagem a ser adotada. Minhas funções e classes são boas, portanto as mudanças que podem parecer drásticas não devem ser tão ruins. Encorajo todas as idéias.
Alguma ideia?