Brief
Tantrumn is a racing game (on foot, not car) developed as a solo school project which is part of the CGSpectrum Game Programming Curriculum. The game was designed to accommodate single player, multi-player split view, and networked multi-player modes. The player(s) can compete against each other or AI bots.
Role
The design and guidance was provided by the CGSpectrum curriculum along with code examples. My role was to implement the game with scope to make any changes I deemed fit. Changes I introduced spanned the gamut of Unreal Engine capabilities such as a custom Character Movement Component (detailed below), level layouts, Mesh / Audio / Material assets, AI behaviour, and UI elements. The implementation was done primarily in C++ with Blueprints used for prototyping functionality, scripting some aspects of Widgets used as part of the UI, and level specific gameplay elements.
Summary of Elements
The game includes player levels, Kinematics test levels, custom Game Modes which can match gameplay to the corresponding levels. All gameplay supports network play whether via dedicated server and clients, or local LAN play. Detail on additional implementations included in the game as follows:
The custom Character Movement Component extends Epic’s implementation to include additional modes of travel. These modes are efficiently replicated via Bit Flags by extending the Network Prediction system used for lag compensation (reducing the rubberbanding effect prevalent in many older online games), specifically FSavedMove. The end result being minimal Server Corrections for client side movement predictions.
Impacts have the ability to stun characters (players and AI). The magnitude of impact determines the duration of stun and strength of controller vibration. Additionally, the stun state controls animation behaviour by triggering corresponding Animation Montages.
Third Party Attribution
- Character Model and majority of character animations come from the Unreal Engine Hour of Code pack
- Some snippets of code from CGSpectrum’s example content has been re-utilised in this implementation
- Some Meshes and Materials from Unreal’s Starter Content Pack have been utilised.