GOAP (Planification d'action orientée vers les objectifs) L'intelligence artificielle déterminant sa propre stratégie architecture GOAP
Recherche

GOAP (Planification d'action orientée vers les objectifs) L'intelligence artificielle déterminant sa propre stratégie architecture GOAP

AuteurGameDev Base
Date27 octobre 2026
37 min de lecture

Stratégies GOAP : Conception d'IA avec le contrôle dans Unity et la flexibilité dans Unreal Engine

Fondements de l'architecture GOAP et son rôle stratégique dans la conception de jeux

La Planification d'Actions Axée sur les Objectifs (GOAP) est un algorithme de planification puissant, adapté de la recherche en intelligence artificielle au domaine du développement de jeux, qui donne aux personnages non-joueurs (PNJ) la capacité de créer leurs propres stratégies. Cette architecture se distingue des approches d'IA traditionnelles telles que les machines à états finis (FSM) ou les arbres de comportement (BT), qui reposent sur des organigrammes fixes. Elle offre la possibilité de créer des mondes de jeux où les PNJ prennent des décisions de manière dynamique en fonction des changements environnementaux et des objectifs personnels, tout en affichant des comportements intuitifs et complexes. La philosophie fondamentale de GOAP n'est pas de spécifier pourquoi un agent (PNJ) se déplace, mais ce qu'il veut faire. Lorsqu'un agent définit généralement un objectif simple (« manger », « posséder du bois »), le système GOAP trouve automatiquement la séquence d'étapes nécessaire pour atteindre cet objectif. Ce processus commence par les informations d'un « état du monde » décrivant le monde actuel de l'agent, et génère un « plan » contenant les actions qui mèneront finalement à l'état cible. Dans cette section, les composants fondamentaux de l'architecture GOAP, son principe de fonctionnement et ses impacts stratégiques sur la conception de jeux seront examinés en profondeur.

Le système GOAP repose sur trois concepts principaux : les Objectifs, les Actions et l'État du Monde. L'« État du Monde » est une structure de données qui représente l'état instantané du monde du jeu ; il peut généralement être considéré comme un dictionnaire composé de paires clé/valeur. Par exemple, une structure telle que {"hasFood": false, "isHungry": true, "hasAxe": true} décrit l'état actuel du PNJ. L'« Objectif » est l'état idéal que l'agent souhaite atteindre. Cet objectif est également défini de manière similaire par une structure d'état du monde ; par exemple, l'objectif {"hasFood": true, "isHungry": false} vise à amener le PNJ à un état où il est rassasié et possède de la nourriture. Les « Actions » sont des opérations capables de modifier l'état du monde. Chaque action possède deux propriétés importantes : les « Préconditions » et les « Effets ». Les préconditions listent les conditions qui doivent être remplies dans l'état du monde pour qu'une action puisse être exécutée. Par exemple, la précondition de l'action collectWood peut être {"hasAxe": true, "inForest": true}.

Les effets quant à eux définissent les modifications que l'action apportera à l'état du monde lorsqu'elle sera exécutée avec succès ; le résultat de l'action collectWood peut être {"hasWood": true}. L'algorithme GOAP rassemble ces trois composants pour créer un modèle de graphe. La racine du graphe représente l'état cible. L'algorithme analyse à rebours les actions nécessaires pour atteindre l'objectif. Si les résultats d'une action répondent à certaines contraintes de l'objectif et que les préconditions de l'action sont compatibles avec l'état actuel, cette action est incluse dans le graphe. Ce processus continue de l'état actuel jusqu'à ce que l'état cible soit atteint. Lorsque le chemin trouvé est inversé, il révèle le plan exact des actions que le PNJ doit exécuter séquentiellement. Ce plan est généralement trouvé à l'aide d'un algorithme BFS (Search en largeur d'abord) étendu ou A*.

Les impacts stratégiques de GOAP sur la conception de jeux sont assez vastes et peuvent profondément influencer l'expérience du joueur. L'impact le plus évident est le dynamisme et l'intuitivité des comportements des PNJ. Dans les systèmes traditionnels, la tâche de « manger » pour un PNJ équivaut simplement à un appel de fonction spécifique ou à un organigramme statique. Cependant, lors de l'utilisation de GOAP, il peut y avoir plusieurs chemins valides pour le même objectif. Par exemple, une action de collecte de framboises (gatherRaspberry) et une action d'achat au marché (buyFood) sont deux actions différentes qui remplissent à la fois les préconditions ({...}) et l'effet ({hasFood: true}). Le système GOAP évalue ces actions et choisit la plus appropriée en fonction de l'état actuel de l'agent (par exemple, s'il a de l'argent ou si le chemin vers le marché est ouvert). De cette façon, le joueur voit un PNJ atteindre l'objectif en suivant différentes stratégies à chaque niveau, ce qui donne au monde une sensation plus vivante et crédible. Au lieu de suivre passivement des commandes de manière passive, les PNJ peuvent hiérarchiser leurs propres besoins et produire des solutions en fonction des changements dans leur environnement. Par exemple, si l'objectif d'un PNJ est « d'aller dans un endroit sûr », le système GOAP décide s'il doit lui recommander la maison sûre la plus proche ou une grotte derrière la forêt, en tenant compte de l'état actuel du monde (emplacement des ennemis, durée du voyage, etc.).

Un autre impact stratégique important est la flexibilité du processus de conception et la vitesse d'itération. GOAP encourage l'utilisation d'une structure orientée données plutôt que de figer les actions et les objectifs dans le code. Des outils tels que les plugins GOAP dans Unreal Engine permettent aux concepteurs de définir visuellement les actions, les préconditions et les effets via l'éditeur Blueprint. De la même manière, des structures telles que les objets de données ou les scriptable objects dans Unity permettent de stocker ces informations sous forme de fichiers de données externes ou d'objets de transfert. Cette approche axée sur les données rend le processus de développement stratifié et collaboratif. Les concepteurs peuvent tester, expérimenter et modifier le comportement des PNJ sans avoir à attendre que les programmeurs modifient le code. Par exemple, une précondition complexe telle qu'un « PNJ transportant une arme pour qu'une action soit efficace au combat » peut être définie non pas par l'écriture d'une ligne de code par le programmeur, mais sous la forme d'une expression que le concepteur peut saisir dans une zone de saisie de données. Cela accélère non seulement le prototypage, mais permet également de mettre à jour dynamiquement les comportements des PNJ lors d'événements en jeu (opérations de réanimation). Après la publication d'un jeu, en modifiant une seule valeur dans un fichier de configuration, on peut doter un PNJ d'une nouvelle action ou réduire le taux d'échec d'une action. Cette flexibilité représente un avantage majeur pour la maintenance et l'évolution du jeu tout au long de son cycle de vie.

Cependant, ces avantages offerts par GOAP doivent être mis en balance avec le coût des performances. Le processus de planification peut s'avérer coûteux en termes de calcul, en particulier dans les situations impliquant un grand nombre d'actions, des préconditions complexes et un vaste espace d'état du monde. Si un agent GOAP planifie à nouveau à chaque petit mouvement ou à chaque image (frame), cette consommation de ressources peut nuire gravement aux performances du jeu. Par conséquent, la bonne pratique d'utilisation de GOAP consiste à déclencher le système uniquement lorsque cela est nécessaire. En règle générale, il suffit que l'agent réévalue la planification lorsque son objectif change, lorsqu'il termine son plan actuel ou à la fin d'un intervalle de temps spécifique (par exemple, toutes les 5 secondes). Cela permet de maintenir les décisions de l'agent à jour tout en évitant les calculs inutiles. De plus, les versions optimisées des algorithmes GOAP et l'utilisation correcte des structures de données (par exemple, une distribution de mémoire compatible avec le cache du CPU) jouent un rôle essentiel dans l'amélioration des performances. Les frameworks basés sur DOTS tels que Utility Intelligence (ECS) dans Unity sont des exemples qui visent à offrir une solution directe à ces problèmes de performance.

En conclusion, GOAP est un outil stratégique qui enrichit le comportement des PNJ et offre une flexibilité de conception. Cependant, pour qu'il soit intégré avec succès, il faut être conscient du coût en termes de performances, et la fréquence ainsi que la complexité de la planification doivent être gérées avec soin. GOAP a apporté une avancée significative dans le domaine de la conception de jeux en offrant au joueur une expérience plus intelligente, plus adaptable et plus crédible dans le monde du jeu.

GOAP dans Unity : Mise en œuvre technique et écosystème de développement

Unity offre une plateforme polyvalente et flexible pour mettre en œuvre l'architecture GOAP (Goal Oriented Action Planning). L'approche de la plateforme donne aux développeurs la flexibilité de construire un système unique tout en leur permettant de bénéficier d'un riche écosystème de paquets tiers. Cela nécessite l'adoption de stratégies différentes en fonction de l'échelle du projet, des compétences de l'équipe de développement et des exigences de performance. Les implémentations de GOAP dans Unity couvrent un large éventail, allant de solutions développées en interne à partir de zéro jusqu'à des paquets standardisés et conviviaux. Dans cette section, les détails techniques de la mise en œuvre de GOAP dans l'environnement Unity, les ensembles d'outils de développement et l'écosystème existant seront examinés.

Mettre en œuvre GOAP à partir de zéro dans un projet Unity est une option idéale pour les développeurs avancés qui souhaitent garder un contrôle total sur la logique fondamentale de l'architecture. Cette approche est généralement réalisée en C# et se compose de quelques composants de base. Premièrement, l'"État du monde" (World State) est généralement défini comme un dictionnaire ou une structure de données personnalisée stockant des paires clé/valeur. Deuxièmement, des classes de base sont créées pour l'"Objectif" (Goal) et l'"Action". Alors qu'une classe Goal définit l'état cible, une classe Action possède une structure plus complexe. La classe Action contient une liste de modèles d'état du monde appelés Preconditions (préconditions) et une liste de modèles d'état du monde appelés Effects (effets). Les préconditions doivent être satisfaites dans l'état actuel du monde pour que l'action puisse être exécutée ; les effets indiquent comment l'action modifiera l'état du monde une fois terminée avec succès. Le planificateur GOAP utilise ces informations pour créer un graphe. L'algorithme trouve généralement le chemin le plus court (c'est-à-dire le plan composé du moins d'actions) de l'état actuel à l'état cible en utilisant une recherche en largeur (BFS) ou l'algorithme A* plus optimisé. Ce processus génère une liste d'étapes que l'agent doit suivre pour atteindre l'objectif. Ensuite, ce plan est utilisé pour que l'agent exécute ses actions dans l'ordre. Cette approche de mise en œuvre unique permet au développeur de façonner le système GOAP entièrement en fonction des besoins du projet, mais elle peut également prolonger le temps de développement et nécessiter une gestion d'architecture complexe susceptible d'entraîner des erreurs potentielles.

La plus grande force de Unity est l'écosystème riche et diversifié de solutions GOAP proposées aux développeurs via le Unity Asset Store. Ces paquets offrent des solutions prêtes à l'emploi, testées et souvent très performantes qui facilitent la structuration de la logique GOAP sous forme d'objets. Grâce à ces paquets, les développeurs peuvent intégrer rapidement GOAP dans leurs projets et se concentrer sur des mécaniques de jeu de plus haut niveau. L'une des solutions les plus populaires et les plus fréquemment mentionnées dans cet écosystème est le Behavior Package développé par CrashKonijn. Ce paquet propose de nombreuses techniques d'IA telles que GOAP, Utility AI et les machines à états au sein d'un cadre unique. Le module GOAP du paquet, le paquet Goap, permet aux développeurs de configurer visuellement la logique GOAP dans l'Unity Editor. Les concepteurs peuvent définir des objectifs, des actions ainsi que leurs préconditions et effets en tant qu'objets et les organiser dans une hiérarchie. Parmi les autres solutions importantes figurent XGOAP, CAP'N et Ultimate AI System. Chacun de ces paquets répond à des besoins différents en offrant des fonctionnalités uniques. Par exemple, alors que XGOAP propose une alternative compatible avec C#7, flexible et libre en termes de licence,

CAP'N se concentre sur l'intégration de la logique GOAP avec des systèmes de pathfinding. Les points auxquels les développeurs doivent prêter attention lors du choix de ces paquets sont la compatibilité du paquet avec la dernière version, le support actif de son développeur et la connaissance de son impact sur les performances. Par exemple, dans certaines discussions sur les forums, des avis sont émis sur les performances des paquets, car certains nœuds peuvent provoquer des allocations de mémoire inutiles s'ils fonctionnent de manière cyclique. Pour cette raison, il est important de tester soigneusement les versions bêta (par exemple, les versions publiées à des dates futures comme le "12 déc. 2025") lors du choix d'un paquet.

L'intégration de GOAP avec l'architecture orientée données (DOTS) pour les projets axés sur la performance et à grande échelle est une question importante qui doit être abordée parallèlement à la direction future de Unity, le Data-Oriented Technology Stack (DOTS). DOTS est un ensemble d'architectures visant à stocker et à traiter les données plus efficacement en mémoire, et se compose généralement de composants tels que l'Entity Component System (ECS) et le Job System. Cependant, les implémentations traditionnelles de GOAP utilisent généralement un modèle d'état du monde basé sur des dictionnaires clé/valeur. Cette approche peut empêcher le stockage des données dans des blocs de mémoire contigus, ce qui est l'objectif de l'ECS, et entraîner des échecs de cache CPU, provoquant une baisse des performances. Cette difficulté montre la complexité de faire fonctionner GOAP de manière intégrée avec l'ECS. Dans ce contexte, la gestion du coût de performance de la logique GOAP devient critique. Le cadre appelé Utility Intelligence (ECS), développé par Unity lui-même, peut être considéré comme une réponse directe à ce problème. Ce framework est une structure d'IA haute performance basée sur les principes de GOAP, mais reposant entièrement sur les composants DOTS tels que l'ECS, le Job System et le Burst Compiler. Cela montre que GOAP peut non seulement être une technique d'IA, mais aussi être rendu compatible avec les pratiques modernes de développement de jeux orientées données. Les problèmes rencontrés par les développeurs dans leurs expériences d'implémentation de GOAP au sein de l'ECS lors des discussions sur les forums Unity sont également la preuve de cette difficulté. Par conséquent, si les exigences de performance du projet sont élevées (par exemple, un jeu de stratégie où des centaines de PNJ se déplacent simultanément), concevoir des solutions optimisées pour l'ECS comme Utility Intelligence ou une architecture GOAP basée sur l'ECS nativement efficace peut être une meilleure stratégie.

Les ensembles d'outils utilisés par les développeurs pour intégrer et développer le système GOAP dans un projet Unity varient en fonction du type de solution GOAP. Si un système GOAP unique doit être développé, les développeurs utiliseront des environnements de développement professionnels tels que Visual Studio ou JetBrains Rider pour écrire, déboguer et optimiser le code C#. Dans ce processus, il est nécessaire de veiller à la lisibilité, à la facilité de maintenance et aux performances du code. Lors de l'utilisation de paquets standardisés, le processus de développement se concentre davantage sur l'interface visuelle de l'Unity Editor. Des paquets comme le CrashKonijn Behavior Package facilitent la configuration de la logique GOAP en créant des fenêtres et des objets personnalisés dans l'Unity Editor. Les développeurs définissent les objectifs, les actions et les préconditions via cette interface et les lient à l'arbre de comportement d'un agent. Cela offre la possibilité d'expérimenter et d'ajuster les comportements de l'IA sans écrire de code ou en en écrivant très peu. De plus, les outils de débogage intégrés de Unity (Debug.Log, Profiler) peuvent être utilisés pour surveiller le fonctionnement du système GOAP et détecter les goulots d'étranglement potentiels en matière de performance. Par exemple, des informations telles que la fréquence d'exécution de la planification GOAP et le temps passé à créer un plan sont essentielles pour comprendre l'efficacité du système. En conclusion, Unity propose une approche flexible et multicouche pour mettre en œuvre GOAP. Les développeurs peuvent décider, en fonction des exigences et des capacités de leurs projets, sur un large spectre allant de la construction d'un système unique à l'utilisation d'un riche écosystème de paquets. Cependant, surtout dans les projets à grande échelle, la gestion prudente du coût de performance de GOAP et de son intégration avec des architectures modernes comme DOTS sera la clé pour obtenir un résultat réussi.

GOAP dans l'environnement Unreal Engine 5 : Mise en œuvre technique et écosystème de développement

Unreal Engine 5 propose une plateforme qui prend en charge nativement l'architecture GOAP (Goal Oriented Action Planning) et l'intègre profondément avec une architecture puissante orientée données et le système de programmation visuelle Blueprint. L'approche de l'UE5 présente GOAP comme une solution "prête à l'emploi" et permet notamment aux concepteurs de prototyper et de tester rapidement les comportements de l'IA. Cette philosophie est le reflet de la philosophie "le design de jeu d'abord" d'Unreal Engine et facilite la concentration sur les mécaniques de jeu indépendamment des détails techniques de GOAP. Dans cette section, les détails de la mise en œuvre technique de GOAP dans l'environnement Unreal Engine 5, l'intégration de Blueprint et C++, sa configuration orientée données et l'écosystème existant seront examinés.

La méthode couramment utilisée pour mettre en œuvre GOAP dans Unreal Engine 5 repose sur des plugins tiers qui ne bénéficient pas du support officiel d'Epic Games mais qui sont largement utilisés. Le plus connu est le Goal Oriented Action Planning Plugin for Unreal Engine. Ce plugin permet de définir les composants de base du système GOAP (Objectifs, Actions, État du monde) en tant que structures de données dans Blueprint. Une fois que les développeurs ont ajouté le plugin à leurs projets, ils peuvent construire la logique GOAP en créant de nouvelles classes Blueprint dans l'Unreal Editor. Cette approche permet de démarrer et de configurer le système GOAP sans écrire de code. Cependant, la logique fondamentale du système GOAP est écrite en C++ et le plugin fournit une interface pour rendre cette logique fondamentale accessible aux développeurs Blueprint.

Déconstruction des besoins de l'utilisateur :

Qu'est-ce que l'architecture GOAP ?

  • Quelle est la logique fondamentale de GOAP ?

  • Quels sont ses composants de base (Objectif, Agent, État du monde, Action) et comment fonctionnent-ils ?

  • Comment la planification GOAP est-elle effectuée (par exemple, recherche en largeur étendue ou algorithme A*) ?

Mise en œuvre technique de GOAP dans Unity

  • Quelles sont les options dont dispose le développeur pour mettre en œuvre GOAP dans Unity (faire soi-même vs bibliothèques prêtes à l'emploi) ?

  • Quelles sont les bibliothèques GOAP existantes (Asset Store) et quelles sont leurs caractéristiques (par ex. Behavior Package de CrashKonijn) ?

  • Comment fonctionne l'intégration de GOAP avec l'architecture DOTS/ECS de Unity et est-ce une difficulté ?

  • Quelles sont les structures de codage C# et les approches architecturales typiques pour GOAP dans Unity ?

Mise en œuvre technique de GOAP dans Unreal Engine 5

  • Quelle est l'existence ou l'absence de support GOAP intégré dans Unreal Engine 5 ?

  • Quels sont les plugins les plus couramment utilisés pour mettre en œuvre GOAP dans Unreal Engine ?

  • Comment les implémentations GOAP dans Unreal Engine sont-elles intégrées avec Blueprint et C++ ?

  • Quelle est l'importance de la structure orientée données (Data Tables, USTRUCTs) pour GOAP dans Unreal Engine et comment est-elle utilisée ?

Impacts stratégiques sur le design de jeu (pour les deux plateformes)

  • Quel impact GOAP a-t-il sur le dynamisme et l'intuitivité des comportements des PNJ ?

  • Quel rôle GOAP joue-t-il dans l'augmentation de la vitesse d'itération et de la flexibilité des concepteurs dans le processus de design de jeu ?

  • Quel est le coût de performance des systèmes GOAP et ce coût est-il gérable ?

  • Comment GOAP peut-il être en relation avec d'autres techniques d'IA (Behavior Trees, FSM, Utility AI) ?

Analyse comparative et conclusions

  • Quelles sont les différences philosophiques et pratiques fondamentales dans l'approche de GOAP entre Unity et Unreal Engine ?

  • Quelle plateforme est la plus adaptée en fonction de certains types de projets ou des caractéristiques de l'équipe de développement ?

  • Que suggère le potentiel futur de l'architecture GOAP (par ex. les tendances de l'IA sur appareil) ?

Architecture GOAP : Un voyage entre le contrôle dans Unity et l'orientation données dans Unreal Engine 5

Architecture GOAP : Concepts Fondamentaux et Structure Logique

La Planification d'Actions Axée sur les Objectifs (GOAP) est un modèle de planification d'intelligence artificielle puissant qui permet à l'IA, au lieu de se contenter de suivre des règles prédéfinies, de déterminer sa propre stratégie en évaluant sa situation actuelle . Cette approche offre la possibilité de créer des caractères qui réagissent de manière plus intelligente, intuitive et dynamique face aux joueurs, en particulier dans des mondes de jeux complexes et dynamiques. Le GOAP se concentre sur la détermination de la "manière" dont un agent (PNJ) va agir, et non seulement sur le "pourquoi". Sa logique fondamentale repose sur un système qui calcule automatiquement les étapes nécessaires pour atteindre un objectif. Par exemple, si l'objectif d'un personnage de jeu est "manger", le GOAP crée un plan en analysant la séquence d'actions requises pour atteindre cet objectif ("être à la maison", "trouver de la nourriture", "cuisiner la nourriture") . Si aucune nourriture n'est trouvée au marché, le système doit connaître les résultats (effets) de chaque action ainsi que les prérequis nécessaires à leur mise en œuvre afin de trouver un chemin alternatif.

Pour comprendre le fonctionnement de l'architecture GOAP, il est nécessaire d'examiner en profondeur ses composants fondamentaux. Ces composants sont les atomes qui constituent l'âme d'un système GOAP. Ce sont : l'Objectif, l'Agent, l'État du Monde et l'Action. Chacun d'eux fait partie intégrante de la capacité de résolution de problèmes du GOAP.- 1 1108

L'Agent est l'entité en jeu qui utilise la logique GOAP et exécute les actions. Il peut s'agir de n'importe quoi, d'un personnage contrôlé par le joueur à une unité ennemie ou à un personnage de soutien interagissant avec des éléments de l'environnement. Le rôle de l'agent est d'attendre qu'un objectif lui soit attribué, puis d'évaluer si cet objectif peut être atteint .

L'État du Monde est une structure de données qui décrit l'état du monde du jeu à un moment précis. On peut généralement le concevoir comme un dictionnaire composé de paires clé/valeur . Par exemple, un état simple tel que {"hasWood": false, "isHungry": true, "health": 80} peut représenter l'état actuel d'un personnage dans une région boisée. Cet état est mis à jour en permanence ; lorsque le personnage collecte du bois, la valeur de hasWood passe à vrai. Lorsque le planificateur GOAP détecte une différence entre l'état actuel du monde et l'état requis pour atteindre l'objectif, il commence à rechercher les actions qui combleront cet écart.

Les Actions sont les mouvements par lesquels l'agent peut créer un changement dans l'état du monde. Chaque action possède deux propriétés principales : les Prérequis et les Effets. Les Prérequis définissent les états dans lesquels le monde doit actuellement se trouver pour qu'une action puisse être exécutée. Par exemple, le prérequis de l'action CuisinerNourriture pourrait être {"hasFood": true, "hasFire": true}. Les Effets indiquent quant à eux ce qui va changer dans l'état du monde une fois l'action menée à bien. L'effet de cette même action CuisinerNourriture pourrait être {"cookedFood": true, "hasFood": false}. Ces deux propriétés garantissent que les actions possèdent une intégrité logique et permettent au planificateur de ne sélectionner que des actions valides et significatives. Chaque action peut comporter un coût spécifique (généralement du temps ou de l'énergie), de sorte que le planificateur peut privilégier le chemin le moins coûteux ou celui qui donne un résultat dans les plus brefs délais.

