Unity - C#
A small prototype I built as a learning exercise
The system created for my final year project processed behaviours individually and in series. In Fullstrike I experimented with breaking this into distinct behaviour 'channels' - asynchronous utility evaluators pushing actions onto a queue as a sort of short term memory. Utility ranking was replaced with discrete priority, ranging from Reflex to Passive, which allowed an agent to perform the most important actions first without losing track of what it was doing previously.
My ambition for this was to facilitate a loose form of Goal Oriented Action Planning, in which individual or squad level plans can be performed without blocking the individuals responses to change in the environment.
To compensate for my limited art skills, I am supplemented a store bought character pack with both IK control for aiming, and a three-rig system that blends from baked animation to a ragdoll, creating variation but keeping the animation coherent.
These arguably complicate a character rig and are performance intensive, but when using very low-poly models I feel they give a tremendous amount of 'life' for that cost.
Built from the ground up to support gamepad play, I have researched and explored a number of techniques used by shooters to enable an enjoyable experience in the absence of mouse precision. These include bullet magnetism, aim-assist and target friction.
I built a number of components generic to both player controlled and AI characters. This allows a central 'battle manager' to spawn a lightweight prefab from a pool and assign either AI control to it, or dynamically move the camera to an over the shoulder position and direct player input to it.
I picked up this design philosophy from Big Robot's dev blogs on 'The Signal From Tolva', in which they explain how there is very little distinction between a player controlled character and an AI one, and how much that sped up development time.