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 – http://globalgamejam.org/2015/games/fate-marks-spot

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)

My Global Game Jam 2014 Dev Diary

So two weeks ago, I joined the Global Game Jam at Globe Labs Makati together with my former colleagues in Anino Games. This is my third time to join the event and just like the first two that I participated,  the games that were made by the end of the event never fail to impress. Now that I have a blog, I decided to make a dev diary of the 48-hour experience.

Friday Night

Together with my teammates, we went to the venue to find out this year’s theme and to have dinner. We were surprised when we found out what the theme is:

 “We don’t see things as they are, we see them as we are.”

Really? Two years ago, the theme was Ouroboros, then the following year it was the sound of a heartbeat. This time, it’s some sort of a profound quote. To be honest, I was somewhat clueless on how to create a game based on that sentence. It just seems so vague back then. After dinner, part of the program is for each team to brainstorm with other teams to share ideas. Probably, this is to seed more creativity for the participants. We came up with some ideas and I represented my team to pitch a top down action game where the character climbs consecutive ladders that always diverge into two paths wherein each path will give a different view of the player’s character. The path includes choices such as Good or Bad, Half-Empty or Half-Full etc.
After all the pitches, our team proceeded to finalize our actual game concept. The game will feature two characters. One is a blind man (Rufus) but possesses a third-eye to see ghosts; the other one is a woman (Rafina) can see. The objective is to guide the characters to their way back home. There will be two types of obstacles, the ghosts and the morphing pit which can only be seen by Rufus and Rafina respectively. This means that the player can only see one type of obstacle at any given time. It will be a top down action game and we decided to add another type of controller other than Unity’s default keyboard controls, so we will use this…

XBOX360 Controller Mapping for Unity – Courtesy of wiki.unity3d.com

This is my first time to program a game with a controller peripheral, and I’m so excited to try it out. Good thing Unity already has support for the XBOX 360 controllers so it took me about 5 minutes to implement a test setup. Thank you Unity V(-_-).

Saturday Morning

Now that we have the game concept and mechanics all set, it’s time to proceed with a prototype. For my side, this is my checklist:

  • Tile-based movement
  • Shifting views and other control-scheme related features
  • Obstacles
  • Tools
  • Integration of Final Assets

While I was doing the initial prototype, our designer looks for sample games with some similar gameplay to get some ideas and also helps our artist get some pegs for our game’s art style. It took me until lunch time to implement the tile-based movement and the basic control schemes. I was having some trouble with the stability of the controller-based inputs.

Saturday Afternoon

Next in line would be the obstacles. I started with ghosts which has a basic patroller-AI. It just moves back and for at a designated number of horizontal grids. When the characters enter the ghost’s detection range, the ghost will begin to chase the characters. At this point, the player can still escape the ghost due to its slow movement speed. And then, I implemented the morphing pit which is easier to program compared to the previous obstacle.
Meanwhile, our fellow colleagues from another team were not able to continue with their entry anymore due to some unexpected circumstance, so they decided to help us instead. Yay! More designers and programmers, more help, more fun! Next on the list was the tools. If you’re wondering why would I consume some time on tools if we only have 48 hours to implement the game, well actually it’s for a better investment. Our game’s challenge and fun factor greatly depends on the level design. With this, we need a way to rapidly create contents to produce more levels moving forward. It will take some hours to implement, but after that, our designers can apply their designed levels with minimum programming assistance.

Saturday Night

It still took a couple of hours before finally finishing the tools for our game. Good thing our designers have already started designing the first couple of levels, so all they need to do is apply those in our actual game using the editor scripts that I’ve written. I’m so glad Unity has support extending the editor’s feature through scripting, so the designers don’t need to use additional software just to create their designed content.
Meanwhile, our artist had already created the initial assets for our game, including the sample sprite animations. Here are the concepts for our characters.

Initial Concept art for Rafina courtesy of Aileen

Initial Concept art for Rafina courtesy of Aileen

Initial Concept art for Rufus courtesy of Aileen

Initial Concept art for Rufus courtesy of Aileen

