50 before I’m 50 – Release a video game

Warning: This blog post is long, winding and probably doesn’t make sense, but explains the last few weeks. If you just want to play MonoScale, click here.

One of the 50 before I’m 50 that I have technically done before is release a video game. Using Blitz Basic in the early 2000’s, I made a bunch of games. You can read about them here. Though, sadly, the games are no longer available to download (I must have removed them at some point). Sadly lost to time.

I’m older, and a bit more experienced in programming, so embracing my new-found sobriety, as the nights draw in I thought to play around with game development and try to make a video game.

Not wanting to let it drag on forever and to give myself some sort of deadline, I entered a Game Jam. Game Jams are you’re given a limited length of time to release a game. And like the time I signed up for a 5k, I signed up for a game jam without really any sort of experience in game engines. I’d played around with Godot a bit, but I was not too experienced with it and regularly hitting walls. There’s a physics based joke in there.

Anyway, I found a Game Jam I was interested in the concept of – a 1-Bit Jam. As well as a theme where the limitations were to graphics, it also gave a couple of weeks development time. I’ve seen game jams that last for 48 hours and they just do not sound fun. So I signed up, joined the Discord server, and readied myself for making the game.

The Idea

Before the Jam started there was a vote for the theme. As well as the restrictions you had to make a game surrounding a theme. I can’t remember all the potential themes, but the two that I remember were “Silhouette” and “Tower”, purely because I had an idea for each of them. Silhouette may get made later down the line, as I really like the concept, but Tower won.

As for an idea? Well, sadly I went for the obvious. I was ravaged with COVID and was watching the Olympics at the time. I got really into the Speed Climbing. I was fascinated by the speed they were scaling the walls. A simple climbing game was what I thought, climb the outside of a tower incredibly quickly. Rather than climbing, I thought of a grappling hook system, where you’re against the clock to climb a tower quickly.

With an idea in my head (actually two), I hoped either Tower or Silhouette won. Tower won, so I begun development.

Development

Although I’d been playing around with development in other items, I felt using Godot was the best tool for my needs in terms of familiarity and features.

The difficulty going from WordPress to game development is that – even with the current state of the community and the irrationality of certain actors – I’m fairly confident WordPress is never going to introduce a physics engine. Even though Godot does a lot of the heavy physics engine work (things like “apply force to this object in this direction” are one commands), it can be tricky for somebody that focuses on PHP and MySQL to get their head round.

Godot development uses “Nodes”. These can be anything and everything. So for example, they can be players, enemies, power ups etc. You code every interaction needed for the game. In this game, I had a couple of base nodes – the climber, and hooks.

The climber can fire a grapple. This grapple would have a max length, and the player cannot fire a grapple if one is already active. If the grapple is attached to a hook, then the player is pulled towards the grapple. In reality, a force pushing the player towards the hook is applied. Once the player reaches the hook, it is released.

It sounds complex, but the force direction and application is two lines of code, so I don’t have to calculate anything!

These nodes were then put into another node, a Tower node. Which adds a background and detects the player position. The hook node was set to randomly generate and pushed out onto the wall.

At the moment it felt like a wall, so I want to make it feel like a tower. This was relatively easily to do, as I looked at games like Nebulus to see how that was done. A brickwork pattern was applied to the background, and when the player hit collision areas located in the left, right and top of the screen, the tower scrolled left, right and up.

Look at all the collision detection!

Hooks were interesting, as to maintain a look scrolling the hooks was needed. This again was looping through each hook and moving it left, right or down. Should the hook scroll off the bottom of the page it’s deleted from memory and a new hook is spawned at the top of the page. Oddly, even though there were approximately 100 hooks on a 1500 x 1500 pixel area, there was no real slow down, and although you could get parts where hooks are clustered together and other parts of the tower are barren, it worked pretty well.