Les Objectifs représentent l'état idéal que l'agent cherche à atteindre. Un objectif est défini de la même manière qu'un état du monde, mais il ne contient que les états qui importent. Par exemple, pour l'objectif "manger", l'objectif {"isHungry": false} peut être défini. Le planificateur ordonne les actions les plus appropriées pour passer de l'état actuel du monde ({... "isHungry": true, ...}) à cet objectif ({"isHungry": false}). Les objectifs peuvent souvent être complexes et nécessiter plusieurs actions. La force du GOAP réside dans sa capacité à chaîner les actions nécessaires pour atteindre un objectif unique afin de former un plan.

Au cœur de l'algorithme de planification GOAP se trouve un algorithme de recherche sur graphe. Typiquement, on utilise l'un des algorithmes de recherche en largeur d'abord (BFS) ou A* . Le processus commence ainsi : le planificateur travaille à rebours à partir de l'état du monde cible pour trouver les actions qui réalisent l'objectif. Ensuite, en examinant les prérequis de ces actions, il trouve les actions précédentes qui les satisfont. Ce processus se poursuit jusqu'à atteindre l'état initial

73 24 8285

(l'état actuel du monde de l'agent). En conséquence, un graphe d'actions est créé. La racine de ce graphe est l'action qui réalise l'état cible, et ses branches suivent les actions qui permettent cette action. Le chemin le plus court ou le moins cher est le meilleur plan menant à l'objectif. Ce plan est stocké par l'agent sous forme de liste pour exécuter les actions dans l'ordre. Au fur et à mesure que les actions sont accomplies, l'état du monde est mis à jour et le planificateur peut replanifier lorsqu'un nouvel objectif est défini ou que l'environnement change. Cette nature dynamique rend le GOAP beaucoup plus flexible qu'une Machine à États Finis (FSM) statique ou qu'un simple Arbre de Comportement (Behavior Tree - BT). Alors que les BT agissent généralement selon un arbre de décision prédéfini, le but du GOAP est de trouver le chemin le plus approprié à chaque fois . En surveillant continuellement l'environnement et les besoins de l'agent, le GOAP peut mettre à jour son plan lorsque l'objectif change ou qu'une action est bloquée (par exemple, lorsqu'une porte est verrouillée) et trouver un chemin alternatif. Cela crée un sentiment "surhumain" qui rend l'expérience du joueur plus concrète et cohérente. Cependant, le prix à payer pour cette flexibilité est le coût de calcul lié au processus de planification. Exécuter continuellement le GOAP à chaque image peut entraîner des problèmes de performance, en particulier dans les jeux comportant un grand nombre d'agents. Par conséquent, le GOAP est généralement déclenché lorsque l'objectif change, après un certain laps de temps ou une fois qu'une action est terminée. Cette stratégie permet de maximiser les avantages du GOAP tout en minimisant la perte de performance. Cette flexibilité structurelle du GOAP en fait un outil indispensable pour les genres de jeux nécessitant des simulations de stratégie, des RPG en monde ouvert et des interactions complexes entre PNJ .

