When first learning to make games, I think it pays to begin by re-creating some of the classics. Think about it, a lot of those old games were made by one person, on a very small team that didn’t have access to the tools you have now.
You’ll learn a lot of the knowledge first hand this way. How do you handle game object updates? You understand the idea behind it, but implementing it is another beast. What about game states, and transitioning between them? Sure, it sounds easy, but getting that into a game is a whole other beast. The first few games you make should be simple affairs so that gameplay and design don’t get in the way of implementing what you’ve learned about.
And that’s what makes classic games such a great idea to develop. You don’t need to worry about the gameplay or the game design. That’s been done. Everyone knows how to play Pong. Everyone knows Asteroids. You don’t need to spend mental effort and time, the rarest resources for hobby developers, coming up with something interesting (Pong is interesting!).
So if you haven’t already, here’s some games you can make, along with some ideas to spice it up.
Pong
This is the game to start with. Pong. Classic two-player Pong. You don’t have much in the way of graphics, you don’t need special effects, sound is just a bouncing ball sound, throw in some music that never stops playing. There’s not really an options menu that you need to have. Two-player Pong doesn’t require any A.i. programming.
Stretch Goals
- Special Effects when you hit the ball
- Improved ball physics like angular velocity and friction so the ball can curve in the air
- Mouse controls so the players have finer control over spinning the ball
- A.I. with varying difficulty (probability of missing the ball, probability of spinning the ball)
You can get started right now and learn how to make Pong in this article series.
Breakout
A step up from Pong. Breakout can be considered “Pong++” in a lot of ways. You still have a bouncing ball, that hasn’t changed, the physics of it remain the same (it makes contact so bounce the other way). You still have a paddle that the player controls, except now it’s single player. The player still loses if they miss the ball. A lot of this can be transferred from Pong into Breakout with (hopefully) minimal effort.
The biggest thing is those blocks that you’re destroying. That’s not a lot of difference to Pong, but this small amount of difference gives us a whole new game.
Stretch Goals
- Special Effects for hitting the ball and blocks
- Special Blocks that change the game when you destroy them, like flipping the screen vertically, slowing the ball down, speeding it up
- High Score screen
Asteroids
Now things are getting a little more interesting. We’ve got moving objects! Your ship is controlled via thrusts, which adds a whole different way of looking at player input (the player avatar continues moving after the input event is over). Collision is bit different now because everything has an arbitrary position rather than the boundaries of positions we had before (for the most part).
Asteroids and that little U.F.O. can move outside of the players view, so that’s a new thing to handle as well. Projectiles and their velocities need to be tracked. This is definitely a different game than what we’ve made before. You’ll find that recreating Asteroids will take you a lot longer than Pong or Breakout.
Do yourself a favour and manage your scope, and plan out your game. Learn the 5,1,1 method.
Stretch Goals
- Sprite-based asteroids that rotate through the air
- Power-ups that add additional guns/lasers to your ship
- U.F.O that fires back at you!
Galaxian / Galaga
Now this is getting serious. We’ve got levels/stages that increase in difficulty. Multiple enemies. Patterns that enemies follow. Power-ups for the player.
It’s hard to make a Galaga that isn’t fun to be honest. One of the more interesting aspects here is the data behind the game. It’s not enough to just have enemies and patterns, they should come consistently in the same patterns so that players can learn the levels. This means defined data that you can store in files that the game loads.
Stretch Goals
- Boss enemies at the end of stages with multiple “segments” that need to be destroyed
- Have the game play itself in the background of menu screens (game recording!)
- Massive power-ups with multiple special effects
- Transition to 3D meshes in an otherwise 2D view
Mario Brothers / Alex the Kidd / Metroid
Now it’s time to make a 2D side-scrolling platformer of some description. You don’t need to re-create a classic game at this point, just make something where you shoot enemies, or jump on them, or something.
What you’ll be learning now is level-design and game-design. These are unquestionably very important things that you’ve only brushed against so far. In fact, you’ll need to build an editor, and that’s why you’re making a game like this.
Tool development is at least half of gamedev. It’s one thing to make a game all in code, it’s another to make an editor. Once you’ve made an editor and you see how quick it is to churn out new levels vs the “in code” way you’ve been doing it so far, you’ll never go back to the old way again.
It will also help you architect your game engine and game objects correctly. Now they need to interact with an editor, and there needs to be data behind it that is saved and loaded. You also have much more important collision now as player sprites need to walk on tiles etc. And the input for the player needs to be precise, bad controls in a platformer will kill the fun.
Do not underestimate the amount of work a game like this will take you.
Stretch Goals
It’s already a stretch to get this game completed.
If you manage to make the above games, and do some of those extra bits, you’re well on your way to making your own games.
If you do, drop by the forums and show them off.
At this point I believe you would have the skillset to tackle your own super-cool ideas for games that have never been done. New mechanics, combinations of mechanics. There’s a lot of ideas floating in your head, and now you have the skill and appreciation of the effort needed to get them done.
I hope this helps someone get started on the path of hobby game developement. Drop me a line if you create any of these games so I can play another Pong clone (I’m still looking for the pinnacle of Pong games).
Hi Deckhead, thank you for post!
Try please my Pong clone game,
App Store:
Alphabet Ball Game: https://apps.apple.com/us/app/id1263912908
Google Play:
https://play.google.com/store/apps/details?id=me.varton.Alphabet_Ball&hl=en
Thanks 😉
I wouldn’t call it a Pong clone, more like Breakout but it’s fun! Great work, let me know what you make next.