Estoy diseñando un juego de estrategia de combate de flota espacial 3D-6DOF en red basado en turnos que se basa en gran medida en la personalización de la nave. Déjame explicarte un poco el juego, ya que necesitas saber un poco sobre él para hacer la pregunta.
Lo que busco es la capacidad de crear su propia flota de barcos con formas personalizadas y módulos adjuntos (hélices, vigas de tractor ...) que darían ventajas y desventajas a cada barco, por lo que tiene muchas distribuciones de flota diferentes. Por ejemplo, una nave larga con dos hélices a los lados permitiría que la nave gire fácilmente alrededor de ese avión, las naves más grandes se moverían lentamente a menos que coloque muchas hélices en la parte posterior (por lo tanto, gastará más puntos de "construcción" y energía al moverse, y lo hará). solo muévete rápido hacia esa dirección.) Planeo equilibrar todo el juego en torno a esta función.
El juego giraría en torno a dos fases: órdenes y fase de combate. Durante la fase de órdenes, comanda las diferentes naves. Cuando todos los jugadores finalizan la fase de orden, comienza la fase de combate y las órdenes del barco se resuelven en tiempo real durante un tiempo, luego la acción se detiene y hay una nueva fase de órdenes.
El problema viene cuando pienso en la entrada del jugador. Para mover un barco, debe encender o apagar diferentes hélices si desea dirigir, viajar hacia adelante, frenar, rotar en su lugar ... Estas hélices no tienen que funcionar con toda su potencia, por lo que puede lograr más movimiento combinaciones con menos hélices.
Creo que este enfoque es un poco aburrido. El jugador no quiere jugar con motores ni nada, solo quieres MOVER y MATAR. La forma en que pretendo que el jugador dé órdenes a estas naves es por un destino y una rotación , y luego la IA calcularía la potencia correcta de la hélice para lograr ese movimiento y rotación. La propulsión no tiene que ser la misma durante todo el cálculo del turno (después de que se hayan dado las órdenes), por lo que sería genial si las naves reaccionaran mientras se movían, ajustando el poder de las hélices para sus necesidades dinámicamente, pero puede ser demasiado difícil de implementar y no es realmente necesario para que el juego funcione.
En ambos casos, ¿cómo decidiría esa IA qué hélices activar para lograr la mejor (o al menos no la peor) trayectoria?
Pensé en algunos enfoques:
- Aprendiendo IA: los tipos de barcos aprenderían sobre su movimiento por prueba y error, ajustando su comportamiento con más usos y finalmente se volverían "inteligentes". No quiero involucrarme TAN lejos en la codificación de IA, y creo que puede ser frustrante para el jugador (incluso si puedes dejar que aprenda sin jugar).
- Movimiento de paso de tiempo precalculado: tras la creación de la nave, TODOS los movimientos posibles se calculan para cada configuración de hélice y potencia para un tiempo delta dado. Memoria intensiva, fea, mala.
- Trayectorias precalculadas: lo mismo que el anterior pero no para cada tiempo delta sino para toda la trayectoria, que luego se ajustaría tanto como sea posible. Requiere una configuración de hélice fija para toda la fase de combate y sigue siendo intensiva en memoria, fea y mala.
- Fuerza bruta continua: la IA comprueba continuamente TODAS las configuraciones posibles de hélice a lo largo de toda la fase de combate, calcula previamente algunos pasos de tiempo y decide cuál es la mejor en función de eso. Contras: lo que es bueno ahora puede que no sea tan bueno más tarde, y es demasiado intensivo en CPU, feo y malo también.
- Fuerza bruta única: igual que la anterior, pero solo fuerza bruta al comienzo de la simulación, por lo que necesita una configuración constante de la hélice durante toda la fase de combate.
- Comprobación de ángulo continuo: este no es un método de movimiento completo, sino una forma de descartar configuraciones de hélice "estúpidas". Dado el vector normal de la hélice actual y el final, puede aproximar la potencia necesaria para la hélice en función del ángulo. Debes hacer esto continuamente durante toda la fase de combate. Me di cuenta de esto recientemente, así que no pensé demasiado. A priori, también tiene el inconveniente de "lo que es bueno ahora podría no ser tan bueno más tarde", y no le importan las otras hélices que pueden actuar juntas para hacer una mejor configuración de propulsión.
Estoy realmente atrapado aquí. ¿Algunas ideas?