Apple Man


Leading A Team Project


The game in the above video is available to download and play here!
Windows x64 Download

This project was created as a submission to a game jam held by the Games For Love foundation. A nonprofit dedicated to dedicated to easing suffering, saving lives, and creating sustainable futures for children. Our team, dubbed "Pixel Orchards", had a blast making Apple Man! We won first place in the "fun" category, first in "aesthetics" and third in "Retro-arcade-feel" for an overal rank of first place in the game jam!

In this project, I led our team of 7 people,including myself, to build a retro-style platforming game in two weeks. This project also had several constraints as rules of the game jam. These included a static camera, no scene changes during the entire length of the game, and retro pixel art style graphics. Our team consisted of 1 other programmer, 2 pixel artists, 1 level designer, 1 writer, 1 sound designer, and myself as team lead and head programmer. Within the two week timeframe we were able to create a complete game with 33 different explorable rooms, 5 different enemies, and a very nice feeling character controllers with several abilities such as punching, dashing, and wall jumps. Given more time, we were very close to adding in two additional boss fights to tie the game together.

This was my first experience working in a team setting and also leading game dev team. It was a great experience! We spent much of our initial time together planning out what roles and tasks everyone would be comfortable with, and also chose github as our source of version control and collaboration. We adopted a workflow where each level designer or programmer would work in their own "workspace" scene. The level designers and programmers would also create a branch per feature and merge this into the main as tasks were completed. In this way we were able to avoid having any merge conflicts throughout the entire process of this game jam, and limited most of our changes to our particular workspace scenes. As team lead, I then went through each workspace scene and added the work together for our final product.

Discord was a tremendous help in coordinating our team's communication. We had a channel for programming, art, level design, story, general, and also a voice chat where we could share screens. We also used milanote for mood boards and other general planning purposes as a replacement to trello. With such a large team of 7 people, I took extra care each day of this 2 week game jam to ensure that each team member had tasks lined up and always knew where they stood in the project. I spent about 40% of my time coordinating with the other 6 team members, and the other 60% coding and helping with level design using Unity's tilemap system.

My favorite outcome programming wise from this project was coming up with a very clean implementation of a pluggable state machine AI that uses Unity's scriptable objects. Each state of an enemy's AI is made up of 3 scriptable object components: an Action, a decision, and a 'state to transition to'. The code to this system is linked in my Github and explained in slightly more detail there.

One major challenge when creating this game was avoiding any scene changes as a rule set by the game jam. In order to have multiple different rooms for apple man to explore, I ended up taking advantage of the fact that the camera must also be static, and so I was able to have each series of rooms as a prefab, and simply destroy/instantate these rooms as prefabs to load in new levels or reset the game. I also used UI screens to hide any hitches in the game during this level loading process. This presented new challenges as I had to create a level management system to manage all these rooms and make sure only 1 of them was active at a time. With each room transition, the previously active room would be deactivate, and the new room would be set to active. Also, apple man's position would be set to the start position of the newly activated room. This mimicked a scene change without actually changing scenes.

Overall, this game jam was an amazing experience and I loved working with my team mates! It was so much fun working with other people and they constantly amazed me with their creativity and awesome ideas for the game. We ended up really falling in love with this project and some of us are considering the possiblilty of continue to develop this into a more polished game to publish on steam.