Economic Bubble Burst – GGJ25 (1)

My friend Mauricio Betancourt, founder of Medellín-based gamedev company IndieLevel Studio, loves the Global Game Jam (he’s been participating for 15 years now). And for a second year on a row he managed to drag me into participating in a physical location… I won’t complain since I also enjoy the event, even if I always end up participating on an entry in parallel for greater creative control (this is only possible because of the more relaxed rules GGJ is having recently on the time frames, and because virtual sites exist, of course).

This year’s theme was “bubble”. Alongside Mauricio (acting as Programmer) were Jhon Restrepo (veteran gamedev, founder of RM2 Studio, acting as Producer), Kevin Parra (intern at ILS, acting as Pixel artist and animator, but in reality ended up programming quite a bit), Natalia Londoño (Software Developer, acting as Pixel Artist), Valeria Ortega (UX designer from ILS), and Juan Camilo Valencia (Programmer). Me myself, I was acting as programmer. All in all it was a pretty technical team. Since we didn’t have an audio artist, we were also joined by Modulab, a team that was helping many other teams transversally with that aspect.

We created an arcade game where you have to delay the dot com bubble from bursting by luring millionaires away with money, you can download it (for Windows and Mac) here

I figured last year I didn’t write at all about our entry: Laugh Please (oh man, that one really deserves a full post, I think all I have about it is my videolog from last year) but it made sense to share our adventure from this year, since it might be useful for future game jammers, so here it goes!

Before the jam

Mauro took the job of organizing a team about 2 weeks before the jam. During a business lunch were we met Panamanian gamedev Jose García, developer of Bug Tales, I touched based with him and we talked again about it, he wanted to confirm I was in, and shared an idea about luring kids in a park with soap bubbles to prevent them from bursting a giant bubble (and your score would depend on how much that bubble grew). I really liked that idea, much more than what we ended up doing, honestly 🙂

Photo courtesy of Frecuencia Gamer

I told Mauricio I was a bit hesitant to join this year because I already had a weird idea that I knew was going to be a hard sell for the team (and I didn’t really feel up to “defend” it or seeing it changed radically). That one ended up being Glade of Tranquility, the entry I developed in parallel of which I’ll write more about later.

Day 1 – January 24

I arrived a bit late to the venue due to work, however the team was already working in full swing, with Mauro bringing his good old Unity base framework for scene management in (a.k.a. the MauroX template), and there seemingly had been some brainstorming for the game name and mechanics. Coders and artists where working each on their own, but I noticed we were heading into the same direction as last year, where it seemed people was pushing on their own direction and missing the full picture of what was the goal, probably because the idea of the project grew organically and there were still some ideas flying in the air and decisions to be taken. So I asked the entire team to stop what they were doing, get up from their chairs and have a mini-sync so that it was absolutely clear for everybody what we were building. (I think that was useful, at least it was super useful for me).

The team – Photo courtesy of Valeria

We also took that opportunity to introduce each one, and I shared an anecdote of how I ran away in panic from my first GGJ in a physical venue some years ago.

Mauro worked on the foundations of player movement while Jhon worked on the bursting bubble mechanics (beside setting up some project management artifacts for the project), and Juan worked on the scene flow. We were of course were aiming to have a very basic game loop that could be played end of day 1.

Concept for the game

The artists came up with some concepts, and Kevin added base sprites for the player and the enemies (their appearance would basically stick until the end). Natalia also worked in a first version of the bubble sprite, while Valeria collected references for UI/UX.

I didn’t really do much on Day 1, beside installing Unity 6 and setting up the project.

Day 2 – January 25

Early in the morning, Kevin worked on the player shooting animation and the “money” particle system, including wiring everything into the game. He then went on to work in the enemy walk animations and movement (alongside Mauro). Later on he added the money bar which got spend when you “lured” the enemies, and more animations for in-game events.

My first contribution to the project was changing the camera from perspective to orthographic, to make movement away and towards the camera less awkward. Continuing on the visuals, I integrated some test sprites for the background and floor, so that the artists had a better understanding of the resolution and style for the assets they were going to need to produce.

I kept trying to organize the project by chipping the monolithic Main Unity scene into prefabs because we were already having some issues integrating the work done in parallel (I had a small sync with programmers laying out some rules to try to reduce friction and make the inevitable conflicts easier to solve, after having to redo my changes a couple of times). I was also constantly pulling from the main branch, and fixing bugs to maintain its quality.

Saturday Morning energy

Natalia worked on the background pixel art, following some references sent by Valeria. Later in the day they decided to re-do the bubble sprite. Jhon and Mauro continued working on integrating the bubble bursting its mechanic into the game flow. Jhon was also continuously taking a look at the increments of the game and putting some UX and balancing touches here and there (and fixing some bugs as well). Besides working constantly to keep the architecture and the file structure of the project tidy against the evil programmers doing dirty code, Mauro also added an initial implementation for the HUD.

What is a game without enemies? Juan worked on adding the enemy spawner controller. This was a key element to the actual game because so far we had focused on the individual elements; this was a key element to achieve the dream of a “Vertical Slice” by noon on Saturday (we didn’t make it). Later, on Kevin and Juan added the “limousine” animation and controller, synced it with the enemy spawner, and incorporated a new bubble visuals and animations, including some nice camera shaking effects.

