Back

Project Phoebe

Third Person Platformer / Puzzler - April 2023

View on YouTube

View on Github

Overview

In the Unity Junior Pathway, I was tasked to build my own project as I learnt how to develop games in Unity. The projects used in the pathway were very simple games and I wanted to expand my game a little more than what was required. I added 5 different levels, all unique in their play style, and added general game state. This game requires a controller, and throughout its development I used a PlayStation controller, and even use PlayStation icons. I developed it on Mac, and I was unable to test the game on Windows.

Retrospective

Having improved my Unity skills since this project, it now holds a special place in my heart, even though I know I can create something much greater today. I remember the struggles and the vision I had for it, along with the knowledge I lacked at the time. Despite this, completing the project and learning entirely on my own outside of my studies is something I find truly impressive. Unity used to seem like a daunting tool that appeared very complicated, but now it's a familiar place, and this project was the beginning of that journey. For my first Unity game, it's not a bad 'first' at all. Reflecting on this experience, I realize how important 'first' projects like these are for learning and growth.

My Role

Gameplay Programming:

- Implemented a puzzle system that remembers sequences.

- Developed an AI system capable of targeting different objects.

- Created a game state system enabling checkpoints.

Non-Programming:

- Sole developer responsible for all level design and game design.

- Created a comprehensive game development journal.



Technology Stack

Unity, C#

PROGRAMMING

Build good habits

Improve through iteration.

I never intended for this game to have a sphere as its playable character, but creating a full human character with animations was beyond my capabilities at the time. Initially, this was demotivating, but it provided me with a realistic and achievable goal: learning all the fundamentals necessary to develop the third-person experiences I aspire to create in the future. This project also gave me the chance to explore adding puzzle mechanics into a 3D space. Although I implemented these mechanics inefficiently with two arrays and multiple if-else statements, they functioned exactly as intended.

Working on this game allowed me to improve essential skills, such as coding camera mechanics, integrating controller support, designing a main menu, and implementing a checkpoint system. These are features common to many games, and mastering them will enhance my abilities in future projects. Through this iterative process, I gained valuable experience and confidence, turning initial setbacks into opportunities for growth.

DESIGN

The learning curve

Gaining familiarity.

I wanted a game that was minimal enough for me to just worry about the programming. I dabbled in some 3d asset building but quickly lost sight of the full project. This project was meant to be as simple as possible yet feel like more than a demonstration. This is why I ended up building 5 different modes that are all played in a different way, with different systems for each.

As stated in my Game Development Journal (that can be found below) during the process of developing this game, I found the methods I used for all my systems could’ve been approached in a better way. One that I will specifically pick out is the sequential puzzle system, which remembers the order in which pressure plates were activated. I used a binary array that was the same length as the number of plates in the puzzle. When a plate was activated in the right order it would change a 0 in the array to a 1. Once the order was incorrect the entire array was reset to all 0s. Though this system works, I felt that using an array was the wrong data structure for this type of system, as it had no information on the plates, just the order in which they needed to be activated.

Overall, all the code I typed was made as modular as possible, which allowed me to easily make multiple modes. If needed, I could easily incorporate any of the systems in the individual levels into one single level. It was very important that I had menus and that the game was played with a controller. Up till this point I had never made a game with either, I wanted to push myself to learn as much as I possibly could during development. I’ll never be a good game programmer if I only stick to what I know. To make better games I need to be a more versatile programmer, and this is just the start of that process!

View my game development journal

NEXT GAME

ITP1 Project p5.js, JavaScript

2D Platformer - September 2021

The game project I submitted for University of London in their Introduction to Programming 1 module.

2d platformer showing character facing right, looking at collectable