Introducció
En aquest tema, explorarem com crear intel·ligència artificial (IA) en Unreal Engine utilitzant arbres de comportament. Els arbres de comportament són una eina poderosa per definir el comportament dels personatges no jugadors (NPCs) de manera modular i escalable.
Objectius
- Entendre què són els arbres de comportament.
- Aprendre a crear i configurar un arbre de comportament bàsic.
- Implementar tasques, serveis i decoradors per definir el comportament de la IA.
- Integrar l'arbre de comportament amb un personatge en el joc.
Què són els Arbres de Comportament?
Els arbres de comportament són una estructura de dades que permet definir el comportament d'un agent de manera jeràrquica. Cada node de l'arbre representa una acció o una decisió que l'agent pot prendre.
Components Principals
- Tasques (Tasks): Accions que l'agent pot realitzar.
- Serveis (Services): Funcions que s'executen periòdicament per actualitzar informació.
- Decoradors (Decorators): Condicions que determinen si un node es pot executar.
Creant un Arbre de Comportament Bàsic
Pas 1: Crear un Arbre de Comportament
-
Crear un nou Arbre de Comportament:
- A l'editor de contingut, feu clic amb el botó dret i seleccioneu
Blueprint Class
. - Trieu
Behavior Tree
com a tipus de classe. - Doneu-li un nom, per exemple,
BT_NPCBehavior
.
- A l'editor de contingut, feu clic amb el botó dret i seleccioneu
-
Obrir l'Arbre de Comportament:
- Feu doble clic sobre el nou arbre de comportament per obrir l'editor d'arbres de comportament.
Pas 2: Afegir un Selector i una Tasca
-
Afegir un Selector:
- Arrossegueu un node
Selector
des del panell de nodes i col·loqueu-lo com a node arrel.
- Arrossegueu un node
-
Afegir una Tasca:
- Arrossegueu un node
Task
i connecteu-lo alSelector
. - Seleccioneu la tasca i, a la finestra de detalls, trieu una tasca predefinida o creeu-ne una de nova.
- Arrossegueu un node
Exemple de Codi: Tasca Personalitzada
// MyTask.cpp #include "MyTask.h" #include "AIController.h" #include "GameFramework/Actor.h" UMyTask::UMyTask() { NodeName = "Move To Target"; } EBTNodeResult::Type UMyTask::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) { AAIController* AICon = OwnerComp.GetAIOwner(); if (AICon) { AActor* TargetActor = Cast<AActor>(OwnerComp.GetBlackboardComponent()->GetValueAsObject("TargetActor")); if (TargetActor) { AICon->MoveToActor(TargetActor); return EBTNodeResult::Succeeded; } } return EBTNodeResult::Failed; }
Pas 3: Configurar el Blackboard
-
Crear un Blackboard:
- A l'editor de contingut, feu clic amb el botó dret i seleccioneu
Blueprint Class
. - Trieu
Blackboard
com a tipus de classe. - Doneu-li un nom, per exemple,
BB_NPCBlackboard
.
- A l'editor de contingut, feu clic amb el botó dret i seleccioneu
-
Afegir Clau de Blackboard:
- Obriu el
Blackboard
i afegiu una nova clau de tipusObject
anomenadaTargetActor
.
- Obriu el
Pas 4: Integrar l'Arbre de Comportament amb el Personatge
- Assignar l'Arbre de Comportament i el Blackboard:
- A l'editor de personatges, seleccioneu el component
AIController
. - A la finestra de detalls, assignar l'arbre de comportament i el blackboard creats anteriorment.
- A l'editor de personatges, seleccioneu el component
Exercici Pràctic
Objectiu
Crear un NPC que es mogui cap a un objectiu especificat.
Passos
- Crear un nou Arbre de Comportament i Blackboard.
- Afegir un Selector i una Tasca per moure's cap a l'objectiu.
- Configurar el Blackboard amb una clau
TargetActor
. - Assignar l'Arbre de Comportament i el Blackboard al NPC.
Solució
// MyTask.cpp #include "MyTask.h" #include "AIController.h" #include "GameFramework/Actor.h" UMyTask::UMyTask() { NodeName = "Move To Target"; } EBTNodeResult::Type UMyTask::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) { AAIController* AICon = OwnerComp.GetAIOwner(); if (AICon) { AActor* TargetActor = Cast<AActor>(OwnerComp.GetBlackboardComponent()->GetValueAsObject("TargetActor")); if (TargetActor) { AICon->MoveToActor(TargetActor); return EBTNodeResult::Succeeded; } } return EBTNodeResult::Failed; }
Errors Comuns i Consells
-
Error: L'NPC no es mou:
- Assegureu-vos que el
TargetActor
està configurat correctament alBlackboard
. - Verifiqueu que l'AIController està assignat correctament al personatge.
- Assegureu-vos que el
-
Consell:
- Utilitzeu serveis per actualitzar periòdicament la informació del
Blackboard
. - Utilitzeu decoradors per controlar la lògica de decisió de manera més eficient.
- Utilitzeu serveis per actualitzar periòdicament la informació del
Conclusió
En aquesta secció, hem après a crear i configurar un arbre de comportament bàsic per a la IA en Unreal Engine. Hem vist com utilitzar tasques, serveis i decoradors per definir el comportament dels NPCs i com integrar l'arbre de comportament amb un personatge en el joc. Amb aquests coneixements, podeu començar a crear comportaments més complexos i realistes per als vostres personatges no jugadors.
Curs d'Unreal Engine
Mòdul 1: Introducció a Unreal Engine
- Què és Unreal Engine?
- Instal·lant Unreal Engine
- Navegant per la Interfície
- Creant el teu Primer Projecte
Mòdul 2: Conceptes Bàsics
Mòdul 3: Blueprints Intermedis
- Variables i Tipus de Dades
- Funcions i Esdeveniments
- Comunicació entre Blueprints
- Creant Objectes Interactius
Mòdul 4: Blueprints Avançats
Mòdul 5: Programació en C++ a Unreal Engine
- Configurant el teu Entorn de Desenvolupament
- Sintaxi Bàsica de C++
- Creant Classes en C++
- Integrant C++ amb Blueprints
Mòdul 6: Programació Avançada en C++
Mòdul 7: Temes Avançats
- Física i Col·lisió
- Renderització i Postprocessament
- Generació de Contingut Procedural
- Desenvolupament de Realitat Virtual