Shooter AI

Bachelor Thesis | Utility based AI System in Unity

My Role:

Solo Developer, mainly programming

Technologies:

Unity | C# | Blender | Photoshop

Time:

09/ 2020 – 02/2020

Status:

Finished and graded

This was the project for my bachelor thesis at the HTW Berlin. The goal was to create a modular, performant and immersive AI for a shooter game. The architecture is based heavily on the “Infinite Axis Utility System” proposed by Dave Mark from Intrinsic Algorithm in several GDC talks.

 


Download Thesis (German)

Core Principle

Decisions

Every agent has a collection of decisions.  Every x seconds all decisions are assigned a rating. The best rated decision gets executed. A decision could be something like [Attack Enemy 1]  or [Get Behind Cover 2].

Considerations

Every Decision is rated through several considerations, which represent states in the world.  A consideration for a decision could for example be [on a scale from 0 to 1 – how far am I from the enemy?] or [on a scale from 0 to 1, how much health do I have left?]. The score of all considerations combined make up the score of a single decision.

VideO Showcasing the Decisions

https://bernard-zaborniak.com/wp-content/uploads/2022/05/short-AI-video-for-wesbite.mkv

VideO Showcasing the Perception System of The NPCs

Screenshots

What I’ve learned

  • Implementing a humanoid animation system and the corresponding character controller
  • Implementing custom animation constraints and inverse kinematics
  • Optimising script performance through a custom LOD system
  • Creating a modular, designer friendly AI system, which is versatile can can be applied to other genres such as simulation or RTS