I also took the responsibility for the audio aspects and its integration; Mauro had already interacted with Modulab and they had created some tracks already, so I jumped into it and plainly added a looping music track to the scene, and the sound effect from the braking limousine that brought the investors to the scene, as a starting point

I had to abandon the venue around mid-day due to a personal event; however, I continued working remotely and found out a bug that kept resurfacing. It turned out Mauro was deleting my fix over and over as it didn’t fit as a correct solution for him. We discussed quite a bit about effectiveness vs. correct architecture when it comes to decisions during a game jam. Nobody won the argument 😛

The game at the end of Day 2

Day 3 – January 26

Jhon pushed hard with the Onboarding alongside Valeria, it took them a big chunk of the day; at some point we realized instead of doing a lot of UI layout work in Unity, we could just have used an image exported from Figma or pre-assembled some other way, and paste it into the project directly instead of locating and resizing each individual element (which allowed great responsiveness to support different resolutions and aspect ratios but… ate up a lot of time).

John asked me to work in the “Results” screen, so I did that. There was a lack of clarity on the flow and I ended up replacing the previous, “Game Over” flow with it, so we had to do some back and forth. I create a minimal working version before moving back to SFX and Music, so Jhon picked up my work on this by end of the day to add some polish and flair.

Breakfast discussion about best approaches to architecture in a gamejam as well as the mandatory “what is correct MVC” arguments.

Kevin integrated the environment pixel art made by Natalia, and added animation for player taking damage (I think this one went unused) and losing the game (this one sadly is often missed because of the transition to the results screen). He also worked along with me to fix the game over/ results screen flow mess, and added an animation for the bubble machine. Finally, he did some last minute touches to the background, including an “Eat the Rich” animation.

I went on to integrate more sound effects, work in the sound mix with Modulab, and fix some wrong triggers. About 2 hours left, I was informed about a full-fledged “reactive music” feature that was designed (lack of communication! maybe I should have checked the list of tasks that was being kept by Jhon). The system would smoothly transition between different looping tracks based on the stress level of the game. Sadly, it was too late to incorporate it, and we even thought of scrapping it altogether (Jhon pushed hard for that, coming back at me with the same “sunken cost fallacy” argument I had used on him when trying to simplify the onboarding development). However, I decided to at least salvage some of the work that had been done and incorporate a full track made of all the different segments.

Juan continued polishing the enemy spawner while he also worked in some logic of the scene flow.

Last minute touches – It’sa gonna be great

We did some playtesting with random people in the venue, however we didn’t take any drastic design decisions based on it, because it was probably too late for that.

Also, what is a game jam without a frantic last minute fix? in this case it was my logic to stop the “money gun” sound effect; it was causing the entire sound system to stop, including the background music. I had to scramble to fix the Sound Effects Manager so we could just stop a single sound key. Interestingly we could have detected this previously if we were making more playtesting with the sound on 😀

What I think went right?

We managed to create a solid, (almost) bug-free, good looking game, which fit the theme quite nicely. Player input is simple and straightforward, and the UX is clear. Below the scenes, the architecture is quite well structured (which of course helped us make a solid game while coordinating the work of 5 (!) programmers in such a short time span.

We included some onboarding which is quite a luxury in gamejam entries most of the times.

What I think could have gone better?

The game is boring and too simple.

We didn’t have a devoted Designer role in the team, and I think it really showed up in the end results; Tis’ my worst gamejam nightmare: design-by-committee, but luckily this time it manifested as very shallow gameplay, instead of an unfocused mess.

Next year we should have someone fully devoted to Game Design, maybe that could be me if I manage to convince them?

Post the deadline, we discovered a single bug, when we tested on the Mac build in a macbook with a retina display, some UI wasn’t responsive to resolution and only worked on Full HD. Luckily this didn’t impact gameplay (but gotta test on 4K, 16:10, etc, next time!)

The Gain

My wife’s reaction to the gameplay was: is that it? 😀

Certainly, if you look at the game it’s pretty small, but I think that’s about the right size for a 7 people team for 2 days of work to wrap up something, decently, without risking sanity a lot.

So, if the game itself provides such a short gameplay, is working on it for two days really worth it? What did I gain from working on it? here’s some of the things I took away from the weekend which brought me joy

  • Hang out with nerdy gamedevs doing nerdy stuff that you normally cannot do anywhere else.
  • Get to work with people I knew and respected, but I had never worked with (Jhon Restrepo)
  • Seeing the work of new rising talents like Kevin Parra.
  • Meeting new useful contacts for future projects (Modulab)
  • Creating a game where I have minor creative input so I can focus on programming.
  • Stepping away from the office and the routine for a bit, to create a game.
Energy drink sponsored by Juan from Frecuencia Gamer (co-organizers of the venue)

Possible Next steps

I’m considering tweaking a couple of things:

  • Implement the situational/progressive audio as designed; the idea is to use different tracks depending of the level of “stress” of the game, and transition smoothly between them.
  • Improve the pacing of the game, make it a bit more difficult and interesting.
  • Add powerups and ammo so that the player has to make choices of risk/reward, and there’s more movement in the game area.
  • Remove auto-facing so you always shoot backwards.

Bonus Content

Here’s a videolog I assembled of my journey (in Spanish!) including a short gameplay in the end.

And here’s some casual audio of the team working (in Spanish as well). I just left the phone recording by mistake, but it was pretty cool.

3 Comments

Leave a comment