Unity, Adobe Photoshop, FMOD
In Every Monday you play as an everyday civilian on his way home from work on a Monday. He’s just got off his first bus and is on his way to his last bus stop before he can finally be home.
Of course, it’s a Monday, so he wants to get home as quickly and seamlessly as possible, so every disturbance he runs into on the way chips at his Peace Meter. If it drops to 0% he’ll snap and you’ll have to start over!
I developed Every Monday for MiniJam 100’s 3 day game jam with composer Mark Samani who handled all of the audio for the project. The theme was Overload with a Chaos limitation.
I really enjoyed working with another developer because I got to get more direct experience working remotely with GitHub as source control. We had limited time to deliver the best game we could, which required a lot of watching our scope with planning and prioritizing, and knowing our limits.
I found that task tracking, using the Observer Pattern, and GitHub merging were key skills to sharpen up in this process.
The Observer Pattern
I’ve used the Observer Pattern in several other small projects to, for example, update text or spawn particles when an enemy dies. In this project I used it twice, once to handle destroying all of the PeaceBreaker objects in the scene when the player fails/succeeds, and once to handle the events of the Hide mechanic.
The Hide Mechanic
This was an interesting challenge because once I had thought I finished making the Hide mechanic functional, problems occurred when loading the scene from the menu and having multiple objects registering to the same event. I was getting null reference exceptions, and this completely threw me for a loop at first. I had a situation where all doors in the scene would subscribe to a static OnEnterDoor and OnExitDoor event, which I believe would cover me because then all of the doors would open and close once the event was called, but that wasn’t the case, and I instead got a null reference exception. I solved this issue by having a single DoorManager subscribe open and close methods to the static event, store a list of all the doors in the scene, then whichever door the player is at, the Hide script would store that as an integer then invoke OnEnterDoor and OnExitDoor just for that door, referred to by an index in the DoorManager script.
I noticed that it was really easy for the “Things To Do” list to just pile up, and I feel I handled this situation very well, during the process I figured that it’d much simpler to keep up with these tasks once I started listing them as they come in even on a small project and take the DevOps approach to meet the tight deadline. The tasks, once listed, can be prioritized in relation to one another and the most dire needs can be tended to first.
Branching and merging a project using GitHub Desktop did not come naturally as I had been used to the (now deprecated) Unity Collaborate process beforehand. But after going through the process of verifying branches, making a pull request, and pulling the request into the main branch of the project, it became a really simple process and working on the same project never before seemed so safe and modular to me.