I have always aspired to create games as a career, but that hasn’t always panned out. At college, I wrote my first video game from scratch - an aircraft landing game written in Visual Basic with questionable assets. At university, I worked for Jagex on projects that, while involving software development (and definitely surrounding me with amazing people from game development, facilities, and everything in between), didn’t touch the sides of actual game development. Currently, I work as far away from developing games as possible. Because of this, my confidence when trying to produce games in my spare time has never been great. 2026 is the year of the inner indie dev in me!

Don’t get me wrong, I have dabbled in some game engines in the past namely Unity and Unreal. However, with all the controversies of those engines I wanted to try something different which is when I stumbled across Godot. I was attracted by its Node system which shares some similarities to Unity but is completely Open Source. given my Software Engineer experience this means I can contribute to the engine or modify it as I see fit. But where do I start? What games do I create? Do I jump into the deep end and create my “dream” game?

The 20 Games Challenge

Challenge Accepted Meme Gif

After some research, I stumbled across the 20 Games Challenge which is basically a structured way to learn game development by building lots of very small games instead of endlessly watching tutorials.

The idea is:

  1. Pick an engine (Unity, Unreal Engine or in my case GoDot).
  2. Start by recreating simple existing games like:
    • Pong
    • Flappy Bird
    • Breakout
    • Frogger
  3. Gradually work toward harder projects.
  4. By game ~10 - 20, you should be capable of building your own original game without relying heavily on tutorials.

Each “Stage” of the challenge gives you a choise of two games of similar difficulty. Abit like a choose your own adventure book.

Pong

Cats ping pong meme gif

The two options for the first challenge was either Flappy Bird or the retro game of pong. I have recreated Pong before back in college in Visual Basic so I had a rought idea on how to get started.

I did cheat a little bit and used a video from Botnamix on how to bounce a ball in godot. I already knew how to change directions, velocities etc, but there are many ways of achieving the desired effect (For example, reading x and Y values or using a collision body and drawing walls). I chose to go with the collisionbody 2d method.

After that, paddles, scoring, menu system etc all fell into place. If you’re new to godot, I definietly reccomend doing the 2D beginner tutorial first.

Overall the game probably took me about a solid day of developing (I spread this out over a weekend, including writing this article!). I imagine going forward each challenge is going to get harder and harder (Thus taking more time).

I have a soft goal of completing a game every two weeks - though I have quite a few life commitments that might slow this down!

Issues

One small gotcha I ran into during development was using Signals. I had learned about them a few weeks earlier while following Godot’s beginner 2D tutorial, so I assumed wiring them up would be straightforward. However, I kept running into an issue where I couldn’t connect the Signal directly to the specific function I wanted inside my score label scripts.

At first, I thought I had made a mistake in how I was defining or emitting the Signal, so I spent some time checking the usual suspects - function names, node references, and whether the Signal was being emitted at all. Everything looked correct, which made the issue even more frustrating.

After digging into forums and documentation, I realised the problem was with where I was trying to handle the Signal. Rather than attaching it directly to the individual score label scripts, the better approach was to connect it through my canvas layer script, Hud.cs. The HUD already acted as the parent container for UI elements, so it made much more sense for it to listen for score updates and then update the relevant label text values.

Once I moved that logic into Hud.cs, everything worked as expected. It was a small issue overall, but it was a good reminder that even when you understand a feature conceptually, applying it in a slightly different project structure can still trip you up. It also helped me better understand how Godot encourages separation between gameplay logic and UI management.

Going Forward

There are a few features I would add if I were to continue developing this project further. While the current version delivers the core gameplay loop, there are several additions that could make it more engaging and replayable. This challenge was intended to make short games to get the hang of creating the mechanics - not a fully fledged project.

Powerups

Adding power-ups would make matches feel more dynamic and unpredictable. For example, players could collect temporary abilities such as spawning additional balls to increase difficulty, gaining invincibility for a short period, or temporarily increasing paddle size. These mechanics would introduce more strategic decision-making and create moments of chaos that make gameplay more entertaining. Perhaps I shall implement this in a future challenge whereby one of the options is to develop a similar game, Breakout.

Game timer / Alternative game mmodes

Currently, the game ends when the first player reaches 10 points. While this works well for a basic competitive mode, introducing alternative game modes could add more variety. For example, a timed mode could challenge players to score as many points as possible within a set period, while a survival mode could gradually increase ball speed over time. This would help improve replayability and give players more ways to enjoy the game.

Difficulty Scaling

An additional feature could be difficulty settings, particularly for single-player gameplay. AI opponents could become faster or more accurate depending on the selected difficulty level, making the game accessible for new players while still providing a challenge for more experienced ones.

Improved Visual Feedback

The game could also benefit from additional visual polish such as particle effects, sound effects, and animations when scoring points or activating power-ups. These small details would make the game feel more responsive and polished overall.

Online Multiplayer

A more ambitious future feature would be implementing online multiplayer functionality. Currently, gameplay is limited to local play, but allowing players to compete remotely would significantly expand the game’s potential audience and longevity. There also is the possibility to intregrate Steam multiplayer into this fairly easily - But this would require a Steam Partner account which I do not yet have.

Thanks for reading!

Thanks for taking the time to read my firt devlog entry. The idea of writing these is to solidify my learnings in godot aswell as get the creative juices going. I hope this has had some usefulness to yourself! Below you can find links to the finished project on GitHub.You’ll also be able to find the Itch.io link for the project whereby you can download the compiled copy of the game - Drop a follow to see future games I create!

Resources