I developed Undermine for my final year project studying Computing and Games Development at Plymouth University. It's a multiplayer sword-fighting video game for the PC featuring stylised characters, hazardous environments and hostile lifeforms. The game is currently played locally as a single screen experience capable of supporting up to 4 players at once.
My project objectives were to deliver an appealing product for potential release on early access platforms, structure my code effectively using Object-Oriented programming, design and create original assets, and deliver a fluid gameplay experience.
I broke down the project into the following four stages:
Conceptualisation & Initial Prototype
Basic Functionality & Modelling
Modelling and Polishing & Bug Fixes.
I finalised basic game concepts during the first stage and created an initial prototype that influenced and shaped the final product. I implemented the first version of the camera control system, player movement system, and input manager in this stage. I also added a placeholder character model, and I implemented the freely distributed Ubuntu font family pack for UI design used throughout the development of the product.
The next stage was Basic Functionality & Modelling, which initially consisted of testing environmental hazards with the physics engine. This testing was also briefly carried out on the characters themselves. They would use applied force to attack indirectly based on rotation velocity, but I deemed it too unreliable to be manageable. In this stage, I improved the work-in-progress camera system. I fully implemented player and enemy scripts along with collision and damage. I attached avatar masks to the animation system, and I added a UI to display the health system. I modelled preliminary environmental models and animations to support prototyping.
I reserved the Advanced Functionality & Modelling stage for the more technical, time-consuming functionality. I implemented local multiplayer support for four gamepads, the camera system updates for dynamic zooming and panning based on player positions, object pooling, round functionality with resettable interfaces, enemy spawning based on a dynamic spawn grid and physics-based death animations. I replaced the placeholder character with my own modelled character asset and environment updates to the test stage. Additionally, I implemented a basic main menu template and an audio mixer.
In the final stage, the focus was on polishing and bug fixes. This stage included finalising the menu system to have a character select, stage select and options menu with animated transitions between them.
I added the random stage option to the game and functionality to return to the main menu and finalised five stages, each with unique game mechanics. I fixed significant bugs with player movement, camera system issues and physics objects.
I was satisfied with the functionality implementation during this project; I developed a reliable, playable product that surpassed my expectations when I set out to create it.