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

  1. Tasques (Tasks): Accions que l'agent pot realitzar.
  2. Serveis (Services): Funcions que s'executen periòdicament per actualitzar informació.
  3. 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

  1. 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.
  2. 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

  1. Afegir un Selector:

    • Arrossegueu un node Selector des del panell de nodes i col·loqueu-lo com a node arrel.
  2. Afegir una Tasca:

    • Arrossegueu un node Task i connecteu-lo al Selector.
    • Seleccioneu la tasca i, a la finestra de detalls, trieu una tasca predefinida o creeu-ne una de nova.

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

  1. 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.
  2. Afegir Clau de Blackboard:

    • Obriu el Blackboard i afegiu una nova clau de tipus Object anomenada TargetActor.

Pas 4: Integrar l'Arbre de Comportament amb el Personatge

  1. 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.

Exercici Pràctic

Objectiu

Crear un NPC que es mogui cap a un objectiu especificat.

Passos

  1. Crear un nou Arbre de Comportament i Blackboard.
  2. Afegir un Selector i una Tasca per moure's cap a l'objectiu.
  3. Configurar el Blackboard amb una clau TargetActor.
  4. 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 al Blackboard.
    • Verifiqueu que l'AIController està assignat correctament al personatge.
  • 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.

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.

© Copyright 2024. Tots els drets reservats