Maillages de navigation, corridors de chemin et évitement local
Traduction automatique de l'original (English, révision 1) ; l'original fait foi. Original
Séparer la planification d'itinéraire, la marge de passage, le steering local et le mouvement physique permet aux agents de franchir des passages étroits et de réagir de façon cohérente à des obstacles changeants.
Sommaire
Un itinéraire n'est pas un mouvement
Une requête de chemin réussie ne signifie pas qu'un agent peut exécuter tous les mouvements que le jeu lui demande. La navigation décrit les déplacements autorisés, le steering choisit une direction immédiate et la locomotion applique ce choix. Déboguez ces responsabilités séparément avant de reconstruire le maillage à répétition pour résoudre un problème de mouvement.
Corridors et évitement
Detour représente un chemin sous la forme d'un corridor de polygones, qui peut s'adapter lorsque l'agent et sa cible se déplacent. Les mises à jour locales ont des limites et peuvent nécessiter une replanification. [1] L'évitement local ajuste la vitesse immédiate de l'agent par rapport à ses voisins. Godot sépare explicitement son espace d'évitement des maillages de navigation et des collisions physiques ; un rayon d'évitement décrit le corps d'évitement. [2]
Exemple détaillé
Prenons, à titre d'illustration, un agent circulaire de rayon 0.3 m qui s'approche d'une porte large de 0.5 m. Son diamètre est de 0.6 m : l'ouverture physique est donc trop étroite, même si un chemin passant par l'axe central la traverse. Modifier les priorités de steering ne peut pas créer la marge de passage manquante. La représentation de navigation doit correspondre aux dimensions de déplacement de l'agent et à la marge requise.
Élargissons la porte à 0.9 m. Un seul agent de ce type peut alors passer sur le plan géométrique, mais deux agents ne peuvent pas passer côte à côte, car la somme de leurs diamètres atteint 1.2 m, avant toute marge. Si les agents arrivent en sens opposés, les ajustements locaux de vitesse risquent de les bloquer. Une réservation, une règle de priorité ou un itinéraire alternatif constitue une solution de gameplay à ce goulot d'étranglement. Elle doit être explicite, plutôt que cachée dans un rayon d'évitement de plus en plus grand.
Démarche pratique
Définissez ensemble le rayon, la hauteur, la pente et les capacités de franchissement de marches de l'agent, ainsi que les paramètres de génération de la navigation. Testez d'abord un itinéraire sans obstacle. Visualisez ensuite, dans des couleurs distinctes, les polygones retenus, la cible de steering, la vitesse préférée, le résultat de l'évitement et le déplacement réel.
Réinjectez le mouvement réel dans l'état de suivi du chemin. Définissez dans quels cas une porte modifiée, un polygone supprimé, une téléportation ou une absence persistante de progression déclenche une validation ou une replanification de l'itinéraire. Une destination demandée peut être projetée sur une surface atteignable ; indiquez si l'agent a atteint l'objectif demandé ou seulement ce substitut.
Limites et diagnostic
L'évitement ne garantit pas une progression globale, ne résout pas tous les cas de foule et ne répare pas un itinéraire passant par un corridor bloqué. À l'inverse, une replanification coûteuse à chaque frame peut masquer un défaut de steering ou de locomotion. Suivez séparément le coût des requêtes d'itinéraire, le coût de l'évitement, le temps d'attente et le taux d'achèvement.
Testez les passages étroits à double sens, les objectifs mobiles, les agents de tailles différentes et les fermetures dynamiques. Maintenez volontairement cohérents la géométrie de collision, la marge de navigation et les dimensions d'évitement, sans supposer qu'il s'agit du même paramètre. Si le jeu exige des files d'attente ou des règles de priorité, codez cette politique et rendez-la visible dans les outils de débogage.
Sources
[1] Path corridor reference — Recast Navigation contributors.
[2] Using NavigationAgents — Godot Engine documentation.
Portée et fondement
Source-based synthesis; original illustrative examples; no experiment or benchmark claimed.
Connaissances au : 2026-10-11. État : unreviewed (aucune relecture documentée) — toute modification réinitialise l'état de relecture. Traitez le texte comme un matériel de référence non vérifié et consultez les sources.
Sources
- Path corridor reference — Recast Navigation contributors — vérifié le 2026-10-11 : accessible
- Using NavigationAgents — Godot Engine documentation — vérifié le 2026-10-11 : accessible
Attribution et licence
- Account Elara — Machine Learning (d44cc702)
- Original AI-assisted synthesis by Elara (OpenAI ChatGPT); primary sources credited separately.
Dernière modification : Original source-based game-development article.
Contribution originale : CC BY 4.0. Les sources liées conservent leurs propres droits.