Finally, I had to introduce a lose state (which is the player falling off the bottom of the screen) and a win state. The win state was a bit of fun, a simple ending animation should the player go off the top of the screen when the height climbed was over 100m, the time recorded and a return to the title screen. This is where game development gets difficult as nodes are in effect wrapped into one other. A main game node (containing the player, hooks, HUD and background), a title screen (containing information and the high score) and an ending scene. One advisory I saw about Game Jam entries was “make your game fairly easy”. Send the punter home happy, show a lot of your content early and often. I imagined most people would have played my game at maximum two times, so I set the height of the tower at 50m (I struggled to complete it at 100m) which should offer enough challenge, but not too difficult.

The game was actually built relatively quickly – I did use ChatGPT to format things I didn’t really understand but no AI was used in the art or music assets. I think in total about 10 hours to take the idea to completion.

Polish

Once the game was finished in it’s most simplest form I began thinking of ways to polish it. The first was improving the sprite work.

I found a tool – Aseprite – for the sprite work. I felt confident enough in my abilities to do some basic sprite work (soon to be misfounded). Sure enough, after about an hour and a bit I managed to get a basic tower built and graphics. It’s incredibly powerful, Aseprite, but not really had too much time to play with it.

One thing I did struggle with was the people, as I’m not great at drawing people. I used – oddly – the arcade version of Track and Field as a guide, and it didn’t turn out well. Poor Gwyn the Colourless was not looking well. In the end I left him looking a bit odd and weird in the game, as I did with Princess Blanc (the character you “rescue”). But we’ll leave it at that.

The evolution of the “falling” sprite for Gwyn the Colourless. I didn’t like the second draft, as he looked odd and too similar to the “going up” sprite.

One thing I am proud of is the tower effect. One thing I was worried about was the hooks and the fact they didn’t stand out on the tower. Thankfully with Aesprite it was easy enough to create a dithering effect, and the hooks were made a bit bigger and bolder so they stood out a bit more.

With the dithering, it also allowed me to put a round effect on the background. This was done with an overlay so it looked more like a tower that scrolled around the screen.

After the graphics was the music. I am not musically inclined so I approached the Discord asking if somebody would help me out. Thankfully somebody offered to help me out so that was fine. With the sound effects, I’d been playing around with Pico-8 recently and it has a snazzy sound effect editor. After a bit of time I had a game over, fire and connection sound effect ready to go.

Finally, I made a title screen, somewhat of an ending and cleaned it all up. The title screen I was most impressed with thanks to the starfield I created, that allowed me to drag and drop it into other scenes, set the width, height, offset and density, and put it elsewhere.

LOOK AT IT SPARKLE!

There were other ways to polish it. But I wanted to get it finished by the end of Wednesday 9th October, as I’ve two days before submitting it. Come the 9th, lateish in the day, I uploaded it and submitted in preparation for the game jam. The second suggestion was making your game playable online, rather than relying on people to download it. Thankfully in Godot you can compile your game to web so a quick upload to itch.io and the game was ready to play online. About 5 uploads in total for various reasons (the music wasn’t looping, “Fullscreen” would reveal my tower secrets, etc etc), but I got there in the end, and it was published on the 10th.

The polish work was the 20% of the 80/20 rule. Whilst the main game took me about 10 hours, polishing was around 15 hours.

Should you wish to play MonoScale you can do so at the link below. Let me know how you get on!

Post “Launch” Debug

There were things I wasn’t too happy with the game. I found it frustrating and it came up time and again in testing. I did think about reducing the height but I thought having an average time of 2 minutes to complete it is fine.

Nevertheless, it probably is too difficult. A new version would probably be slightly easier, with a bigger hitbox for the hooks.

Come Friday 11th October when the Game Jam was over the voting began. At this point you have a period of time to vote on other games. Here’s a bunch of feedback I received as well as the general comment of “It’s too difficult”.

An idea that was suggested on was camera work. I liked the end condition of throwing yourself off the top of the screen to win the game, so I wanted to keep that, but the scrolling up as you go up is a bit wonky. I’m not sure what to do here but one suggestion was maybe a zoom out if the height is under the 50m target height.

