A 3d model of the hands used on the main character of the game.
A work in progress photo of a room used in level 2 of the game.
A finished product of a room present in level 1 of the game, as well as being the basis to both the ending and starting rooms of levels.
Video games are created when a group of people are inspired by something and want to use that inspiration to create an experience that is enjoyable for other people. The group of people will then assign roles in these groups, such as writers, programmers, artists, and team leaders to help organize work and consolidate different pieces of work together in order to make a game. Mine personally was the writer, which is why I am typing this out.
Pre-production is extremely important to the creation of any game and the experience of any players playing it. We changed our game many times in what we wanted to have the player play, form top down games, to 2D platformers, and what we eventually settled on, 3D platformers. You also decided what the gameplay will be in pre-production. We wanted a fast paced parkour platformer that the player constantly had to move in, lest they get attacked by the enemy. Everything about the player experience is, for the most part, is decided within the pre-production stage of game design.
Planning the user experience is complicated at the best of times, nonetheless when working with a team. Writing the plan out in a safe place helps lessen the complexity of the task, as well as writing down idea's that simply won't work under the timeline. This will help remind you what choices you have available for user experiences, as well as what avenues you already know won't work or are to complicated to pull off.
While creating the flowchart about the plot for the game it really heralded to how simple of a story we were planning on telling. Instead of having the player be told the story we wanted to try to work the story into the game via player discovery and interaction, leading them towards the end of the levels.
During our UI design sketching and process we learned that its hard to try to create a UI that is effective in giving the player as much information as possible without overriding their ability to play the game. In the end the challenge did kinda start to become less of an issue as we couldn't implement the original full scope of the UI we were planning on doing.
Learning more about Unreal Engine and its systems was a great experience. Although I will admit that Unreal Engine was probably not the best game engine to use for the type of game that we ended up making, it provided all the functions that I needed to implement all the necessary coding. Unreal Engine has many online resources for coding and engine-related questions, so I used some of these extensively to find solutions for problems and ways to do things that I wouldn’t have known otherwise. We were also able to use GitHub to share the project across three computers to work on different aspects of the game at the same time. This significantly improved our workflow and ensured that our changes didn’t immediately clash with the others’.
One instance of such was the cooldown implementation for the player's abilities. I knew that I didn’t want to hardcode any values for their times, but also wanted to make it as simple for the other members to change. So, I relied on Data Tables to store the cooldown information of each ability. Using the ability activated and checking the remaining cooldown on each ability would determine if the ability would get activated.
The only frustrating thing about Unreal was its limitation on spawning actors with movable objects. The Level Generator blueprint and each of the room snippets for each level had to be changed due to the fact that: 1. Rooms with lights on them would cause a HUGE amount of lag, so we had to bake the lighting by making them static. BUT setting lights to static couldn’t be done since 2. UE cannot spawn and move any actor with anything set to static (which makes sense, but was certainly annoying). So I had to counter that by setting markers with specific tags, after spawning and moving the rooms to where they should be, checking the tags of the scene components, and placing either a Monster Spawn Point, a Player Detector, or a Breakable Wall at those places. But this was also a good experience learning how to use critical thinking to troubleshoot and come up with creative solutions.
While creating the environments for the game we learned a lot about lighting and how to pair it with colors to create unique areas. An example of this is in the contrast between the tutorial and level 1 environments, where they both use the same textures, but all of their lights are different thus creating different feelings within the game.
Tutorial Environment
Level 1 Environment
Level 2 Environment
Each of these artifacts were created by our coder Cristian and each of them provide a different role within the game, with them being the logic for the player character, chasing enemy character, and the level generation scripts respectively.
Contributions for the game can be found as follows: Ava Baker and Maisha Khan (textures and concept designs), Indigo Neill (UI elements and design), Carlos Flores (Hand 3d Models), Spencer Smith (room layout and creation), Joseph Konar (Room layout and creation, Music), Cristian Montesinos Melara (Code).