
Dvergatal
This game can be downloaded and played from Itch.io
As part of a collaborative university project involving a diverse team of seven members from various disciplines, I served as the Lead Gameplay, AI, and Animations Programmer for player and enemies within the game.
Our development approach followed the Agile methodology, featuring weekly sprint meetings to monitor progress and ensure project alignment. To efficiently track tasks and manage workflow, we utilized Jira and Confluence. Source control was managed through GitHub, facilitating remote collaboration and ensuring seamless integration even when team members were unable to attend in person.
For the core mechanic of the game, we aimed to recreate the iconic axe-throwing feature from God of War (2018) within a Player versus Player (PvP) capture the flag setting. Developed using Unreal Engine, the implementation involved a combination of C++ for core functionality and Blueprints for engine-specific value assignments. Notable features integrated into the axe mechanics included:
-
Flag Stealing: Enabled the player to capture the flag when recalling the axe.
-
Rotational Dynamics: Added rotational effects to the axe during throws.
-
Particle Effects: Incorporated visual effects to indicate the axe's trajectory.
-
Distance-Based Damage: Implemented a damage reduction system based on the distance traveled by the axe.
Additionally, basic animation programming was employed to trigger the axe-throwing action. Extensive polishing was undertaken to refine the aiming mechanics, utilizing various blend spaces to accommodate different movement directions and enhance gameplay precision.
This comprehensive approach ensured that our game not only captured the essence of the original mechanic but also provided a polished and engaging player experience.
The wisps use a state machine with four states: Idle, Movement, Attacking, and Death. In the Idle state, they stay still until activated. In the Movement state, they navigate to random points using nav meshes and an AI controller. When a wisp detects the player, it switches to the Attacking state, where it moves quickly to attack until the player is defeated or moves out of range, at which point the wisp returns to Idle. If a wisp’s health drops to zero, it enters the Death state and is removed from the game.
Wisps are spawned at designated points to control their numbers and prevent overcrowding in any part of the map, ensuring balanced gameplay and performance.
Cut Content
For the combat on the player there was one feature that was cut from the game entirely and that was the melee system. This was ultimately cut due to a combination of a game breaking bug and time constraints within the project. The attacks that could be used were 3 light attacks and 3 heavy which could be chained in any order.
This system made use of a queue system in order to chain different attacks that the player can do and alternate between light and heavy attacks to damage the other player. Looking back, If I had to take a guess as to where the game breaking bug came from, I would suspect it was due to trying to access a nullptr within the queue which could be fixed by doing a single check to see if could use that value before trying to access it.