In the end, the art style evolved based on the game Don’t Starve. You’ll see the final product below. After using the tools to test the first design, we looked for some improvements and there were few including the change in the control scheme and camera view. I worked on the bugs and the team’s feedback until the end of the night so that tomorrow it will just be the sound and integration of final assets.

Sunday

I was able to finish the proposed changes, so I went on with the sounds. Our sound designer managed to create a beautiful theme for our game. He also made some cool sound effects that greatly improved the gaming experience. Just in time, our artist prepared the final assets and animations. My fellow programmer was also able to create a cool shader which changes the hue of the images to apply day-to-night effect. After all the integration was done, our designer built the levels for the game. They were able to create four levels which I think is impressive, considering the time that we have. Tests here and there, some minor tweaks with control responses until we’re satisfied. We’re having one more problem… so what’s the title of our game? Well, thanks to our avid DotA players, we were able to come up with this…

True Sight Title Screen courtesy of Aileen

True Sight Title Screen courtesy of Aileen

Finally, all we need to do to wrap up our submission is to package our source, build, artworks, and press materials according to Global Game Jam’s instructions. Oh, we also need to make a sample gameplay video. Good thing there’s Screenr to do the job. After a minute of recording, here’s a preview of our game. ^_^

After uploading our submission, we went to Globe Labs for the presentation and awarding (for all the participants on the said site). In the end, our game was nominated for Best Art, Best Design, and Juror’s Choice. Another Game Jam has ended. Another achievement unlocked. To all my teammates, thank you very much for making this game possible. I’m really proud of our work. I hope I can work with you guys next year! For those who want try our game, here’s our game page. (~^_^)~

Team Eat and Run: Aileen (Artist), Dino (Designer), Mop (Designer), Me (Programmer), Gats (Programmer), Kane (Sounds - unfortunately he's not in this puicture XD)

Team Eat and Run: Aileen (Artist), Dino (Designer), Mop (Designer), Me (Programmer), Gats (Programmer), Kane (Sounds – unfortunately he’s not in this puicture XD)

One Game A Month? Challenge Accepted!

One of my goals for this year was to bring my (game) ideas to life. I’m now working for a video game company which is my dream job, but I love to develop on my own game ideas, so I join game jams and other contests as much as possible. My co-worker who is also dedicated in joining game jams alternatdev introduced me to a site called onegameamonth. As the name suggests, your goal here is to make one game per month, so you must consider the time constraint when developing your own game. Make sure that you design your game to fit with the amount of spare time you have.

Rules

There are none, and that’s the beauty of it. The founder McFunkypants intended to make this a fun activity, and he sees no fun in policing each participant, so he decided to trust each of them (yep that includes me). You have complete freedom in choosing your own tools to develop your game and even the target platform. In fact, you’re not prohibited to venture outside the realm of video games. You can also create card games, pen and paper games, board games, whatever type of medium you prefer, as long as it can be identified as a game. Porting and sequels can also be considered as a new game, so if it makes it convenient for you, then you can choose this development path.

Ownership of the Game

You own the copyright of the game. You can sell it outside if you want or monetize it in any way you see possible. The games can be distributed outside the site. The entries may also come from your previous game jams like the one I made last Global Game Jam which served as my January entry.

User Profile

You need a twitter account to join the challenge. Your games will be posted, separated by month. The activity has its own gamification system such that each participant has a set of achievements fulfilled by specific user actions. The achievements range from a simple profile update to submitting games for several consecutive months. Your profile also has its own level, which increases by gathering experience points from achievements that you unlock. Isn’t that cool? (~^_^)~.  You can even post for other roles that you need for your game. If you’re lucky enough, someone from the community might offer his or her help.

Some of the achievements that are available as a participant

A User Profile in OneGameAMonth has a record of achievements fulfilled by completing some user actions and submitting your games.

 

To be honest, I’m having a hard time keeping up with the tight schedule. After all, I have a full-time job, a blog, and some contests to participate. However, the satisfaction of finishing a new game and the improvement it brings to my game development skills are enough to keep me motivted until my twelfth game.