Thesis Project - In Progress


For my final yera project I am currently investigating how to make varied AI for a fps immersive sim while keeping the their actions fair and predictable. This project has included making a fps stealth controller, a Theif: The Dark Project like lighting system for stealth and of course the guards behaviour which is implemented using unreal engines behaviour trees.

The FPS stealth controller includes the following features:

  • Leaning (in all 8 directions)
    • You can lean with WASD and hold multiple directions at once
    • If you hold two inputs in a diagonal direction you don't lean as far as if only held in one direction
  • Stooping under objects when crouched (like in dishonored)
    • When crouched as you move into an object with enough space for your character they will lower down to fit
    • Goes to the exact height needed no lower
    • You will dynamically go lower or higher as you move between cover (shown in video)
  • Vaulting over objects to get higher or ontop of something
  • Step counting currently shown via headbobbing
    • The number of steps you take changes if you're crouched, walking, running and can be changed in inspect
    • Its set up to be able to call a function at every step, this is used to create footstep sounds that the AI can hear and react to. How loud it is depends on how the player is moving.

Guards can be assigned traits across the 4 categories of Perception, Relationship, Tenacity and Environment. These directly affect the guards behaviour with how they detect the player, perform their behaviours and react to the environment to give more variation to the AI while still allowing the player to know what they'll do through an inspection UI that lets them see the traits.

There is a base behaviour tree with many of the states leading to dynamic behaviours that can be changed at runtime depending on the traits or reaction to the environment. The basic behaviour allows for patrolling, searching, chasing the player with direct combat being an element I will work on later.

I implemented a rudementory version of Theifs lighting system that lets the player hide in shadows, there are varying levels of light visibility depending on if the head torso and feet are within the light that change how quickly the detection meter of the guards fill up. The guard's light status is also accounted for allowing you to hide bodies in the dark or have them react to a light going out.

The github currently only has the movement code but the rest will be uploaded when the thesis is complete at the end of April or upon request.