Estoy desarrollando una IA de juegos de estrategia (piense: Final Fantasy Tactics), y estoy teniendo problemas para diseñar la IA. Mi principal problema es determinar cuál es la mejor opción para hacerlo.
Primero permítanme describir la prioridad de qué acción me gustaría que tome la IA:
Mata a la unidad de jugador más cercana
Cumplir con la directiva principal (matar a todas las unidades de jugador, matar a la unidad objetivo, sobrevivir durante x turnos)
- Curar unidad de aliado / búfer de lanzamiento
Ahora la IA puede hacer lo siguiente a su vez:
Mover -> {Ataque / Habilidad / Objeto} (ya sea ataque o habilidad u objeto)
{Ataque / Habilidad / Objeto} -> Mover
Acércate (si los objetivos no están dentro del alcance)
- {Ataque / Habilidad / Objeto} (si el movimiento no está disponible)
Notas
Las habilidades tienen varios rangos / efectos / costos / efectos. Cada unidad ai tiene entre 5 y 10 habilidades para elegir. La IA priorizará matar sobre la seguridad a menos que su directiva sea sobrevivir durante x turnos. Tampoco le importa que la habilidad cueste mucho. Si bien un jugador puede querer guardar un gran hechizo para más tarde, la IA probablemente lo usará lo antes posible.
El movimiento está en una cuadrícula (hex)
cantidad de unidades de jugador: 3-6
número de unidades ai: 3-7 o más. Probablemente max 10.
La IA y el jugador se turnan para controlar UNA unidad, en lugar de todas al mismo tiempo.
La plataforma es Android (si el programa no responde después de un tiempo, habrá una ventana emergente que le dirá a Force Quit o Wait, ¡lo cual se ve realmente mal!).
Ahora vienen las preguntas:
La mejor habilidad para usar obviamente sería la que golpea a la mayoría de los objetivos por el mayor daño. Pero dado que cada habilidad tiene diferentes rangos, no sabré si están dentro del rango sin explorar cada posible lugar al que pueda moverme.
Una solución sería ir a cada lugar posible para moverse, determinar el ataque óptimo en esa ubicación, lo que me da una lista de movimientos óptimos para cada ubicación. Luego elija el óptimo de la lista y ejecútelo. Pero esto llevará mucho tiempo de CPU. ¿Hay una mejor solución?
Mi idea actual es moverme lo más cerca posible hacia el grupo más grande y cercano de personas, y determinar el ataque / habilidad óptimo desde allí. Creo que esto sería mucho menos trabajo para la CPU y aún permitiría ataques de gran alcance. Es subóptimo pero la IA todavía parecerá "inteligente".
Otras notas / preguntas:
- ¿Lo estoy pensando demasiado o lo estoy complicando demasiado? Mejor solución? Estoy abierto a todo tipo de sugerencias.
- He echado un vistazo a la pregunta de lanzamiento de hechizos , pero no tiene en cuenta el movimiento, así que ¿quizás usar ese algo para cada posible ubicación de movimiento? La respuesta principal mencionó que no era genial para el área de efecto y las peleas grupales, ¿entonces tal vez requiera más ajustes?
- Por favor , si menciona un gráfico / árbol, hágamelo saber básicamente cómo usarlo. Por ejemplo, Nodo significa habilidad, el nivel corresponde al daño, luego busca el nodo más profundo.