The second game in "The 20 Games Challenge" is the classic Atari Breakout from 1976. Just as the challenge recommends, I was able to reuse a good portion of what was developed for Pong.

The 20 Games Challenge is a project that invites you to develop at least 10 classic games. They are organized in a way that their difficulty and scope increase as you progress, and at each level, two alternatives are offered. For example, at the beginning, you can choose between Pong or Flappy Bird, and in this second stage, the options were Breakout and Jetpack Joyride (a side-scrolling endless mobile game from 2011).

On the website, they recommend not getting bogged down by adding additional features but rather trying to achieve the objectives and moving on with the list as far as possible, instead of endlessly polishing these small games. In fact, they suggest not dedicating more than 20 hours to each and leaving them as they are.

I was convinced that even by just accomplishing the proposed objectives, it would take me much longer than that. However, each one has taken me about ten hours, approximately.

It's impressive what can be achieved with planning, and having a clear list of objectives, and STICKING TO IT. On the other hand, knowing that the finish line was approaching, the final part of the development could be described as... a bit messy. Some hardcoding here and there or functions that, for the sake of simplicity, are in nodes where they might not belong. Nevertheless, I am satisfied with the progress and the results so far.

Try The 20 Games Challenge!

Breakout (1976) Wiki


Controls:

  Movement: "A", "D"  or  "Left" Arrow , "Right"  Arrow

  "Escape" for in game pause menu

 * the "game over" and "pause" menus are mouse only


Goals:

  • Create a game space with walls and a ceiling.
  • Add a paddle that can be moved left and right via player inputs.
  • Add a ball that will bounce off of the paddle, walls, and ceiling.
  • Add square game objects (bricks) into the top of the game space.
  • Enable the ball to bounce off of the bricks. When the ball bounces, the brick should disappear.
    • Breaking a brick should add to the player’s score.
    • The ball’s speed should increase as bricks are broken.
  • The score should be displayed, as well as a life counter. The player starts with three lives. If the player misses the ball, a life should be subtracted. When all lives are used, the game ends.


Stretch goals:

  • Save the high score between play sessions and display it alongside the player score.
  • Add different colors to the bricks in the rows. (The original game was black-and-white, but had a colored film on the screen, simulating colored rows of bricks)
  • The paddle should get narrower once the ball reaches the ceiling.


I used this image as a reference:



unfinished:

While I added some functionality to vary the angle after the ball bounces off the paddle, depending on its position, there could be something similar when bouncing off the bricks to avoid certain repetition of movements.

Again, just like in Pong, some collisions sometimes respond strangely. Maybe the issue is with the Area2D and CollisionShape2D, and perhaps I should be using a completely different technique for this. (*Similarly to "Pong", I tried the properties 'One way collision' and 'One way collision margin,' and it improves things to some extent. Not always, though).

When switching to full screen with the ball in motion (or, during debugging in Godot,  by grabbing the window and moving it) a problem occurs with the updating of the ball's movement, and it can even disappear. I have no idea what it is. I don't know if it's some error I'm making, a project configuration issue, or a Godot bug. I'll have to investigate at some point.


fonts by Nimble Beasts Collective


Leave a comment

Log in with itch.io to leave a comment.