J'ai un projet pour créer un jeu de stratégie en temps réel à partir de zéro. Je suis encore au début de la planification, mais j'ai programmé un peu pour voir la mécanique.
Je sais programmer. J'ai également une bonne idée de la façon dont je structurerai les classes de jeu et l'IA basée sur des règles (machine d'état) pour le joueur sur ordinateur.
Je veux développer des doctrines, qui donneront un comportement spécifique à une unité spécifique (mais peuvent être utilisées sur plusieurs unités en même temps), telles que Scout, Follow Mission Route, Hold Position (attaquer tout ennemi qui approche ou battre en retraite s'il est débordé) , etc...
Les doctrines ne s'appliqueront qu'aux unités, donc elles auront une perspective d'unité, et ne seront pas conscientes sur l'ensemble de la situation de la carte.
L'IA informatique analysera l'intégralité de la carte visible et décidera de la soctrine à affecter à chaque unité en fonction d'un autre ensemble de règles.
Je fais cela en C # avec OpenGL.
Pour l'instant, je n'ai pas grand chose, seulement quelques éléments en tests avant de commencer ma conception principale. J'ai une boucle de jeu où tout le traitement du jeu (où j'appellerai le mouvement de mise à jour, le combat, le rendu, etc., l'un après l'autre) se produira, il est appelé très souvent si l'événement Application.Idle.
Maintenant, je me demandais. Puisqu'il y aura beaucoup de choses à traiter dans la boucle de jeu, l'ordinateur AI et les unités devraient-ils sélectionner leurs actions dans cette boucle ou sera-ce trop lent?
Si je veux que tout soit simultané, dois-je créer un thread distinct pour l'IA de l'ordinateur? Ou même un fil distinct pour chaque unité?
Je n'ai pas beaucoup d'expérience avec le multi-threading. Quelle serait la meilleure approche pour cela?