INFINIROOM Postmortem

Posted by
December 29th, 2016 11:01 am

Hello! You are now reading the post-mortem post for INFINIROOM, our Ludum Dare 37 game. In this post I will go into detail about what happened in each day of the Jam, and how we worked under pressure with tight time constraints.

This one’s pretty long, so click ‘Read More’ if you’re into that kind of stuff!

Day 0

We were all pretty hyped for this Dare – we haven’t made a game in more than 8 months and we were all anxious to actually make something after all this time. However, this time we knew we were going to be pretty limited with the time we had, because real life got in the way, so we met up at the studio apartment and went to bed early.

Day 1

We woke up at 5 AM and saw the theme. Right off the bat, we knew we loved it.

As you may know, I’m not very fond of past Ludum Dare themes, and seeing this theme win was an awesome little surprise. Usually we get so tangled with the theme and what game to make with it that we spend like half a day brainstorming, but this time we started working almost immediately.

We settled on a game where you play a party host, and people come to your house for a party. The game would be played from a side view of the house and your job would be to keep the party going and people entertained enough so that they don’t go into the one dark room in your house. What’s in the dark room? Nobody knows, nobody can find out.

IMG_7607

I wrote some basic movement and Mati & Itamar started drawing the level and party guests, but pretty soon we started realizing the idea was a little too ambitious with all the time constraints we had this time around. It was only 8 AM, we sat down to have some normal breakfast and started brainstorming for new ideas.

After a short while, Itamar came up with the idea on an infinite runner that takes place in one room, which is kind of the opposite of what infinite runners usually do, since these games usually span over infinite landscapes. The idea sounded awesome, and we decided to go with a “fuck it” attitude for whether we’d finish on time or not. We wanted to make a game, but we knew we didn’t have much time, so we had to stay realistic.

קונספט קונספט2 קונספט3

The rest of the day was some intense game-making: barely any breaks, working at full force to create something doable in the little time we had, because in the the next two days, we would probably have less than 6 hours to work every day.

At a certain point, I managed to write a basic engine:

Seeing that little guy run up the walls and flip to the other side of the room gave us all a boost of motivation and helped us finalize on our decision that we’re doing this.

The day was almost over, and at this point I implemented some of the art assets Mati & Itamar had made:

preview5

With high hopes, we called it a day.

Day 2

From here on out, things got much more stressful. I got out of work early because my manager was cool enough to let me, but it was still pretty late.

I spent my time working on implementing traps.

preview6

I only managed to squeeze in one type of trap into the game in this time, although we had many more types envisioned.

As for Mati & Itamar, they actually didn’t have much work left since the game, asset-wise, isn’t too packed. So instead, they helped to further design and visualize what was already in place, and the UI:

MOCKתinfineroom gameover mock

Mati actually made a custom (micro) font for the UI:

font2_strip11

I also used up the day to add the room-resizing effect and smaller things, like particles and screen shaking, and by the end of the day we had something much nicer-looking and closer to finished than what we had before. It was at this point that I realized that we can get this game to the finish line.

Day 3

When we woke up, our musician, Jason, had finished making all the sound effects we asked of him to do, along with an amazing soundtrack.

This day was the most packed, as I didn’t leave early, and I still had to fix many bugs, implement Jason’s sounds, and write the game’s AI (the one responsible for creating traps and resizing the room.)

I had spent a some time at work designing and planning the AI’s behavior so that I won’t have to struggle with it once I start working on the game. Basically, I decided the AI would have to check a few criteria when creating traps:

  1. The trap can be jumped over
  2. The trap is at least one third of the room away from the player (for planning jumps)
  3. The trap will not hinder the player’s flip orb
  4. The trap is not two blocks away from any other trap
  5. The creation of the trap will not exceed the number of allowed on-screen traps at the current difficulty

The next step was to allow the AI to resize the room, another important mechanic of the game. The way the AI does this is by deciding on a target room size (a width and a height) and then gradually resizing towards that room size, while also toggling between a large room and a small room after each target size is achieved. Additionally, when the room shrinks, it cannot do so by more than one or two blocks at a time, to prevent unfair deaths. To telegraph the player that the room resize is about to take place, Itamar created a slick, resizing warning effect that is overlayed over the impending changes.

The end result was this:

preview7

I tried exporting the game for HTML5, but Game Maker’s buggy collision system gave me the game a huge headache and made it drop to 1-2 FPS on web for some reason.

After some stress, we decided to simply drop the web version for now and to just finish up the game, and bundle it for release on Ludum Dare.

I implemented Mati’s font to keep track of score, along with a new background he had made, and some randomization for the level tiles:

preview10

It was past midnight at this point, and we were all exhausted, but content. We finally hit that “Submit” button on the Ludum Dare website and decided to call it a day.

 

What Went Right

  • Time management – It’s pretty rare that we feel that we have control over our time in a Ludum Dare, and especially with the tight time constraints for this Dare, I’m surprised we managed to pull through so efficiently. I think it had to do with the fact that the theme was so easy to work with.
  • Unison – We all had a pretty clear idea of what we were making, and there were barely any disagreements.
  • Polish – Always a good thing to have, especially for a game of such small caliber.

What Went Wrong

  • Missing features – We originally had plans for many more trap types – different boxes, floating traps, lasers – but  we just couldn’t squeeze them in with the time provided.
  • AI – I hate to admit it, but the AI is a bit rough on the edges. Unfair scenarios are rare, but they do occur every few playthroughs, which sucks to look at now.
  • Clarity – We’ve seen a lot of people struggle with trying to understand our game. The Flip mechanic was good in theory, but in practice we just made it too jarring to actually be intuitive to learn. We’ll learn from this mistake for next time.
  • Exposure – We’re really not sure why, but it seems like this game got much less exposure than any of our recent games, which is weird, because we still sent it to streamers and posted updates, but it just seemed to gain less traction. Perhaps it’s because this Ludum Dare was just smaller.

 

All in all, I think this Ludum Dare is one of the best we’ve had. Working under extreme pressure but remaining resourceful is something we’ve been always trying to maintain, and this time I think we really proved ourselves. Additionally, I think this Dare was extremely gratifying to make because of what happened last time. I want to thank Jason, our amazing composer, for doing a kickass job (as always), and Mati & Itamar for being so fun to work with.

Make games.

Thanks for reading!

PLAY/RATE INFINIROOM


Leave a Reply

You must be logged in to post a comment.

[cache: storing page]