GOAP dans l'Environnement Unity : Flexibilité, Écosystème et Approches Axées sur la Performance

Unity offre aux développeurs une flexibilité unique pour les applications GOAP (Planification d'Actions Axée sur le Objets), car il fournit à la fois un cadre de base pour développer une solution originale et possède un écosystème de paquets tiers extrêmement riche. Cette approche reflète le principe "il y en a pour tous les goûts" : certains développeurs cherchent à obtenir une personnalisation complète en gardant le contrôle total de tous les détails du GOAP, tandis que d'autres peuvent accélérer leur vitesse de développement grâce à des solutions prêtes à l'emploi et testées provenant de l'Asset Store. Cette section examine en profondeur les applications GOAP dans l'environnement Unity sous deux grandes catégories : les approches "fait maison" et celles basées sur des bibliothèques prêtes à l'emploi.

Application Originale : Construire le GOAP à partir de Zéro

3186 1866

Implémenter le GOAP à partir de zéro en C# est le moyen le plus précieux pour les développeurs qui souhaitent comprendre exactement comment fonctionne chaque partie de l'architecture. Cette approche nécessite de convertir les composants fondamentaux du GOAP (Agent, État du Monde, Action, Objectif) en objets. Les exemples dans les sources abordent ce processus étape par étape . Tout d'abord, la classe WorldState représente l'état du monde du jeu à l'aide de paires clé/valeur (généralement Dictionary<string, bool> ou Dictionary<string, float>). Ensuite, la classe Action définit les actions. Cette classe héberge des propriétés telles que les prérequis (preconditions), les effets (effects) et le coût (cost). Enfin, la classe Goal définit l'état cible que l'agent essaie d'atteindre.

La logique de planification se trouve généralement dans une classe Planner. Cette classe est appelée avec une fonction telle que Plan(Goal targetGoal). Cette fonction exécute un algorithme de recherche sur graphe (généralement une recherche en largeur d'abord ou A*) qui recherche des actions pour atteindre l'état cible . L'algorithme commence par une action qui satisfait l'état cible, passe à une autre action qui remplit les prérequis de cette dernière, et répète ce cycle jusqu'à ce qu'il comble l'écart entre l'état initial (l'état actuel du monde de l'agent) et l'état cible. Si un chemin est trouvé, la séquence de ces actions est transférée dans un objet Plan. Ce Plan peut être utilisé par l'agent pour exécuter les actions dans l'ordre. Une application originale permet d'avoir une maîtrise totale de l'architecture et de l'adapter à des besoins spécifiques (par exemple, une fonction de coût complexe ou une stratégie de recherche personnalisée). Cependant, cette flexibilité va de pair avec des coûts tels qu'un temps de développement accru et un effort supplémentaire nécessaire pour résoudre les bogues potentiels (erreurs dans l'algorithme de planification, problèmes de synchronisation d'état, etc.).

Bibliothèques et Paquets Prêts à l'Emploi : Accélérer la Vitesse de Développement

L'Asset Store d'Unity propose diverses solutions prêtes à l'emploi pour les applications GOAP. Ces paquets accélèrent considérablement le processus de développement en fournissant des éditeurs visuels et des API standardisées qui facilitent la structuration de la logique GOAP sous forme d'objets. L'un des paquets les plus populaires et les plus fréquemment mentionnés parmi ceux-ci est le Behavior Package développé par CrashKonijn . Ce paquet est également connu comme le paquet Behavior officiel d'Unity et prend en charge le GOAP via son module Goap . Le Behavior Package permet aux développeurs de configurer visuellement les actions, les objectifs et même les agents GOAP directement dans l'éditeur Unity. Ainsi, ils peuvent définir les prérequis et les effets des actions via un WorldState défini dans un ScriptableObject. Cette approche offre la possibilité d'expérimenter et d'ajuster rapidement les comportements des PNJ sans avoir à écrire ou à compiler de code. Selon les avis des utilisateurs, l'interface utilisateur, l'édition et l'intégration de l'éditeur de ce paquet sont d'une excellente qualité . Les versions actuelles du paquet sont compatibles avec les versions

753 82 14112 6843 113

Unity 2022.3 et supérieures, et comprennent des mises à jour de confort (quality-of-life) pour améliorer la durabilité . On trouve également sur l'Asset Store d'autres solutions GOAP dotées de fonctionnalités plus spécifiques ou différentes, telles que XGOAP , CAP'N - 3D Pathfinding using GOAP et Rabbit. Alors que XGOAP est commercialisé comme une bibliothèque GOAP allant au-delà des standards, CAP'N est une solution combinant le GOAP avec la recherche de chemin en 3D. Cette variété s'adresse à différents genres de jeux et besoins de développement. Cependant, l'un des inconvénients de l'utilisation de ces paquets est qu'il faut vérifier si le paquet lui-même et son développeur bénéficient d'un support actif. Par exemple, on observe que certains paquets contiennent des mises à jour critiques pour résoudre des problèmes de sérialisation dans les anciennes versions . De même, le fait que certains paquets soient optimisés en termes de performances est un facteur important ; par exemple, des paquets tels que Ultimate AI System ont effectué des mises à jour pour corriger des problèmes susceptibles de provoquer des allocations de mémoire inutiles dans les nœuds circulaires .

Intégration DOTS/ECS : Le Sommet de la Performance

L'architecture Data-Oriented Technology Stack (DOTS) et Entity Component System (ECS) d'Unity est conçue pour les jeux à grande échelle et à haute performance. Cependant, le modèle d'état du monde basé sur les dictionnaires clé/valeur des applications classiques du GOAP ne s'associe pas naturellement aux principes de manipulation de fragments de données de l'ECS (les blocs de données optimisés avec Burst) . Cela montre que l'intégration du GOAP dans des projets basés sur l'ECS crée des difficultés sérieuses. Conscient de cette difficulté, Unity a développé son propre cadre de type GOAP afin d'apporter une solution à ce problème : Utility Intelligence. Ce framework offre un système d'IA basé sur l'utilité à haute performance en utilisant la pile technologique orientée données (DOTS) . Utility Intelligence est basé sur la logique GOAP mais a été écrit avec des structures de données et des flux de travail compatibles avec l'ECS. Ceci est d'une importance vitale pour des scénarios tels que la planification simultanée de l'intelligence artificielle de milliers de PNJ en même temps. Cette situation révèle à quel point il est critique d'aborder le GOAP du point de vue des performances et à quel point la demande de restructuration du GOAP à des fins d'optimisation est élevée au sein de l'écosystème Unity, en particulier pour les projets utilisant DOTS. Le paquet Utility Intelligence (ECS) est compatible avec Unity Version Control version 6000.0 et supérieure, et accepte l'accord de licence standard de l'Asset Store d'Unity .

Évaluation Générale

Implémenter le GOAP dans Unity est un processus de prise de décision aux multiples facettes, qui dépend des besoins du projet, des compétences techniques et des attentes en matière de performances du développeur. L'approche "Do It Yourself" 44 61 134745 111 62 24 1152 4952

offre une flexibilité et un contrôle maximaux, tout en augmentant le temps de développement et la charge de maintenance. Les bibliothèques prêtes à l'emploi, en particulier les solutions solides et bien documentées telles que le Behavior Package de CrashKonijn, augmentent considérablement la vitesse de développement et fournissent une infrastructure standardisée. Cependant, la durabilité et la compatibilité de ces paquets doivent toujours être prises en compte. Dans les cas où les projets ciblent l'architecture DOTS/ECS, il sera un choix plus judicieux en termes de performances de se tourner vers des cadres alternatifs tels que Utility Intelligence, conçus conformément aux principes de l'ECS, plutôt que d'utiliser directement le GOAP. En conclusion, alors qu'Unity offre de multiples façons correctes d'utiliser le GOAP, chaque chemin possède ses propres avantages et inconvénients.

GOAP dans Unreal Engine 5 : De l'orientation données à l'intégration hybride

Unreal Engine adopte une approche plus « clé en main » et orientée données que Unity pour la mise en œuvre de systèmes GOAP (Goal-Oriented Action Planning), car il ne dispose pas d'un support natif, mais offre une intégration approfondie aux développeurs grâce à une structure axée sur les données et au système de programmation visuelle Blueprint. La philosophie d'UE met l'accent sur la capacité des concepteurs et des développeurs à prototyper et configurer des mécanismes de jeu sans écrire de code ou avec un minimum de code, et le GOAP est un outil central de cette philosophie. Cette section examine les implémentations de GOAP dans l'environnement d'Unreal Engine 5 selon trois axes principaux : une approche basée sur les plugins, une configuration orientée données et une utilisation hybride C++/Blueprint.

Une approche basée sur les plugins : Intégrer GOAP dans le projet

Unreal Engine ne propose pas GOAP comme système d'intelligence artificielle principal ; il fournit à la place des plugins puissants et extensibles permettant aux développeurs d'intégrer facilement la logique GOAP. Des ressources telles que les forums de développeurs d'Epic Games et l'Unreal Marketplace contiennent de nombreux débats et articles sur les plugins GOAP . Ces plugins permettent de définir les composants de base de GOAP (buts, actions, état du monde) en tant que structures de données dans Blueprint. Lorsqu'un développeur ajoute le plugin GOAP à un projet, il peut désormais construire visuellement la logique GOAP en créant des classes Blueprint et en utilisant les propriétés de ces classes. Par exemple, il est possible de créer une classe Blueprint CollectWoodAction et de définir son fonctionnement à l'aide de propriétés caractérisées par des structures appelées Preconditions (préconditions) et Effects (effets). Cela simplifie le processus d'initialisation et de configuration du système GOAP sans avoir à écrire de code 40105

processus. Ces plugins transforment GOAP en une partie accessible et gérable de la structure du projet.

Configuration orientée données : Le pouvoir des concepteurs

L'un des aspects les plus puissants des implémentations GOAP dans Unreal Engine est la manière dont la configuration orientée données est profondément intégrée en tant que composante de la plate-forme. Les ressources indiquent qu'au lieu de coder en dur les actions et les buts GOAP, il est recommandé d'utiliser des structures de données telles que des tables de données ou des objets de transfert de données personnalisés comme meilleure pratique . Cela permet aux concepteurs d'ajuster les comportements des PNJ à partir d'une interface en jeu (par exemple, un fichier .ini ou une fenêtre de configuration directement en jeu). Des conditions complexes, comme le fait qu'une action nécessite par exemple « un PNJ portant une arme pour être active au combat », peuvent être définies par le concepteur dans un fichier de données sans modifier le code. Cette approche offre les avantages des packages similaires dans Unity de manière plus approfondie et en tant que partie intégrante de l'architecture fondamentale de la plate-forme. En expérimentant et en modifiant rapidement les comportements de l'IA sans codage, les concepteurs rendent le processus de développement itératif et multicouche. Les plugins GOAP garantissent que ce processus est plus automatisé et offre une intégration complète avec Blueprint .

Utilisation hybride de C++ et Blueprint : Synergie entre puissance et flexibilité

Le support GOAP d'Unreal Engine fonctionne de manière optimale grâce à une excellente transition entre C++ et Blueprint. Alors que les concepteurs peuvent rapidement prototyper les comportements GOAP avec Blueprint, les programmeurs peuvent coder des actions complexes ou une logique de planification personnalisée en C++ et les appeler depuis Blueprint . Cette approche hybride combine à la fois vitesse et puissance. Par exemple, une action simple de patrouille (« patrol ») peut être réalisée visuellement avec Blueprint, tandis qu'une action complexe de fabrication d'armes (« craft weapon ») peut inclure un algorithme de fabrication optimisé en C++. Cette action peut être exécutée via un appel de fonction depuis Blueprint. De même, le planificateur GOAP lui-même peut être écrit en C++ et fournir une fonction exécutable pouvant être appelée depuis Blueprint. Cela permet à GOAP de tirer parti de la puissance du C++ là où les performances sont critiques, et de la vitesse ainsi que de l'efficacité de Blueprint dans les parties moins critiques. Cette flexibilité rend GOAP adapté à une utilisation aussi bien dans de petits projets indépendants que dans de grands projets de jeux AAA professionnels.

Systèmes alternatifs et avancés : Comprendre la place de GOAP

Dans Unreal Engine, GOAP n'est pas une solution d'IA unique et absolue. Epic Games propose de puissants systèmes en alternative ou en complément de GOAP. Parmi ceux-ci, 106 40 3590

les plus importants sont les Behavior Trees (BT) et l'Environment Query System (EQS) . En fait, l'utilisation la plus puissante de GOAP se manifeste lorsqu'il est combiné avec ces systèmes. GOAP fonctionne généralement dans un sous-nœud d'un BT en tant que « planificateur » qui trouve le meilleur moyen d'atteindre un but spécifique . Alors que la racine d'un BT détermine l'objectif global du PNJ (« Survive » - Survivre), le GOAP exécuté dans un sous-nœud du BT peut trouver les actions les plus stratégiques (trouver de l'eau, cuisiner, fuir l'attaque ennemie) pour atteindre cet objectif. Cela montre que GOAP n'est pas un système « dominant », mais un « outil » créant une synergie avec les autres systèmes. GOAP étend la capacité de prise de décision du BT et rend les comportements des PNJ plus dynamiques et intuitifs. En outre, des cadres avancés de nouvelle génération d'UE tels que Mass AI et Reflection Tree (RTree) sont également disponibles. RTree est un système de raisonnement par l'IA sur appareil développé pour Unreal Engine 5 et basé sur la logique GOAP. Cela indique que GOAP peut jouer un rôle important non seulement dans les jeux sur PC/console, mais aussi sur les plateformes mobiles et VR/AR en constante évolution.

Évaluation générale

Unreal Engine 5 offre aux développeurs une plate-forme polyvalente et puissante pour les implémentations GOAP. Alors qu'une approche basée sur les plugins permet d'intégrer facilement GOAP dans le projet, l'intégration de Blueprint et la configuration orientée données rendent la gestion et l'adaptation de la logique GOAP accessibles aux concepteurs. La parfaite harmonie entre C++ et Blueprint porte le potentiel d'étendre les performances et les capacités de GOAP de manière illimitée. Le fait que GOAP puisse être utilisé comme partie intégrante d'une architecture d'intelligence artificielle plus vaste, telle que les Behavior Trees, démontre sa flexibilité et son adéquation avec les pratiques modernes de développement de jeux. En fin de compte, Unreal Engine offre l'un des moyens les plus efficaces et orientés données d'utiliser GOAP, tout en accordant aux développeurs une grande liberté pour employer ce puissant système de planification afin de donner vie aux PNJ de leurs jeux.

Impacts stratégiques et sur la conception : Du dynamisme à la performance

L'architecture GOAP (Goal-Oriented Action Planning) est bien plus qu'une simple technique d'intelligence artificielle : c'est un outil stratégique qui influence profondément le processus de conception du jeu et l'expérience du joueur. Cette approche redéfinit le dynamisme des comportements des PNJ, la flexibilité du processus de conception, la gestion des performances et sa relation avec les autres systèmes d'IA. 41101 31 3398

Cette section examine les avantages stratégiques et les défis potentiels offerts par GOAP aux développeurs de jeux, d'un point de vue général applicable aux deux plateformes.

Dynamisme et intuitivité des comportements des PNJ

L'impact stratégique le plus évident et le plus précieux de GOAP est qu'il accroît le dynamisme et l'intuitivité des comportements des PNJ. Dans les systèmes d'IA traditionnels tels que les machines à états finis (FSM) ou les systèmes basés sur des règles simples, les personnages doivent généralement suivre un ensemble d'actions prédéfinies. Ces systèmes peuvent manquer de flexibilité face aux petits changements dans le monde du jeu et rendre les comportements prévisibles pour le joueur. GOAP fait exactement le contraire. Un PNJ basé sur GOAP détermine sa propre stratégie en fonction des changements de son environnement et de ses propres besoins . Par exemple, lorsqu'un PNJ reçoit l'objectif d'« être en bonne santé », le système GOAP trouvera le moyen le plus approprié d'atteindre cet objectif. S'il y a un stock de santé à proximité du PNJ, il peut le prendre. Si le stock est vide, il peut élaborer une stratégie alternative (par exemple, cueillir des plantes ou rentrer chez lui). Cela amène le joueur à formuler de nouvelles hypothèses sur le monde après chaque interaction, car le comportement des PNJ n'est pas prévisible. Ce dynamisme crée une expérience où le joueur a l'impression d'avoir affaire à des personnages plus intelligents, motivés et vivants . GOAP transforme un PNJ, qui n'était qu'un simple compléteur de quêtes passif, en une entité active qui fixe ses propres objectifs et interagit avec l'environnement pour les atteindre. Cela contribue à rendre le monde du jeu plus vivant et crédible.

Flexibilité du processus de conception et vitesse d'itération

GOAP, en particulier lorsqu'il est configuré de manière orientée données, offre une flexibilité révolutionnaire dans le processus de conception de jeux. Définir des actions, des buts, ainsi que leurs préconditions et effets à l'aide de structures telles qu'une table de données ou ScriptableObject, permet d'expérimenter, d'éditer et d'affiner les comportements des PNJ sans nécessiter de modification du code . Cela permet aux concepteurs et aux experts en expérimentation d'itérer rapidement sur les comportements de l'IA en fonction des retours des joueurs. Les concepteurs peuvent exprimer directement dans les données de l'IA des demandes telles que « Cet ennemi doit se trouver plus souvent au bord de l'eau » ou « Il doit y avoir plus d'avantages lors des combats avec les armes collectées ». Cela rend le processus de développement plus collaboratif et multicouche. Le support Blueprint d'Unreal Engine accélère encore ce processus, car il permet aux concepteurs de construire visuellement la logique de l'IA sans écrire de code . Dans Unity, des packages tels que CrashKonijn offrent une approche orientée données similaire pour assurer cette flexibilité. GOAP fait de l'intelligence artificielle non seulement un outil pour les développeurs, mais aussi une partie intégrante du processus de conception du jeu.

1 1866 106 105

Coût et gestion des performances

La plus grande préoccupation stratégique de GOAP est son coût de calcul. Le processus de planification peut solliciter intensément le CPU, en particulier lorsque le nombre d'actions est élevé et que l'état du monde est complexe. Cela peut créer un goulot d'étranglement critique en matière de performances, en particulier dans les jeux à grande échelle où des centaines de PNJ exécutent GOAP simultanément. Par conséquent, gérer efficacement le coût de performance de GOAP est d'une importance vitale pour une mise en œuvre réussie. Au lieu d'exécuter continuellement GOAP à chaque image, ne le déclencher que lors d'événements spécifiques (par exemple, lorsque l'objectif du PNJ change, qu'une action est achevée ou à un intervalle de temps régulier) constitue la stratégie d'optimisation fondamentale. Des bibliothèques GOAP rapides et efficaces peuvent réduire ce coût en utilisant des algorithmes de recherche plus performants et des techniques de gestion des états . L'architecture DOTS/ECS de Unity offre un moyen plus puissant de résoudre ce problème de performances en proposant des cadres tels que Utility Intelligence, qui associe GOAP à des structures de données compatibles ECS et à l'optimisation Burst . Dans Unreal Engine, les actions basées sur C++ et les outils de profilage de l'utilisation du CPU d'UE contribuent à mieux gérer la consommation de ressources de GOAP. En fin de compte, GOAP est un compromis où un équilibre minutieux doit être établi entre le coût des performances et le comportement dynamique.

Facilité d'intégration et relation avec les autres systèmes

GOAP est fréquemment utilisé en association avec d'autres systèmes d'intelligence artificielle, et cette intégration constitue la base des architectures d'IA les plus puissantes. GOAP est souvent utilisé conjointement avec les Behavior Trees (BT). Alors que le BT fonctionne comme un mécanisme de décision de haut niveau déterminant l'objectif global, GOAP peut agir comme un planificateur de bas niveau au sein d'un nœud du BT pour trouver le meilleur moyen d'atteindre un but spécifique . Par exemple, tandis que la racine d'un BT cherche à répondre à la question « Que dois-je faire ? », GOAP, en tant que sous-nœud, peut planifier l'itinéraire le plus sûr et le plus rapide pour atteindre l'objectif « Trouver de l'eau ». Cette approche hybride combine la structure du BT et la flexibilité de GOAP. GOAP peut également être combiné avec Utility AI. Alors que Utility AI choisit l'action la plus « utile » parmi les actions planifiées disponibles, GOAP fournit une feuille de route sur la manière dont ces actions doivent être réalisées . Si GOAP est un moteur de planification, Utility AI peut être considéré comme un système de prise de décision qui évalue le résultat (les actions) de ce moteur de planification et sélectionne le meilleur. La facilité d'intégration de GOAP dépend de la plate-forme et des outils utilisés. Unreal Engine facilite grandement la création de tels systèmes hybrides grâce à son support Blueprint, tandis que dans Unity, cela peut nécessiter l'écriture d'un code plus personnalisé et un effort accru pour assurer la compatibilité des packages entre eux.

6 11 31 96

En conclusion, GOAP offre une puissante opportunité stratégique pour les développeurs de jeux. Il peut être utilisé pour dynamiser le comportement des PNJ, apporter de la flexibilité au processus de conception et offrir aux joueurs des expériences plus profondes et mémorables. Cependant, l'obtention de ces avantages nécessite une gestion consciente du coût des performances, une intégration synergique avec d'autres systèmes d'IA et le choix d'une stratégie d'implémentation adaptée aux besoins du projet.

Synthèse comparative : Philosophie, orientation données et systèmes alternatifs

Bien que l'architecture GOAP (Goal-Oriented Action Planning) ait le potentiel de créer des comportements d'intelligence artificielle puissants à la fois dans Unity et Unreal Engine 5, elle est combinée sur chaque plateforme avec des philosophies, des approches de développement et des dynamiques d'écosystème différentes. Cette synthèse comparative analyse ces différences afin de révéler comment GOAP est mis en œuvre sur les deux plateformes et les impacts stratégiques de cette mise en œuvre sur la conception des jeux. Les principales différences sont examinées sous des rubriques clés telles que la philosophie d'intégration, l'orientation données et les relations avec les systèmes alternatifs.

Philosophie d'intégration et boîtes à outils de développement

La différence fondamentale entre Unity et Unreal Engine réside dans la philosophie d'intégration de GOAP dans la plateforme. Unity propose GOAP en tant que « boîte à outils ». La plateforme fournit les éléments de base nécessaires à la mise en œuvre de la logique fondamentale de GOAP (classes, structures de données, etc.), mais ne promeut pas ce système comme la solution d'intelligence artificielle principale. À la place, elle laisse les développeurs libres de créer une solution sur mesure ou de choisir d'utiliser des packages prêts à l'emploi issus d'un écosystème riche comme l'Unity Asset Store. Cette approche offre à Unity une flexibilité et un contrôle considérables. Les développeurs qui souhaitent davantage de personnalisation et un contrôle total peuvent entièrement réconcevoir GOAP selon leurs propres besoins. Cependant, cette flexibilité s'accompagne de coûts tels qu'un temps de développement prolongé et une augmentation des efforts nécessaires pour résoudre les bugs potentiels. Les bibliothèques prêtes à l'emploi, en particulier les solutions robustes comme le Behavior Package de CrashKonijn, augmentent considérablement la vitesse de développement, mais la durabilité et la compatibilité de ces packages relèvent toujours de la responsabilité du développeur.

En revanche, Unreal Engine traite GOAP comme une partie centrale de la plateforme. Bien que GOAP ne soit pas proposé comme l'un des systèmes d'intelligence artificielle intégrés d'Unreal Engine,

53 662

il offre une expérience « prête à l'emploi » et axée sur les données grâce à un plugin puissant et au support de la programmation visuelle Blueprint. Les plugins GOAP permettent de définir les composants de base de GOAP sous forme de structures de données dans Blueprint. Cela rend GOAP accessible aux concepteurs ayant moins d'expertise technique et accélère la vitesse d'itération. La philosophie « orientée concepteur » d'Unreal Engine place GOAP dans une interface basée sur Blueprint qui permet de le configurer sans code ou avec un code minimal. Cela fait de GOAP non seulement un outil de développement, mais aussi une partie intégrante du processus de conception du jeu.

Fonctionnalité

Unity

Unreal Engine 5

Approche principale

Généralement « Do It Yourself » (fournit une structure de base) ou un écosystème basé sur de nombreux packages tiers.

« Plug and Play » (généralement un seul plugin bien intégré).

Outils de développement

Visual Studio / Rider (C#), packages de l'Asset Store. L'interface utilisateur et l'intégration varient selon le package.

Blueprint Visual Scripting (avantage clé), C++ (développement professionnel).

Orientation Données

Possible (tables de données, scriptable objects), mais varie selon le package.

Hautement pris en charge. Les objectifs et les actions peuvent être configurés directement avec des tables de données/USTRUCTs.

Intégration ECS/DOTS

Présente des difficultés. Des frameworks GOAP ECS optimisés sont disponibles (Utility Intelligence).

Non pris en charge directement. Cependant, GOAP fonctionne bien dans le cadre de l'architecture générale d'UE.

Le rôle de l'orientation données et son impact sur le processus de conception

Sur les deux plateformes, GOAP donne les meilleurs résultats avec une configuration pilotée par les données. Déplacer les préconditions et les effets des actions et des objectifs hors du code augmente la vitesse d'itération et la flexibilité de conception. Cependant, le rôle et la mise en œuvre de cette orientation données diffèrent selon les plateformes. Dans Unity, le GOAP orienté données est généralement possible grâce aux fonctionnalités offertes par un package. Par exemple, le package de CrashKonijn permet de définir des actions sous forme de ScriptableObjects et d'y faire référence par un agent. Le développeur peut configurer les comportements de l'intelligence artificielle en créant ces structures de données. Cependant, cela dépend de la prise en charge de cette fonctionnalité par le package.

Unreal Engine, quant à lui, propose l'orientation données dans le cadre de l'architecture fondamentale de la plateforme. Les actions et les objectifs GOAP peuvent être configurés directement à l'aide de structures de données compatibles Blueprint telles que UBlueprintAssignable ou UDataAsset. Les concepteurs peuvent éditer ces structures de données dans un éditeur de contenu en jeu. Cela évite d'avoir à considérer GOAP comme un simple « add-on » comme dans Unity, et permet de le voir comme une extension naturelle de la plateforme dans Unreal Engine. Cette différence influence considérablement la vitesse d'itération des concepteurs et l'intégration du système GOAP dans le processus de conception. Dans Unreal Engine, aucune compilation de code n'est nécessaire pour modifier le comportement d'une intelligence artificielle ; il suffit de modifier un paramètre dans une interface en jeu. Cela fait une différence majeure sur la valeur stratégique de GOAP.

40105 112 106

Systèmes alternatifs et approches hybrides

GOAP n'est pas une solution absolue qui oblige à utiliser un système d'intelligence artificielle seul. Sur les deux plateformes, les applications les plus puissantes de GOAP sont des approches hybrides qui le combinent avec d'autres systèmes d'intelligence artificielle. Dans Unreal Engine, c'est le cas principal. Epic Games propose des systèmes puissants en alternative ou en complément de GOAP. Ceux-ci sont fréquemment utilisés conjointement avec GOAP. GOAP fonctionne généralement dans un sous-nœud d'un BT en tant que « planificateur » qui trouve le meilleur chemin pour atteindre un objectif spécifique. Cela montre que GOAP n'est pas un système « dominant », mais un « outil » qui crée une synergie avec d'autres systèmes. GOAP élargit la capacité de prise de décision du BT et rend le comportement des PNJ plus dynamique et intuitif. Des approches hybrides similaires sont également possibles dans Unity. Par exemple, pendant qu'un BT gère l'état général du PNJ (sommeil, combat, exploration), dans l'état « exploration », GOAP peut trouver le meilleur moyen d'atteindre l'objectif d'exploration. Dans Unity, ce type d'intégration peut nécessiter la configuration manuelle des points de liaison entre le BT et les bibliothèques GOAP. Dans Unity, GOAP peut également être combiné avec Utility AI. Alors que Utility AI choisit l'action la plus « utile » parmi les actions planifiées disponibles, GOAP fournit une feuille de route sur la manière de réaliser ces actions. Cela montre que GOAP n'est pas seulement un système indépendant, mais peut également être utilisé comme faisant partie d'une architecture d'intelligence artificielle plus vaste telle que Behavior Trees. En conclusion, Unity et Unreal Engine combinent GOAP avec des philosophies différentes et des ensembles d'outils différents. Unity est une plateforme axée sur le contrôle et la personnalisation, et propose GOAP comme une boîte à outils flexible que le développeur peut garder sous son propre contrôle. Unreal Engine, en revanche, est une plateforme qui maximise la vitesse d'itération des concepteurs grâce à l'orientation données et à Blueprint, en présentant GOAP comme une partie naturelle de la plateforme. Le choix dépendra des exigences du projet, des compétences techniques de l'équipe de développement et de la complexité du comportement d'intelligence artificielle requis par le jeu.

Conclusion et évaluation pratique : quelle plateforme et quelle approche choisir ?

L'architecture GOAP (Goal-Oriented Action Planning) est un outil stratégique puissant pour les développeurs de jeux afin d'animer les comportements des PNJ, de rendre le monde du jeu dynamique et d'offrir aux joueurs des expériences plus intelligentes et intuitives. Ce rapport a examiné les détails de mise en œuvre technique et les impacts stratégiques sur la conception de jeux de GOAP 41101 31 96 à la fois dans les environnements Unity et Unreal Engine 5 de manière séparée et comparative. L'évaluation finale vise à aider les développeurs à choisir la plateforme et l'approche les plus appropriées en fonction des besoins de leur projet, des compétences de leur équipe et de l'expérience de jeu visée.

Implications stratégiques du choix de la plateforme

Unity et Unreal Engine adoptent des approches philosophiques différentes en matière de mise en œuvre de GOAP. Unity propose GOAP en tant que « boîte à outils ». Cela donne aux développeurs la flexibilité de garder tous les aspects de GOAP sous leur propre contrôle et d'obtenir une personnalisation complète. Cette approche est particulièrement attrayante pour les développeurs qui visent des performances maximales en utilisant la pile technologique axée sur les données (DOTS) ou qui souhaitent modifier profondément la logique GOAP en fonction de leurs propres exigences spécifiques. Cependant, cette flexibilité entraîne l'écriture d'un code plus original, le risque de résoudre des problèmes d'intégration potentiels et des temps de développement plus longs. Bien que les bibliothèques prêtes à l'emploi accélèrent ce processus, des problèmes de durabilité et de compatibilité peuvent survenir. En revanche, Unreal Engine traite GOAP comme une partie centrale de la plateforme. GOAP offre une expérience « prête à l'emploi » et axée sur les données grâce à un plugin puissant et à un système de programmation visuelle Blueprint. Cette approche met en avant la capacité des concepteurs et des développeurs à prototyper et configurer rapidement les comportements de l'intelligence artificielle sans code ou avec un code minimal. La philosophie « orientée concepteur » d'Unreal Engine fait de GOAP non seulement un outil de développement, mais aussi une partie intégrante du processus de conception du jeu. Cela améliore considérablement la vitesse d'itération, la collaboration et l'intégration du système GOAP dans le processus de conception. GOAP se positionne dans Unreal Engine comme une extension naturelle de la plateforme, un outil puissant capable de fonctionner en synergie avec d'autres systèmes intégrés (Behavior Trees, EQS).

Évaluation pratique et recommandations

En fonction du type de projet et du public cible, les évaluations suivantes peuvent être faites :

  • Choix selon le type de jeu :

    • Simulations de stratégie complexes, RPG en monde ouvert et interactions dynamiques avec les PNJ : Ces types de jeux mettent en valeur le plus grand potentiel de GOAP. Ici, les PNJ sont censés déterminer leurs propres objectifs et stratégies en fonction du monde qui les entoure. Dans ce cas, Unreal Engine 5 peut offrir un processus de développement plus rapide et plus flexible grâce à son approche orientée données basée sur Blueprint. Permettre aux concepteurs d'expérimenter les comportements de l'intelligence artificielle sans codage augmente la vitesse d'itération.

    • Prototypes rapides, jeux mobiles ou projets haute performance (DOTS) : Si le projet utilise l'architecture DOTS ou vise les performances les plus élevées au coût le plus bas, Unity peut être une option plus attrayante. Cependant, dans ce cas, il faut envisager de développer des frameworks GOAP compatibles ECS tels que Utility Intelligence (ECS) ou une solution GOAP personnalisée compatible DOTS. Plutôt que d'utiliser GOAP directement, le concevoir de manière intégrée à l'architecture DOTS est plus avantageux en termes de performances.

  • Choix selon les compétences de l'équipe :

    • Fortes compétences en code, orientation concepteur privilégiée : Si votre équipe compte principalement des développeurs spécialisés dans le codage C# et C++ et que vous souhaitez contrôler en profondeur la logique GOAP, Unity vous offre plus de contrôle et de flexibilité.

    • Concepteurs au centre, codage à minimiser : Si vous accordez de l'importance à ce que les concepteurs de votre équipe configurent directement les comportements de l'intelligence artificielle à partir d'une interface en jeu, Unreal Engine 5 est définitivement une option supérieure. Le système Blueprint facilite ce flux de travail et accélère le processus de développement.

  • La puissance de l'approche hybride : Plutôt que de considérer GOAP comme un système autonome, l'approche la plus stratégique est de le considérer comme faisant partie d'une architecture d'intelligence artificielle plus vaste. Sur les deux plateformes, utiliser GOAP pour des tâches de résolution de problèmes complexes, à long terme et rarement déclenchées, tout en permettant à des systèmes plus rapides comme les Behavior Trees ou de simples machines à états finis de gérer les actions quotidiennes, sera une solution optimale. Alors que GOAP répond à la question « que faire ? », le BT ou la FSM répond à la question « comment le faire ? ». Faire cette distinction est essentiel pour optimiser à la fois les performances et la richesse comportementale.

Un regard vers l'avenir

L'avenir de GOAP sera façonné par l'évolution des rôles que l'intelligence artificielle doit jouer dans les jeux. Les investissements d'Unreal Engine dans les systèmes de raisonnement d'IA sur l'appareil, tels que Reflection Tree (RTree), montrent que la logique GOAP peut jouer un rôle majeur non seulement pour les grandes consoles de jeux et les PC, mais aussi sur les plateformes mobiles et VR/AR. Ces tendances suggèrent que les principes de planification de base de GOAP pourraient constituer la base de systèmes d'intelligence artificielle futurs plus avancés et plus distribués.

En conclusion, l'architecture GOAP est un outil indispensable dans le répertoire du développeur de jeux moderne. Unity et Unreal Engine offrent des moyens différents mais tout aussi puissants d'utiliser cet outil. Le choix sera le reflet de la vision de votre projet, des compétences de votre équipe et de l'expérience visée.

*Information : Les visuels ont été générés par Google Gemini.

GOAPGameAIUnityUE5BehaviorTreeAIArchitecture
Outil de recherche approfondie
Qwen (Alibaba Cloud)
Qwen (Alibaba Cloud)
Outil de traduction
Google Gemini
Google Gemini

Partager