HPL3/Amnesia: Rebirth/Tutorials/Ghouls

From Frictional Wiki
< HPL3‎ | Amnesia: Rebirth‎ | Tutorials
Revision as of 00:09, 15 November 2020 by Darkfire (talk | contribs) (Patrol tutorial)
Jump to navigation Jump to search

This tutorial will go over the basic setup required to use a Ghoul agent. This tutorial assumes you have basic mapping and scripting knowledge.

Map Setup

First, make sure any agents placed in your map are set to be inactive. This ensures that, when later activated in your map script, the agent is successfully added to AgentBlackboard.

The agent requires path nodes to move around, so make sure your map is populated with plenty of nodes. You can use the PathNodeGenerator area type to easily generate a large amount of nodes automatically (make sure whatever surfaces you want to generate nodes on are inside the area), but you may still want to place nodes manually in areas with difficult or precise navigation.

Scripting Setup

If the required map prerequisites are fulfilled, your Ghoul should be reactive to the player upon being activated via Entity_SetActive() in the map script.

To give the Ghoul additional behavior, set up and switch the Ghoul into the appropriate mode and issue commands as desired.

Icon tip.png Tip: More information on Ghoul modes and commands can be found on the Ghoul agent page.

Adding a patrol path

First, make sure there are PathNodes or PathNodePatrol nodes in the enemy area. They can be added with the Area tool. To add a patrol path, use this code:

Ghoul_CommandPatrol_AddNode("ghoul", "PathNodePatrol_3", 3.0, 5.0);
Ghoul_CommandPatrol_AddNode("ghoul", "PathNodePatrol_7", 3.0, 5.0);
//Add more nodes as done above.
//Keep in mind the AI can find a straight path between nodes by itself, so you only need to add nodes at junctions and sharp turns
int HowManyTimesToLoop = 10;
Ghoul_CommandPatrol_Execute("ghoul", true, HowManyTimesToLoop, false, eGhoulSpeed_Walk, ""); //the parameters here can be changed of course
Alert icon.png Warning: This won't work if you put it in OnEnter() or OnStart()! Use Setup() instead if you want the enemy to patrol when the map loads.