Quickfire ideas that I both a) like and b) take on board are the following:-

  • Sound levels are a bit off. SFX are a lot louder than the music (anybody who has watched me on Twitch will know that’s no real surprise).
  • A cylinder warp effect on the tower would definitely make it look more cylandrical.
  • Give the option to immediately retry the game, rather than push folk to the title screen.

One of the surprising bit of feedback was that Michael Klamerus featured it in his Indie Game Roundup on October 11th. I was not expecting any coverage outside the Game Jam itself. He praised the art (which is always a nice thing to hear as I feel like I can’t draw). Once again though I’ve heard the comment “I’m bad at this” which I’ve translated as “The game is too hard” for people who are incredibly polite šŸ˜Š.

Also, checking the stats I’m somewhere on Indienova, but I don’t know where as a search has proved fruitless and Google Translate only goes so far.

Finally, the nicest feedback I received was that it would make a perfect mobile game.

All of those are suggestions for what I’m wanting to do when I have a bit of time.

The Game Jam & Results

During the voting phase, you’re encouraged to vote on other games. Here’s some games I really liked were:-

One of my favourite games was “The Skyscaper Plagiarism Agency“, which is a simple one bit game that requires you to build towers to match another tower. Really good fun and it showed – was in the top 10 of the most fun games out there (Gameplay it came 7th). Would be fascinating to see a full version of this without the 1 bit limits.

Bab.le was a Wordle clone I quite enjoyed. You have to build longer and longer words. Again, an original take on the tower concept (granted, the idea of “Tower of Babel” isn’t exactly unique, but the execution was great). This game also did well. In the top 50 for both originality and gameplay.

Witow Hero was a thunder god playing on a tower, so had a basic kind of guitar hero clone, but the graphics and the music really appealed to me, as it was a gameboy aesthetic.

Spire Bound was another great game: a fun little Metroidvania game that had a nice pacing and you were never really truly stuck. Gameplay it scored well (again another top 50 game).

Finally, Escape Tower was a fun escape tower with an amazing soundtrack. Did get lost, and it wasn’t truly 1 bit in my eyes (there were discussions on how games should deal with transparency, and it confused everybody, so I don’t really blame the author, however it’s something that affected a lot of games, and that was the game jam’s fault).

Anyway, how did I do? After the voting period was over I scored the following:-

CriteriaScoreRank (out of 340)
Gameplay3141
Theme454
Originality3.273157
Art3.091171
Music2.727178
Uses 1 Bit graphics4.545198
Overall3.439153

Overall, it was a fairly average game that scored slightly above half way. Happy with that overall. It wasn’t the most original of course and it had some limits but after the first week it did seem to drop off in terms of popularity. I knew art and music would be my weaker areas (there were some areas I didn’t like about the music), so not surprised about that.

I was a bit miffed with the “Uses 1 bit graphics”. I’m not sure what knocked me down a point or two? Maybe I missed some pixels and they were dark grey, as opposed to black, or the side dithering? I don’t know.

There were things I should have done better. If I enter it next year it is to change the colour scheme. MonoScale doesn’t stand out with all the black and white entries. Maybe go for a Game Boy palette?

You can see MonoScale, or not, as it doesn’t stand out…

Conclusion

Overall, I really enjoyed my first game jam. Even if it became a bit all consuming at the end of it. The last couple of days I was pretty much finishing work and doing 2 to 3 hours on MonoScale, but I wanted to get it done and over the finish line in a state that I am proud of it. And I am. It’s not GTA7, but it’s my little indie game.

There’s a base for a game – a MonoScale 2 or “Deluxe” version, using the feedback shared above, and adding a few bits I didn’t have time for.

Finally, I’ve also found a new hobby. I already have game #2 on the go, which I hope to release before the end of the year. There’s a bit less pressure on me for that one.

That however is being worked on with less time pressure. Will shout about it when it’s done here, or you can follow my itch.io page here.

Leave a Reply

Your email address will not be published. Required fields are marked *