Artificial Intelligence

Opponent AI

R:GDD:AI:House:1 - Seperation of players.
R:GDD:AI:House:2 - Activation of Desmond.
R:GDD:AI:House:3 - Manipulation of Objects.
R:GDD:AI:Desmond:1 - Attack players.
R:GDD:AI:Ghosts:1 - Attack players.

The embodiment of Desmond playing as the house is the main opponent. While being controlled by a player no AI will be used. While not controlled by a player the house will keep track of each player’s position and use algorithms to separate they players as much as possible. The efficiency measurement that the AI will use is calculated by how far apart the players are and attempt to use the actions available to it to separate them.

When the house has acquired enough strength Desmond can be summoned. Desmond will have its own simple AI to path find to each survivor and attack when in range.

Support AI

R:GDD:AI:SupportAI:1 - Player notification for need.
R:GDD:AI:SupportAI:2 - Highlight objectives when one side completes the objective.
R:GDD:AI:SupportAI:3 - Screen distortion when the players get to far apart.

For the survivors there is some support AI to help the survivors keep track of the objective. Since some objective may contain simultaneous actions there will be onscreen notifications that one player needs the other.

Player and Collision Detection

R:GDD:AI:CollisionDetection:1 - Collision with solid objects prevent players from moving.
R:GDD:AI:CollisionDetection:2 - Collision with Desmond prevents players from moving.
R:GDD:AI:CollisionDetection:3 - Collision with ethereal objects prevent players from moving.

Basic collision detection for Desmond will be used. Summoned ghosts will not use collision detection.

Pathfinding

R:GDD:AI:Pathfinding:1 - Desmond will use A* to move towards players.
R:GDD:AI:Pathfinding:1 - Ghosts will use direct movement to move towards players. Ghosts are not solid.

Pathfinding for Desmond will be relatively simplistic since he spawn in the same room as the survivor and they have to escape his grasp before he does enough damage to them. For collision avoidance we will use a modification of A* using Unity’s built in NavMesh.