game-ai
Philosophie fondamentale
L'Intelligence Artificielle (IA) de jeu n'est pas un apprentissage automatique académique tentant de prédire le futur ou de battre des grands maîtres d'échecs. L'IA de jeu est une illusion de divertissement et de rythme. Un PNJ qui joue avec une précision surhumaine, un viseur parfait au pixel près et sans aucune hésitation est frustrant et peu amusant à affronter. L'IA de jeu doit fournir un télégraphe clair, une prise de décision tactique lisible, une perception sensorielle crédible et un calibrage dynamique de la difficulté qui donne aux joueurs la sensation palpitante de surpasser un adversaire compétent.
Architecture d'IA de jeu en 4 étapes
Étape 1 : Architectures de prise de décision : Arbres de comportement vs Machines à états finis
- Arbres de comportement (le standard de l'industrie pour l'IA de combat) :
- Construits sur des nœuds hiérarchiques évalués de gauche à droite :
- Composites :
- Séquence ($\circ$) : Exécute les enfants séquentiellement ; échoue si un enfant échoue (ex. A une arme $\circ$ Recharge $\circ$ Vise).
- Sélecteur ($?$) : Exécute les enfants jusqu'à ce que l'un réussisse (ex. Fuit si faible santé $?$ Attaque de mêlée $?$ Cherche un couvert).
- Décorateurs : Portes conditionnelles (ex. Inverser, Limite de temps, Temps de recharge).
- Feuilles / Tâches : Actions exécutables concrètes (ex. DéplacerVersPosition, JouerAnimation).
- Composites :
- Construits sur des nœuds hiérarchiques évalués de gauche à droite :
- Machines à états finis (FSM) :
- Idéales pour les créatures ambiantes simples ou les boss discrets ( États : Patrouille, Enquête, Poursuite, Attaque, Fuite).
Étape 2 : Systèmes de perception sensorielle (Vue et Ouïe)
- Cônes de vision (Perception visuelle) :
- Évaluez la visibilité de la cible à l'aide de 3 portes :
- Vérification de distance : Le joueur est-il dans le rayon de vision ($D \le R_{\text{max}}$) ?
- Angle du champ de vision : Le produit scalaire du vecteur avant de l'ennemi et de la direction vers le joueur est-il $\ge \cos(\theta / 2)$ ?
- Ligne de vue (Raycast) : Un raycast physique des yeux de l'ennemi au torse du joueur touche-t-il la géométrie du monde ou le joueur ?
- Évaluez la visibilité de la cible à l'aide de 3 portes :
- Perception acoustique (Ouïe) :
- Propagez les événements sonores dans le monde du jeu (ex. Coup de feu = 40 m de rayon ; Pas de course = 8 m de rayon).
- Les PNJ alertés passent à un état Enquête dirigé vers l'origine du son.
Étape 3 : Navigation par NavMesh et Flancs tactiques
- Cheminement A sur les maillages de navigation* :
- Les PNJ interrogent les NavMeshes pré-cuits pour le cheminement.
- Obstacles de vélocité réciproques (RVO / ORCA) : Implémentez l'évitement de collision local pour que des groupes de 5 ennemis ne marchent pas en file indienne identique ou ne bloquent pas les entrées de porte.
- Recherche de couvert tactique et flancs :
- Interrogez les systèmes de requête environnementale (EQS) : Échantillonnez les points candidats autour du joueur, notez les points en fonction de l'angle de la géométrie du couvert, de la distance et de la protection de la ligne de vue.
Étape 4 : Télégraphe et l'illusion de compétence
- Télégraphie des intentions :
- Avant d'exécuter une attaque mortelle, les PNJ doivent télégraphier leur intention à l'aide d'indices audio ("Flanc gauche !", "Grenade dehors !"), d'animations d'armement ou de lignes de visée laser.
- L'"effet Stormtrooper" (Incompétence contrôlée) :
- Le premier tir sur un joueur inconscient doit intentionnellement manquer de 1 mètre pour alerter le joueur et créer de l'adrénaline avant d'infliger des dégâts réels.
Format livrable : Spécification d'arbre de comportement d'IA ennemie (ENEMY-AI-SPEC.md)
# Spécification de l'arbre de comportement de l'IA ennemie de combat : [Archétype PNJ]
## 1. Paramètres de perception
- **Distance de vision** : 25 mètres (Jour) / 14 mètres (Nuit)
- **Angle du champ de vision** : 110 degrés
- **Rayon d'audition** : Coup de feu = 50 m | Pas de course = 12 m | Accroupi = 0 m (Silencieux)
- **Tampon de temps de réaction** : 350 ms de délai entre l'acquisition de la cible et le déclenchement de l'attaque
## 2. Hiérarchie de l'arbre de comportement principal
Racine (Sélecteur) ├── [Décorateur : Santé < 20%] -> Séquence (Fuite d'urgence) │ ├── TrouverCouvertLoinDuJoueur() │ ├── DéplacerVersCouvert() │ └── JouerAnimation("Soin") ├── [Décorateur : PeutVoirJoueur == Vrai] -> Sélecteur (Branche de combat) │ ├── [Décorateur : ÀPortéeDeMêlée] -> Séquence (Frappe de mêlée) │ │ ├── JouerCriAudio("À l'attaque !") │ │ ├── TélégrapheArmement(400ms) │ │ └── ExécuterDégâtsDeMêlée() │ └── Séquence (Engagement à distance) │ ├── Sélecteur (Prendre un couvert ou flanquer) │ │ ├── [Décorateur : DansCouvert] -> ViserLeJoueur() │ │ └── DéplacerVersPositionDeFlanc() │ └── TirerRafale(3_coups) └── Séquence (Patrouille / Inactif) ├── ChoisirProchainPointDePatrouille() ├── DéplacerVersPoint() └── AttendreAléatoire(2s, 5s)
## 3. Cris audio et retour joueur
- **En voyant le joueur** : *"Contact ! À neuf heures !"*
- **En lançant une grenade** : *"Frag dehors ! Couvrez-vous !"*
Exemple concret : Correction de l'IA "injuste" d'un ennemi sniper
- Problème : Les testeurs détestaient un ennemi sniper car il tuait instantanément les joueurs à travers la carte sans avertissement.
- Remédiation : Ajout d'une ligne de visée laser rouge visible balayant le sol pendant 2,0 secondes avant de tirer, associée à un bourdonnement de charge audio distinct.
- Résultat : Les morts de joueurs semblaient justes et évitables ; les scores de satisfaction des testeurs sont passés de 32 % à 88 %.
Liste de vérification
- Le système de perception valide la distance, le cône FOV et la ligne de vue par raycast physique.
- L'arbre de comportement priorise les états de survie/fuite avant les actions offensives.
- Toutes les attaques mortelles incluent des animations de télégraphe lisibles ou des cris audio.
- Les agents NavMesh implémentent un évitement local (RVO) pour éviter l'encombrement des portes.
- Les temps de réaction ennemis incluent des tampons de délai réalistes de type humain (200-400 ms).
Anti-patrons
- IA omnisciente : Laisser les ennemis connaître les coordonnées du joueur à travers des murs solides sans vérifications de perception.
- Pivotement instantané : Les ennemis pivotant de 180° et tirant avec une précision de 100 % en une seule image.
- Les lemmings en file indienne : Avoir 8 ennemis marchant en ligne droite dans un seul couloir pour être abattus un par un.