The project features a custom Physics Engine, Emotional AI engine, affordance system, AI interaction, and architecturally accurate Tavern model. The project was written in C++, and utilises and extends our Centurion Engine from Vengeance of XZAR.
- Centurion Engine: The Component-based Centurion Game Engine made as part of a previous project was re-purposed, enhanced and extended for this project. It already contained rendering, scripting, model object loading, and component-based object heirarchy systems.
- Physics Engine: A fully simulated rigid body physics engine was written from scratch as part of this project. The physics system from the original Centruion engine was completely removed.
- Collision Engine: 3rd Party Collision Detection (Bullet) was incorporated by wrapping it in an abstraction layer to allow for different collision libraries to be swapped out in the future.
- Affordance System: Every object is able to be assigned an affordance component, which allows different affordance values for different actions to be assigned to it. Barrels may have a high affordance for putting things on, but they will have a much lower affordance for being picked up! The Centurion Scripting engine made modifying affordances incredibly easy.
- AI Interaction: AI NPCs are able to scan their environment and observe the affordances of any objects within their sensor volume.
- Emotion Engine: An extendable, BDI-model based, data-driven emotion engine that simulates the emotions, moods, and desires of an NPC over time.
- External events are processed by the emotion engine, and are allowed to alter the short-term emotional state of the NPC.
- Experiencing emotions alters the longer-term moods over time.
- A combination of stimuli, emotion, and moods affect the NPC’s desires.
- The emotion engine includes the use of a Memory structure so that stimuli is remembered for later processing.
- NPCs were given different biases (eg. Anger/Fear, Joy, Sadness) by mapping out different emotion, mood, and desire response values (traits) using easily-modifyable XML.
- Behaviour Engine: A state machine that controlls AI agent behaviour. The behaviour engine accesses the desires from the Emotion engine, then arbitrates based on these desires and the opportunities afforded by the environment to decide on which action to take. The behaviour engine also implements how each action is to be done.
- Messaging System: A simple, clean message dispatch system was implemented to facilitate communication between game objects. This was used by the collision reporting and affordance systems.
- Full interfacing and implementation of the collision system.
- Bridging of mesh geometry, collision geometry and rigid body systems.
- Full scouting, 3D Blender modeling and texturing of the Murdoch Tavern model.
- Sourcing and texturing of some level prop models.
- Sourcing of asteroid model & texture.
- Creation of rotating starfield skybox.
- Extended asset pipeline and rendering engine to better handle packed bitmap fonts created using AngelCode’s Bitmap Font Generator. Strings were constructed using dynamic Centurion Meshes, meaning each string could be rendered in a single triangle-list render call.
- Implemented “World Chat” message box system.
- Implmented GUI elements.
- Extended asset pipeline to allow more image and model formats to be imported.
- Extended rendering engine to be able to draw debug geometry coming from the collision and physics engines.
- Extended rendering pipeline to be able to specify transparent objects, so that they can be rendered after all opaque geometry.
- Implemented “Stimulation” system for Player-AI and AI-World interactions.
- Many hours of debugging and testing
- Managed GitHub source code repository
- Project submission documentation consolidation
- Engine and Studio Logo Design
- Promo Video filming and editing
See the demonstration video below:
Source Control Video
The following video illustrates the Git source code control activity logs over time: