Your First Step to Game Development Starts Here

Published March 20, 2013 by Alpha_ProgDes, posted by Alpha_ProgDes
Do you see issues with this article? Let us know.
Advertisement

Introduction

This article attempts to answer one of the most asked questions on GameDev.net. "I am a beginner. What game should I make?" If you are a beginner at game development, you should definitely read this article.

Your First Step to Game Development Starts Here

You've learned a language. Skills are at the ready. Now it's time to finally create that game! After years of playing games and discussing graphics, design, and mechanics, the time to put the game that has been dreamt about on the big screen is now. That Final Fantasy 7 remake is the first game that needs to be made. The idea of making it an online multiplayer is also a priority. Why?

It would make the game better of course. Plus, everyone wants that feature anyway. Now the googling begins. What engine was it made from? What graphics does it need? Did it use DirectX or OpenGL or even Unity? Every new question produces two more questions. It gets to the point that the tasks and goal can be overwhelming.

But with ambition the goal can be met! Right? Unfortunately as many beginners come to find out, the complexity of a game can tamper ambition and in some cases completely put out the flame. However, this article will help you prevent that and also build up your game programming skills.

But first let's address some issues that a vast majority of beginners run into.

Many beginners ask what language they should be using. The answer is this: any language. Yes, that's right: C, C++, D, Java, Python, Lua, Scheme, or F#. And that's the short list. The language is just a tool. Using one language or the other does not matter. Don't worry about what the professionals are using.

As a beginner, the only priority and goal is having the tools to create and complete the game. The second priority is to improve your code and skill. We'll get into that a bit later. Remember there is no "which language is better?" or "which language is best?". The only question anyone with experience will ask is: "How much experience do you have with the language?". At this stage in the game development journey, familiarity and skill with whatever language you are using is more important than the language itself. This is an universal truth.

With your language of choice in hand, now is the time to choose how you will make the game. The choice normally is among a game development library, game engine, or a game maker. Which should you choose? If you are prototyping or are not a programmer, then a game maker would probably be the best choice.

Game makers (ex: Game Maker, RPG Maker, ENIGMA) are able to create games (which I list later on) similar to the games of the 8-bit and 16-bit era. Game makers do some of the heavy lifting for you (ex: loading/handling image formats, input handling, integrating physics) and allow you to focus on the game itself. Most, if not all, game makers have a language specific to them to handle more advanced techniques and situations. The language more often than not is similar to C/C++/Javascript.

Game engines such as Unreal, Crysis, and Unity handle all manner of games (ex: 2D, 3D, offline, online) and therefore are far more complex and in some cases complete overkill for the type of games a beginner should be making. Game engines should be used when you as a game developer have several games under your belt and fully understand the mechanics of making a game.

For most beginner game developers, especially those who are programmers, choosing a game development library is a good choice. It puts those programming skills to the test and allows discovery of more things about the language. Like the language, the library doesn't matter. Whether it's SDL, SFML, PyGame (for Python only), or Allegro, the library is just another tool to create and complete the game. Game dev libraries have more or less the same features. So whichever you pick will be fine to get the job done.

Finally after gathering our tools: language and game dev library or game maker software, we are ready to answer the most important question of all. "What game should I make?" For this question, the answer has to be approachable, doable, and for the most part understood. This is why the game that should be made should be 2D. Everyone understands 2D games. 2D games can be fancy but at its core they are basic with very few "moving parts".

Believe it or not, the previous question has a definitive answer. And that answer is Pong. Now you may wonder, "why?". Well, Pong is one of the simplest games known. The graphics are simple and the mechanics are simple. There's no guesswork on how Pong should work. Therefore it's the best candidate for the first game to be made.

Each new game that is presented in this article is meant to show something new and/or build upon what the last game taught you. The skills that are learned from each game become cumulative and not specific to just one game. So each game is a step up in terms of difficulty, but nothing a little brainpower and some brute force can't solve. Now I'll list some well-known games that will definitely help your game development skills and allow you to have actual complete games under your belt. I'll quickly point out some things that will be learned for each game. These games are:

  • Pong = Simple: input, physics, collision detection, sound; scoring
  • Worm = Placement of random powerups, handling of screen boundaries, worm data structure
  • Breakout = Lessons of pong, powerups, maps (brick arrangements)
  • Missile Command = targeting; simple enemy ai, movement, and sound
  • Space Invaders = simple movement for player and enemy, very similar to breakout with the exception that the enemy constantly moves downward, simple sound
  • Asteroids = asteroids (enemies) and player can move in all directions, asteroids appear and move randomly, simple sound
  • Tetris = block design, clearing the lines, scoring, simple animation
  • Pac Man = simple animation, input, collision detection, maps (level design), ai
  • Ikari Warriors = top down view, enemy ai, powerups, scoring, collision detection, maps (level design), input, sound, boss ai
  • Super Mario Bros = lessons of Ikari Warriors (except with side-view instead of top-down view), acceleration, jumping, platforms

The list shows games in terms of difficulty from least to greatest as far as programming them goes. There are games that others may suggest but these 10 games will definitely round out what you need to know in 2D game development. If you can make and complete these games, then games like Sonic, Metroid, or even Zelda become that much easier. Those games are just variations or extensions of what you have already learned.

Before I end this article, I would like to say something about completing the games. As I said above, your primary goal is making and completing the game. However, your secondary, and arguably just as important, goal is to refine your game. It's safe to say that 99% of programmers do not code Pong perfectly. Most likely your first or even second go around with Pong or Worm will not be a software architecture masterpiece. And it's not supposed to be.

However, to improve your code and therefore your skill, you'll have to submit code for a code review. As all will attest to, this is A Good Thing TM. Allowing others to proofread your code will give you insights on better structure, better practices, and dangerous code that may work now, but may crash in the near or far future. Being introduced to good advice early in your game dev journey will save you from sudden and unnecessary meetings between your head and the keyboard.

As you complete one game and move on to the next, do not kick that completed game to the corner. Go back (sooner rather than later) and refactor and improve the code. Doing so is proof that you understand the advice that others are giving you and shows that your skills have indeed become better. So in short, the process of making a game should be: create > complete > code review > refactor. Again, once you submit your code for review go on to the next game on the list, but remember to go back and improve that code after you get some feedback.

If you've made it to the end of this article, you now have a path to start your game development journey. This article is meant to be a guide and not a be-all, end-all to game development. Hopefully the advice given here helps others start to become better game developers.

NOTE: You can post code reviews in the For Beginners forum. Also, it is easier on the people checking your code if you post all the code in your post.

Article Update Log

26 Mar 2013: Grammar edits, code review clarification 19 Mar 2013: Initial release

Cancel Save
21 Likes 24 Comments

Comments

cozzie
Nice article, thanks
March 19, 2013 08:09 PM
codeincomplete

Great article, I think this is perfect advice...

After years of half-abandoned large game projects, I finally went back to basics last year with pong, snakes, breakout and others, graduating up to an outrun-style racing game, and currently poking around with a javascript version of gauntlet. I also wrote up some how-to articles if anyone needs help getting started with some of these.

I highly recommend starting out with these simpler, classic games, you get to iterate and improve with each one, and get a feeling of accomplishment from finishing each (although everybody's definition of "finished" might vary)

March 19, 2013 10:12 PM
slicer4ever

This is an absolutely great article Alpha, Every beginner should be made to read it.

March 20, 2013 12:29 AM
jbadams

I always recommend Pong as a first graphical game, as it has all of the basics needed for more complex games without many of the additional difficulties that can get in the way. It's also easy to expand upon it in order to create a "Breakout" style game.

Thanks for taking the time to share your thoughts, I'll try to remember this article next time I see a beginner looking for some direction!

March 20, 2013 03:13 AM
Serapth

It's a good article, with one small omission:

The only question anyone with experience will ask is: "How much experience do you have with the language?". At this stage in the game development journey, familiarity and skill with whatever language you are using is more important than the language itself. This is an universal truth.

I and many others would agree that language doesn't matter all that much, and if the user has prior programming experience, they should go with the language they are familiar with.

But... what if the user has no prior programming experience? Frankly that is the case most of the time when someone asks this question.

In this case, not all languages are equal, and this is when the fireworks happen. Getting into this subject without starting the language war is... hard. It would suggest adding a paragraph though saying those that don't know how to program, should learn how to program first *then* tackle game development. Or start with a dedicated platform like GameMaker, Squeek, (maybe?)Unity or a simple package like Lua + Love, if they want to learn programming while learning game development.

March 21, 2013 02:16 PM
bluepig.man

It's benefit for me,as l was just a beginer on game programming.Thanks.

March 25, 2013 09:03 AM
Stroppy Katamari
I think the list of suggested games would be greatly improved by adding an entry that comes even before Pong: any simple turn-based game.

All games currently suggested are real-time, which is a significant complexity step.
March 26, 2013 03:36 PM
Alpha_ProgDes

I think the list of suggested games would be greatly improved by adding an entry that comes even before Pong: any simple turn-based game.

All games currently suggested are real-time, which is a significant complexity step.

Suggestions?

March 26, 2013 10:20 PM
Inferiarum

Go would be an example.

March 28, 2013 11:53 PM
SpeedRun

Tic-Tac-Toe would be a good example to start out with.

Single player mode would introduce you to basic AI.

April 02, 2013 12:42 PM
Stroppy Katamari

I think the list of suggested games would be greatly improved by adding an entry that comes even before Pong: any simple turn-based game.

All games currently suggested are real-time, which is a significant complexity step.


Suggestions?

Lazy Foo suggests a slot machine, Blackjack and Connect Four in addition to Tic-Tac-Toe. Most traditional boardgames would be OK as long as you keep it a hotseat game and do not try to write an AI.

April 04, 2013 08:55 AM
PragmaOnce

Is the second game (worm) actually snake? The game where you move and eat food and get longer XD ?

April 05, 2013 12:49 AM
Strife 7

Nice article for beginners, thanks.

May 27, 2013 03:44 AM
Alpha_ProgDes

Is the second game (worm) actually snake? The game where you move and eat food and get longer XD ?

Yes, it is. I've always called it and heard it called Worm. But yeah, we're talking about the same thing.

May 27, 2013 04:09 AM
OreliesMarkes

Starting with http://processing.org/ is not such a bad idea as well. You start to program at the very begin,but most of the code you need to learn is easy and syntax extremely free. from start to finish you can lean and make a pong(without out AI) in around 8 hours if you are completely new and need to learn the basics. (Just said it will be very brute like,but like ProgDes said that you need to get something out, get advice and better yourself. So if you are completely new to programming or beginner try processing. (You will feel extremely proud about yourself after pong, trust me I am a doctor)

August 03, 2013 01:16 AM
username@gamedevnet

This article helped me. It's the right amount of honesty, encouragement, and information.

August 11, 2013 12:06 AM
Alpha_ProgDes

This article helped me. It's the right amount of honesty, encouragement, and information.

Thank you. I'm glad you found it helpful.

August 11, 2013 12:30 AM
BHXSpecter

Great article. The only thing I have a question about is what constitutes a complete game. I've noticed tons of tutorials teach to make a single level, but never teach more than that or don't really show how to do screens like the title screen, help screen, option screen, etc. So by complete are you simply meaning the gameplay mechanics, al a pong the paddles, ball, score, etc and not don't worry about the other things or by complete do you mean all the above?

Got to thinking. This is a great article, but everyone always says the 2D games to clone for learning. What about an article that advises on 3D games to clone when you are transitioning from 2D to 3D?

November 06, 2013 12:18 AM
gasto

Great article, I think this is perfect advice...

After years of half-abandoned large game projects, I finally went back to basics last year with snakes, ...

I think I have the highest score in you snake game.

February 08, 2014 09:47 PM
Abbraxar

Thanks for this sharing of wisdom, it's really usefull.

May 01, 2014 09:28 AM
ShrewdSpirit

Thank you for the great article

June 29, 2015 03:06 PM
Hashim Shafiq

Nice tutorial. Thanks a lot

July 24, 2015 03:50 AM
Alberth

Games you could add at the start:

Simon game ( https://en.wikipedia.org/wiki/Simon_%28game%29 ) Click on coloured rectangles in the indicated order

15 puzzle ( https://en.wikipedia.org/wiki/15_puzzle ) Shuffle numbered tiles until you have them in a pre-defined order

December 30, 2015 10:33 AM
charly8

I'm pretty sure that game development comes with a wide range of problems and complications, and in general, it's quite time-consuming. In my case, turning to RunYourOwnPokerSite.com was the best decision because I managed to avoid all of that, and all I have to do is customize the platform to make it unique.

August 09, 2023 12:24 PM
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!

This article attempts to answer one of the most asked questions on GameDev.net. "I am a beginner. What game should I make?" If you are a beginner at game development, you should definitely read this article.

Advertisement
Advertisement

Other Tutorials by Alpha_ProgDes

Alpha_ProgDes has not posted any other tutorials. Encourage them to write more!
Advertisement