How It’s Played

This is a VR game played with the Oculus Rift. The “B” button on the Oculus Touch is for selecting fireball, The “A” button is for selecting frost bolt and the grip button selects the arcane bolt and trigger button for casting the spell. The player aims with Oculus Touch controllers to shoot the cubes with corresponding spells. There are three different cubes types; fire cube, frost cube and arcane cube. The player has to hit the fire cube with the fireball spell, the frost cube with the frost bolt spell and the arcane cube with the arcane bolt spell to start a chain explosion of the same cube types. The player scores points for each exploded cube and after the player accumulates a certain amount of points, their ultimate ability becomes available. The ultimate abilities I had in my mind were; for fire mage, a one time usable greater fireball that destroys all the cubes, for frost mage, an ability to slow down the opponent’s spell projectiles and for arcane mage, an ability to steal a certain percentage of points from your opponents cube explosions.

My Role In the Game

Language used: C#, Developed in: Unity Game Engine

General Role: Designer, Programmer, Researcher, Producer

I pitched the game’s idea, the design and vision so I can say that this project is my brain child. I also coded all of the game’s logic, game object, input and AI scripts while my teammates helped me with the UI and visual assets. I created the cubes as physical objects in a 3D project and put them inside a parent column object that contained four cubes inside. I handled the respawning of the cubes in the column object’s script. Then I put four of these column objects inside the grid parent object to create the 4x4 playground. To navigate and explode the correct cubes after the player shoots one, I gave each cube object two plus shaped trigger colliders and constructed a neighbor cube array inside their script. Then I wrote a DFS function to traverse the path of cubes. This function recursively searches through a sequence of cubes of the same element type and returns when the algorithm is currently processing a cube that is already inside the list or if it’s currently processing a cube of a different element type from the one that has been shot. If these are not the case, the function recursively calls itself with the next cube in the current cube’s neighbors array and returns the found neighbors list if it’s currently on a cube that has no neighbors to continue with. The AI opponent I constructed knew the length of the chains and shot them according to it’s difficulty level.

Side Note:

Our project was awarded 3rd place in all the senior design projects that were developed in that term.