Dev Diary: Fate Marks the Spot – My Global Game Jam 2015 Experience

Another global game jam has been concluded last January 25 with 518 jam sites, 78 countries, 28,000 jammers and 5,438 games. It’s my fourth time to join this annual game dev fest, and from what I observe, the event just keeps getting bigger every year. It’s nice to see that more and more people are getting interested in creating games, students, professional developers, and hobbyists alike. I was excited to see what types of games will be made for this year’s jam, but I was more excited on what our team will be able to make this time. I teamed up with my former teammates in the last year’s jam Aileen (Artist) and Dino (Designer) together with Ej (Designer) and Simon (Sound Designer, Ej’s brother).

Friday, January 23

I arrived in front of the Ateneo De Manila University (ADMU) Rizal Library around 3 PM. My cab was in between two cars, which happen to be Synergy 88’s representatives for the game jam. Talk about full-force. They were carrying mattresses and bags, ready to spend the next two nights in the venue.

I must say, this is my favorite game jam site so far. It’s a lot more spacious than the past places that I attended. I hope we stick with this venue for the succeeding years, haha. By 4:30 PM, the program started. I was eager and anxious to see the theme for this year. And so, this video was presented…

What?…. WHAT DO WE DO NOW? That’s exactly the question that filled the minds of the participants. The theme is quite broad, but I like it that way because it gives more possibilities for game ideas. Like the past game jams, members are separated into tables to be grouped with other jammers to do some brainstorming, sharing ideas based on the given theme. Perhaps, to seed creativity and to encourage everyone to mingle with their fellow game developers. The ideas presented were interesting. My favorite would be the Angry Wife simulator where you need to perform actions to calm down your wife while she’s getting mad on reasons you don’t know.

After all ideas were presented, time for the real deal. We had a fairly hard time thinking of a game idea. I was actually interested in Aileen’s idea of a first-person game that has a pair of players controlling two characters with the objective of meeting at a certain spot. After all, I always want to implement something new for the game jam, and a network game is something that I rarely do. Squeezing more ideas, I suggested a tile-based puzzle game wherein creatures will spawn at certain spots, and the player must navigate the creatures by placing arrows in a tile to fulfill specific objectives (e.g. triggering a switch, escaping a room, etc.). Dino pondered on the idea and tweaked it so that the mechanics will involve a specific number of moving characters that are placed in the stage before the start of the round. Everyone agreed on the idea. The initial theme we had in mind was an office space, but we figured that a love story would be much more fun. It ended up combining the core mechanics with Aileen’s game idea during the brainstorming session. And so, Fate Marks the Spot was started.

Ej and Simon couldn’t make it for the first day, so they were online in Skype to discuss the idea with Dino. Aileen started looking for art pegs to use for the game while I code the preliminary parts of the level editor. It would be more efficient that way since our game’s fun factor heavily depends on the level design, so providing the tools to the designers will speed up the process. After adding the functionality to generate the stages, it was time for me to sleep. I need to reserve my energy for the next day, when the big bulk of the dev time is allotted.

 Saturday, January 24

It’s an early start. Ej and Dino are discussing the level designs. Simon is preparing the music and sound effects. Aileen starts with the preliminary assets and character designs. I continue to implement the core mechanics namely, character movement, path obstacles/blockages, and placing of arrows for redirecting the paths. I was about to finish my implementation when suddenly, my laptop died. I looked at the outlet, and it turned out that my laptop was unplugged. I was cautious enough to save often, but it gave me a momentary stress, so I rested for 10 minutes to relax and wait for my laptop to load again. The improper shut down caused the startup to run slower than usual.

By 2 P.M., I showed my teammates that the basic features of the tool are ready for use. Quite earlier than I expected. Now, for the level design. The plan is to have three stages, one tutorial and two main scenarios. However, the scope was bigger than I expected. Now there’s a trigger the thief to get rammed by a scooter. The rivals can be directed to a certain spot to start a fight, and the main character can be caught in the middle. Each level produced several unexpected possibilities that are difficult to implement within the given time. In the end, we had to trim it down. For instance, the scooter idea was scrapped in the tutorial level. Its conditions have some instances that will possibly divert the player from doing the ideal scenario and learning the basic gameplay. Dino laid out the basic level using the tool that I created in Unity.

Fate was made using Unity3D.

Fate was made using Unity3D.

