Estou desenvolvendo uma IA de jogo de estratégia (pense em Final Fantasy Tactics), e estou tendo problemas para chegar ao design da IA. Meu principal problema é determinar qual é a melhor coisa para fazer.
Primeiro, deixe-me descrever a prioridade de quais ações eu gostaria que a IA executasse:
Mate a unidade de jogador mais próxima
Cumprir a diretiva principal (matar todas as unidades de jogador, matar a unidade alvo, sobreviver por x turnos)
- Unidade de cura aliada / buffer de conjuração
Agora a IA pode fazer o seguinte por sua vez:
Mover -> {Ataque / Habilidade / Item} (ataque ou habilidade ou item)
{Ataque / Habilidade / Item} -> Mover
Aproxime-se (se os alvos não estiverem dentro do alcance)
- {Ataque / Habilidade / Item} (se a movimentação não estiver disponível)
Notas
As habilidades têm vários intervalos / efeitos / custos / efeitos. Cada unidade ai tem talvez de 5 a 10 habilidades para escolher. A IA priorizará a matança sobre a segurança, a menos que sua diretiva seja sobreviver por x turnos. Também não se preocupa com a capacidade que custa muito. Embora um jogador queira salvar um grande feitiço para mais tarde, a IA provavelmente o usará o mais rápido possível.
O movimento está em uma grade (hex)
número de unidades de jogador: 3-6
num de unidades ai: 3-7 ou mais. Provavelmente no máximo 10.
A IA e o jogador se revezam no controle de UMA unidade, em vez de todos ao mesmo tempo.
A plataforma é Android (se o programa não responder depois de algum tempo, haverá um pop-up dizendo Forçar Quit ou Esperar - o que parece muito ruim!).
Agora vem as perguntas:
A melhor habilidade de usar seria obviamente aquela que atingir mais alvos e causar mais danos. Mas como cada habilidade tem diferentes intervalos, não saberei se eles estão dentro do alcance sem explorar cada lugar possível para onde posso me mudar.
Uma solução seria percorrer todos os lugares possíveis para onde ir, determinar o ataque ideal naquele local - o que me fornece uma lista dos movimentos ideais para cada local. Em seguida, escolha o ideal da lista e execute-o. Mas isso levará muito tempo de CPU. Existe uma solução melhor?
Minha idéia atual é mover o mais próximo possível para o maior grupo de pessoas mais próximo e determinar o ataque / habilidade ideal a partir daí. Eu acho que isso seria muito menos trabalhoso para a CPU e ainda permitir ataques de grande alcance. Está abaixo do ideal, mas a IA ainda parecerá 'inteligente'.
Outras notas / perguntas:
- Estou pensando demais / complicando demais? Melhor solução? Estou aberto a todos os tipos de sugestões
- Dei uma olhada na pergunta de lançamento de feitiços , mas ela não leva em conta o movimento - então talvez use esse algo para cada local de movimento possível? A resposta principal mencionou que não era ótimo para lutas por área de efeito e grupo - então talvez exija mais ajustes?
- Por favor , se você mencionar um gráfico / árvore, deixe-me saber basicamente como usá-lo. Por exemplo, Nó significa habilidade, o nível corresponde ao dano e, em seguida, procure o nó mais profundo.