Je conçois un jeu de stratégie de combat de flotte spatiale 3D-6DOF en réseau au tour par tour qui repose fortement sur la personnalisation des navires. Permettez-moi d'expliquer un peu le jeu, car vous devez en savoir un peu pour poser la question.
Ce que je vise, c'est la possibilité de créer votre propre flotte de navires avec des formes personnalisées et des modules attachés (hélices, poutres de tracteur ...) qui donneraient des avantages et des inconvénients à chaque navire, vous avez donc beaucoup de distributions de flotte différentes. Par exemple, un long navire avec deux hélices sur le côté permettrait au navire de tourner facilement autour de cet avion, les plus gros navires se déplaceraient lentement à moins que vous placiez beaucoup d'hélices à l'arrière (dépensant ainsi plus de points de "construction" et d'énergie lors du déplacement, et il n'avance que dans cette direction.) Je prévois d'équilibrer tout le jeu autour de cette fonctionnalité.
Le jeu s'articulerait autour de deux phases: les ordres et la phase de combat. Pendant la phase des commandes, vous commandez les différents navires. Lorsque tous les joueurs ont terminé la phase d'ordre, la phase de combat commence et les ordres du navire sont résolus en temps réel pendant un certain temps, puis l'action s'arrête et il y a une nouvelle phase d'ordres.
Le problème vient quand je pense à l'entrée du lecteur. Pour déplacer un navire, vous devez activer ou désactiver différentes hélices si vous voulez diriger, avancer, freiner, tourner en place ... Ces hélices n'ont pas à fonctionner à leur pleine puissance, vous pouvez donc réaliser plus de mouvement combinaisons avec moins d'hélices.
Je pense que cette approche est un peu ennuyeuse. Le joueur ne veut pas jouer avec des moteurs ou quoi que ce soit, vous voulez juste BOUGER et TUER. La façon dont j'ai l'intention que le joueur donne des ordres à ces navires est par une destination et une rotation , puis l'IA calculera la puissance correcte de l'hélice pour réaliser ce mouvement et cette rotation. La propulsion ne doit pas être la même pendant tout le calcul du tour (après que les ordres ont été donnés), donc ce serait cool si les navires réagissaient en se déplaçant, ajustant la puissance des hélices à leurs besoins de manière dynamique, mais cela peut être trop difficile à mettre en œuvre et ce n'est pas vraiment nécessaire pour que le jeu fonctionne.
Dans les deux cas, comment cette IA déciderait-elle des hélices à activer pour la meilleure (ou du moins pas la pire) trajectoire à atteindre?
J'ai pensé à certaines approches:
- Apprendre l'IA: Les types de vaisseaux apprendraient leurs mouvements par essais et erreurs, ajustant leur comportement avec plus d'utilisations et devenant finalement "intelligents". Je ne veux pas m'impliquer jusque-là dans le codage de l'IA, et je pense que cela peut être frustrant pour le joueur (même si vous pouvez le laisser apprendre sans jouer).
- Mouvement temporel pré-calculé: Lors de la création du navire, TOUS les mouvements possibles sont calculés pour chaque configuration d'hélice et puissance pour un temps delta donné. Mémoire intensive, moche, mauvaise.
- Trajectoires précalculées: les mêmes que ci-dessus mais pas pour chaque delta-temps mais l'ensemble de la trajectoire, qui serait alors ajustée autant que possible. Nécessite une configuration d'hélice fixe pour toute la phase de combat et est toujours gourmand en mémoire, laid et mauvais.
- Forçage brutal continu: l'IA vérifie continuellement TOUTES les configurations d'hélices possibles tout au long de la phase de combat, précalcule quelques pas de temps et décide laquelle est la meilleure en fonction de cela. Inconvénients: ce qui est bien maintenant pourrait ne pas être aussi bon plus tard, et c'est trop gourmand en CPU, laid et mauvais aussi.
- Forçage brut simple: idem que ci-dessus, mais uniquement forçage brut au début de la simulation, il nécessite donc une configuration d'hélice constante tout au long de la phase de combat.
- Vérification de l'angle continu: Ce n'est pas une méthode de mouvement complet, mais peut-être un moyen d'éliminer les configurations d'hélices "stupides". Étant donné le vecteur normal de l'hélice actuelle et le vecteur final, vous pouvez approximer la puissance nécessaire pour l'hélice en fonction de l'angle. Vous devez le faire en continu pendant toute la phase de combat. J'ai compris celui-ci récemment, donc je n'y ai pas trop réfléchi. A priori, il a aussi l'inconvénient "ce qui est bien maintenant peut-être pas si bon plus tard", et il ne se soucie pas des autres hélices qui peuvent agir ensemble pour faire une meilleure configuration de propulsion.
Je suis vraiment coincé ici. Des idées?