For the tutorial, I just wrote a handler class where each step is separated by functions. The functions have corresponding Key Events that are thrown by different parts of the code for the tutorial scene. Lots of dirty hacks, here and there to speed up the coding process and move forward to the next stage. It took longer to implement than I expected. Tutorial system is my least part in coding a game, because it holds a lot of special cases that you have to insert in between the core features that you carefully constructed. Quite bothersome for me, but it enhances the gaming experience, so I get on with it.

After more than a couple of hours, the tutorial stage was tested. Bugs here and there. Fixes here and there. Rinse and repeat. After that, it was time to implement the next stage. Meanwhile, the art assets are still in-progress. The expansion of the scope affected the necessary objects to be placed in the scene as well as the characters. I’m not an artist, but I know that this won’t be “a walk in the park”. In any case, I’ve worked with Dino and Aileen in the past year’s game jam, so I know they will push through. It was past 12 A.M. The entire team is still awake. We’re now considering the possibility of excluding the third level if we run out of time. I wanted, to finish the game as planned, but reality bites. We have less than 24 hours to wrap up, and we still have some asset integrations to do. I slept around 2:30 A.M.

Sunday, January 25

It’s the last stretch. The animations are done for the tutorial level characters, so I integrated them accordingly. I needed to trim the colliders of the character sprites since there are cases wherein the character collisions were too sensitive that they are triggered even at a considerable amount of distance. Updating the tutorial was fast enough, especially that Dino got used to manipulating the tool and levels. Too bad, this wasn’t the case with the second level. The tutorial level only requires the referenced sprites to be replaced. Add the environment objects and it was good to go. However, the second level uses a different set of tile images, so the level had to be reconstructed. I should’ve prepared the level for such requirement, but I was tired to make the adjustment. I still regret that I haven’t done that, but time is running out, so just utilize what we have.

Tutorial Stage of Fate Marks the Spot

Tutorial Stage of Fate Marks the Spot

Ej and Simon were preparing the game page needed for our entry. With less than an hour left, the second level was constructed. Just when I thought I can proceed with the win and lose condition prompts, Dino observed a bug. The collisions were not working at all. Darn, what do we do now? I was cursing like crazy trying to figure out what’s wrong. Are the colliders set to Trigger? Yes. Does each object have a rigidbody (technically only one of the colliding objects are required to have such, but what the hell)? Yes. I’m running out of ideas. Out of desperation, I looked at the sprite collection of our characters, and there I found the culprit. Not all of the animation frames have a pre-defined collider. I immediately updated all the involved sprite collections. The losing conditions are now working, but the winning condition, still to no avail. Have to ignore that part since the important thing is that the level is still playable. I just have to tell the players that they’ve accomplished their goal.

Less than 15 minutes left, and I’m struggling to implement the win and lose prompts, as well as the necessary scene transitions. 3… 2… 1… I stopped coding and began to build our game. I finished the code, but I haven’t tested it at all. It was a make or break moment. If the prompt doesn’t appear or the scene transition is not triggered, the game won’t present all the levels, and worst case, we have to present it with a Unity editor. The build was created. I ran the game and the tutorial ran properly. Now, time to trigger the losing condition. After 1.5 second, the prompt appeared. Thank goodness. We proceeded with testing the winning condition. The prompt appeared. Wait for it… the second level faded in. I exhaled a big sigh of relief. That last piece of code wasn’t tested at all. I’m so thankful that it worked when we needed it most.

Post-Dev Proper

It’s time to showcase the games. They all look interesting, spanning various genres. Since time is limited for the playtests, I just played them at home. For the demo, I made a build for laptop and Android tablet (multi-platform made easy, thanks to Unity). It never fails to make us happy when we see other people enjoying our game. The second level was hilarious since the obstacles involve two rivals and an ex-girlfriend, and the players have unlocked different scenarios, some of which had totally surprised us. Shortly after presenting the games, the fun awards were given and then proceeded with some talks from the event sponsors.

I was more tense compared with my past game jams due to that photo-finish coding moment, but a midst the stress, pressure, and lack of sleep, I seriously had fun. I’m proud of our game and proud of our team’s effort. To Team Eat ‘N Run V. 2, good job guys! (~^_^)~

Our Game: Fate Marks the Spot Download the game here –

Team Eat ‘N Run V. 2

  • Ej Lim (Level Designer)
  • Simon Lim (Sound Designer)
  • Dino Diaz (Level Designer)
  • Aileen Martin (2D Artist)
  • Felix Palabrica (Programmer)