skip to content
heny.quest
Ghoul prison cover image

Escape Ghoul Prison - SFAS Competition Finalist

/ 2 min read

Check out Escape Ghoul Prison’s

About

Escape Ghoul Prison is a puzzle observation game made using only C++ and DirectX. In this project, I implement my very own behaviour tree system using modern C++ techniques such as coroutines.

This is a submission to Grads In Game’s Search For a Star 2024 competition, in which I became a finalist for!

This project was scored and rated by a vast range of industry professionals and was an incredibly fun technical challenge. I received some awesome feedback for this project, so I wrote a separate learnings post here.

Ghoul Prison GIF

Techniques

Coming into this competition, I really wanted to work on some sort of AI behaviour. Having previously worked with behaviour trees in UE5 and Unity, I decided to make my very own from scratch!

C++

  1. Coroutines

    • Having previous experience with coroutines in C# and Unity made me comfortable enough to pick up and utilise it in this project for the behaviour tree implementation.

    • In specific, coroutines were used to implement the RUNNING return state, which means that a specific node hasn’t finished operating within that tick and must continue to run in the next update cycle.

    • This is a modern C++ 20 technique.

      See Source/Engine/Implementation/BehaviourTree

  2. Behaviour Tree

    • Features of the behaviour tree included: Selector Nodes, Sequence Nodes, Services and RUNNING State functionality.

    • This implementation is used for the AI of the prison warden in the game.

      See Source/Engine/Implementation/BehaviourTree

  3. Sprite System

    • Built out a sprite script in order to manage multiple different billboards under a single object.

    • This was used for the stage indicators on the left, as well as the prison warden’s sprite changes and detection indicator.

      See Source/Engine/Implementation/GameObjects

Artificial Intelligence

  1. WardenBT
    • Based off my behaviour tree, I built out a few task nodes and services to construct the patrolling behaviour of the prison warden.

      See Source/Game/EnemyBTs

Version Control

  1. GitHub