Firebat

Download Firebat from itch.io

Watch recording of Live Stream on Twitch.tv (Hungarian only)

March theme was: Kill it with fire. What could be better for this than a breakout game? But let me start at the beginning.

So it happened to be that the son of an old friend of mine contacted me that he would like to get into game development. As he never did anything like this before – well, apart from playing videogames – he would like to get into quality assurance and learning design. I suggested to him to participate in gamejams, looking up online articles and youtube channels about this kinda stuff so he can learn. I also mentioned HEJ on which I participate on a regular basis and explained how it works (that being of having a theme and one whole month to come up with an idea, coding and drawing stuff etc.). I also offered to team up with me, as I always do this jams by myself, but I almost always involve my darling girlfriend Allegra in the process to help me with some ideas, and level layouts. This time Chrisyss took up the mantle of testing and to add extra ideas into the project. When the theme was announced, and actually the last HEJ gamejam theme, Glitch, was also in force, we started to come up with ideas for both themes. Though I was almost sure we couldn’t make two games still I started to write ideas for both themes. Soon I could see that the Kill it with fire was the theme I would like to make. One of the glitch ideas was to make an endless runner that’s glitching out at some points. An other being a programmer, dealing with bugs, and QA members have to be tricked with pizza and cookies so they produce less bugreports. A third one was a top down shooter, where the player has to find ways to speedrun through the levels, and this ways was to be glitches (bad colliders, glitching walls, rocketjumps etc.). For kill it with fire one idea was to be with a fire demon, that leave a fire trail and the player have to lure enemies into the fire in order to defeat them. Another fiery idea was to be a god of an island, and that island is populated with indigenous people to worship (as a currency) this god. And when tourists swarm the island, the god could summon vulcanos to eradicate them. So having this much idea what could induce in my mind? A totally different idea, of course! I wanted to make a breakout game for a while in the footsteps of Arkanoid, Krakout and Traz, so when I envisioned a game like this with explosions and fire… I knew I wanted to make it.

I asked Chrisyss to make some layouts for about 20-30 levels as soon as I had the level size. This way I knew he could take a lot of work from me as this process could be time consuming. So I could have extra time to code stuff like bouncing. That was a nice dream, and here’s why: I had some general idea how to do it, so I started to make some code. It worked somewhat, but I wanted to see how others would do it, so I looked up Friendly Cosmonaut’s breakout tutorial, and I started to work on top of that. I used the vertical and horizontal component of the ball’s speed to turn the ball, but should it touch the inside corner of two collision objects it did some crazy things. Also, interestingly the built-in bouncing function didn’t worked as intended in my project (the ball bounced back on the same vector as it had when hit any of the surfaces). But it worked right away in an empty project. This is typical Game Maker thing that happens sometimes (just today, none of my controllers worked with GM games… I check on it tomorrow, hopefully a newly started system helps… edit: it helped). So I iterated on my code a couple of times, and it worked mostly, but sometimes the ball went inside the side colliders and went through it. Sometimes the ball went between two invincible bricks. So it was a bit trashy, and I seriously started to consider to say that this game is for Kill it with fire AND Glitch. But I checked further and it turned out that there is a bouncing function that uses solid objects. I never used that checkbox, and so now I did and Eureka! It worked!… Almost… good… The ball cannot touch any two solids, only one, meaning sometimes not touching bricks when it clearly should’ve, or resulting straight up bullcrap bounces. Still can go inside colliders and invincible bricks. Still at least bounces mostly to the right direction, so I left it as it is. Solids also made one interesting problem: I coded so should the player pick up a growth bonus next to the wall, the wall slowly pushes the bat out of the wall, so it wouldn’t stuck in it. After I checked solid on the collider, this stopped working. Only if I move it under one frame, hence it looks like it teleports a short distance. I coded other stuff too, only those had less problems.

The level designs started to arrive, and as I draw nice colorful bricks, I used those as inspiration to build the actual levels. I followed very closely the layouts, and instructions that Chrisyss gave me. He came up with the idea of the 3 hit brick that upon being destroyed take out all remaining bricks, winning the level. Though I used those sparingly, so much so that those was used only on 3 levels, and those become the boss fights.

So yeah, I coded a lot of things: backbround effects, a bunch of bonuses (extra ball, extra life, growth, haste, shield, sticky, breakthrough), a nice transition, an intro to make all this into a little story. And of course the gameplay extra: upgradeable ball. Every level has a number on the bottom: Bricks to upgrade. This number shows how much bricks should be broken to upgrade the ball one level. This number can be one, or 30. First it’s just a steel ball, dealing one damage to bricks (bricks having 1, 2, 3, and infinite HP/invincible) and then bounce back. The second level turns the ball into a fireball. This deals 2 damage: if a brick have 1 HP, it’s broken through, the ball won’t bounce back. If the brick have 2 or more HP it get’s damaged (2 HP breaks) and bounces back. The third level ball creates a small explosion on impact, that breaks 1-2-3 HP bricks, and the fourth level does the same but with bigger radius. Fifth level ball also create small vulcanos on walls, that spit out small fireballs. On sixth level the bat will have a vulcano too, and that also spits out small fireballs in every 2 seconds, helping to clear any remaining bricks.

As usual, Gábor Urbán gave home to the show’n’tell part of the jam on his Twitch.tv channel, and despite its obvious faults, he, and the people watching the stream liked the game. I am putting away this project for now, and I may revisit it in a (mach) later date. In conclusion: apart from the bouncing problems this become a really good little game, it has 30 levels, a story, excellent music by Andrew Sitkov. When you get the hang of it, it is fun to watch chaos on the screen with a lot of falling bonus, 5-10 fireballs exploding. You have to try the max upgraded ball and breakthrough bonus, it’s awesome to watch a small fireball breaking all those pesky invincible bricks in a line. 🙂