My apartment
Provo, UT
January 2022 - August 2022
C#, Unity Game Engine,
Problem Solving
As a personal project, I wanted to build a first-person puzzle video game prototype in which the rooms of the building rearrange themselves as the player moves throughout the game. I also wanted the player to be able to collect and interact with items and puzzles and be able to save their game state.
I used the Unity game engine to develop this game and used C# scripts to control the different aspects of the game.
To store player data, I used JSON in a text file that I would read from at game startup and write to when the player terminates the game.
I used another JSON file to specify the different locations and arrangements that the rooms could take when moved around during the game.
The models I used for this game were downloaded from the Unity Asset store or created using simple elements available in the Unity Editor.
The game also allows for player control using a mouse and keyboard or using a Playstation 4 controller. To achieve this functionality
I had to create code that would work based on mapped inputs, rather than directly watching for specific buttons or keys from the user.
One large challenge in this project was moving the rooms around while maintaining all of their contents even as the player moved items between rooms.
I addressed this issue by assigning a room as a parent for each game object and then moving these game objects to maintain their same relative position
in the room anytime the room changed position and or orientation. The parent room for objects changes as the objects pass through invisible triggers
placed in doorways. The triggers cause a script to reassign the parent room to match the current room, so when the rooms shift all the objects inside shift with it.
I was able to create a first-person puzzle video game prototype. The rooms rearranged themselves as desired while the game progressed, becoming a part of the overall puzzle of the game. I have also been able to implement a pause screen, a settings menu, and save files. I plan to continue developing this game in the future and eventually publish it to a video game digital distribution service.