Flip Trip

Tech Lead/Tools Programmer
Project Overview
Flip Trip is a simple 2D side scrolling platformer with one simple gimmick: Gravity flips.

Traverse dangerous terrain and avoid enemies while making your way through the levels. When gravity flips, enemies are disabled.

This project was created from the ground up with a team of 4 programmers on a custom built engine using C++. Over the 8 month duration, the first 4 months were creating the engine, the last 4 months were creating the game.
What I did
This project was a collaborative effort on a team of 4 programmers(including myself). I served as the tech lead throughout the engine creation process, as well as the tools programmer. With these focuses in mind, these were my primary contributions to the project:

- Task Management
- Organized Meetings
- Assisted Other Programmers
- Created Debugging Tools
What Went Well
Task Management
As the Tech Lead, it was my responsibility to ensure all of the programmers on the team understood and communicated what they were working on. As such, I would schedule weekly meetings where we would collectively discuss what we worked on, what we need help with, as well as what we want to work on next. This system, paired with extensive proactive sprint planning at the beginning of the project, enabled our team to successfully meet all of our goals while avoiding any crunch.
Flip Trip Movement/Gravity Flip
Debug Menu
Debug Menu
Once the team had successfully completed the engine development, my role as Tech Lead became more of a background task. My focus shifted to assisting the other developers by creating tools that they could use to easier test and debug their systems, mechanics, and etc. Initially I had created scene controls to enable quick traversal through the different levels. Next I created a stat window, adding statistics and variable values that would be important to the other devs in diagnosing issues with logic functionality.
Following that, I created a simple game object manager, that would display a list of all game objects in the scene. The user could only delete game objects, but this served to be sufficient functionality to drastically speed up part of the debugging process. Lastly, I added a cheat menu, which let the user enable noclip, god mode, or an easter egg "party mode". Throughout the creation of these debug tools, other small menus were created for debugging other systems, made in collaboration with the developers responsible for those systems
More Debug Functionality
This project was full of opportunities for me to help other developers in a variety of ways. This was my first time creating an engine from the ground up, and working as the Tech Lead gave me a lot of responsibility. I feel my contributions, both as a Tech Lead and a Tools Programmer, were invaluable to my team in making fast progress with minimal crunch, while ensuring all developers had the tools and assistance needed to quickly iterate upon and debug their code.
Development Challenges
Thankfully our team did not struggle throughout the duration of this project very much. We had been provided plenty of assistance from professors where needed, but for the most part we were able to figure out what we needed to do to move forward whenever we were stuck, which seldom happened. Due to the fact we did not have too many issues, I don't believe there is anything of substance to put in this section. Engine creation was complicated at times, but we had approached it well prepared for the task thanks to prior experience among the team.
How This Project Led to Growth
This project was an amazing opportunity for me that allowed me to grow in a variety of ways as a developer. Being Tech Lead gave me a unique insight into the process of leading a team and managing tasks on a larger scale. Being able to guide a team allowed me a lot of practice with problem solving, both in communication and in development.

Creating this engine was a great way to get me very comfortable working within game engines, as this was a project I took on before having any experience within commercial game engines with editors. The perspective I gained being tasked with creating an engine from the ground up enabled me to quickly understand the core principles of many engines, and allowed me to be able to pick up and learn new engines efficiently.

Developing the tools enabled me to work closely with other developers to put together tools that would help them with their tasks. This process of regular collaboration and iteration was great practice for working in a more supportive role within a team environment. I was able to use feedback from playtests to help guide the other programmers, as well as help figure out what tools would be the most helpful in aligning our project with our goals in an efficient and targetted manner.

Overall, I am very happy with the end result. We exceeded our initial goals, and were able to create something that I would have never expected to make even a year or two prior to this project. My contributions, due to being primarily supportive, allowed our team to quickly and effectively design, implement, iterate, and debug all aspects of the engine and game.