top of page

Covenant of Ash

A single-player turn based tactics game where you control four characters to defeat the enemy group in combat.

1 player.

Created as part of my university course's final year for the PlayStation 5.

My Contribution:

This game was made as part of a group project for my Computer Science for Games university course.

Programming

The features I programmed into the game are:

  • Units

    • Unit stats (displaying in the stats UI and reading them from JSON)​

    • Selecting units with the bumpers.

  • Animations​

    • I created rotation based animations.​

    • When units win, they spin in place.

    • Attack and Hurt animations that rotate the unit towards/away from the attack.

  • Actions​

    • The ability to select actions for a unit.

    • Action Points that each action requires.

    • Action Point cost calculation for the grid movement.

    • I wrote the attack action code in Lua.

  • Battle Manager​​​

    • I created the ability to save and queue actions and resolve them at the end of the round, when a key is pressed.

    • This manager also handles asking the unit AI for actions, during the resolve stage.

    • Combat calculations between units that are fighting.

  • Unit AI​

    • I created the calculations that determine what ​action a computer controller unit should take and which unit they should target.

    • This includes attack actions and movement, so the AI will move closer to its target if it is out of range.

    • The AIs will fight the weakest enemy unit they can currently attack, so they will team-up on one unit until it dies.

  • Win Condition​

    • I programmed the win condition to be checked at the end of every round.​

    • If all of the players die, the player loses.

    • I also added two objectives, which are set before the game begins:

    • Kill every enemy.

    • Kill a target.

    • If the target is killed, the remaining enemy units will flee and the game will end.

  • Number Rendering​

    • The core number rendering was already created by another programmer on the team, but I created a Number class that takes in a new number string and allows an existing number GUI icon to be updated.​

Lab_R4K22-20250514-0002.png

Additionally, as part of the previous semester's PlayStation 5 project, I accomplished the following:

  • I created a renderer for a custom engine in C++.​

    • This renderer is capable of taking in a 3D model in OBJ format and rendering it on screen, and can apply a texture to the model.

  • Level Editor​​

    • I created a level editor for PlayStation 5 that allows you to create new objects in a world, transform them, and change both the model and texture at runtime, entirely useable with a PlayStation 5 controller.​

Skills I Gained:

An understanding of the rendering process, thanks to being able to create my own renderer.

Memory management skills, as I had to create the allocate and free memory functions and manage when these are called to ensure I'm properly allocating and freeing memory.

Lab_R4K22-20250514-0004.png
bottom of page