Project Overview

Temporal Arena is a rogue-like RPG game created over eight weeks. The game features three different environments, multiple times, and a variety of different enemies to give each run a unique experience over the last. I worked on the design of the game’s systems and programming including the RPG battle system, overworld, inventory, and much more. My partner focused on art, but I gave each sprite an art pass before adding it to the project. We used Azure DevOps and the Agile development method to iterate tasks each week. 

Design Goals

Post-Breakdown

I learn a lot of different tools and ways to go about creating different mechanics in Unreal Engine 4. One of the big things I relied on during the project was the use of enums, structs, and data tables. Before this project, I had only been familiar with enums. Since the game would have many assets and objects that would be randomly selected, I created a system to have all these assets and objects in their own data tables. This way I could pick a random element from the table with every element having the same structure of data. This was great for the functionality and organization of all the different parts.

Another major aspect of the project was the ability to switch between a top-down exploration over-world and turn-based battle. Originally, I thought about creating two separate maps for each of the parts. Though I decided to challenge myself and create a method to have both of the systems work on the same map. This way there would be no load times or transferring and saving lots of data frequently every time the player entered into a battle. To create this, I made a blueprint actor contain all of the elements of the battle scene (enemy sprite, environmental assets, and lighting data). I also created a battle widget with all of the battle information. When a player entered a battle I would transition the camera to the battle scene and replace the current widget with the UI widget. This method made switching between scenes quickly and easily. It also cut down on unnecessary saving and transferring of save data.