Just to give you some background info, I'm studying a programming major at a tertiary level and am in my third year, so I'm not a newbie off the street. However, I am still quite new to game programming as a subset of programming. One of my personal projects for next semester is to design and create a 2D platformer game with emphasis on procedural generation and "neato" effects (think metroidvania). I've written up a list of some techniques to help me improve my personal skills (using XNA for the time being). The list is as follows:

  1. QuadTrees: Build a basic program in XNA that moves basic 2D sprites (circles and squares) around a set path and speed and changes their colour when they collide. Add functionality to add and delete objects of different sizes (select a direction and speed when adding and just drag and drop them in).

  2. Particles: Build a basic program in XNA in which you can select different colours and create particle effects of those colours on screen by clicking and dragging the mouse around (simple particles emerging from where the mouse is clicked). Add functionality where you can change the amount of particles to be drawn and the speed at which they travel and when they expire. Possibly implement gravity and wind after part 3 is complete.

  3. Physics: Build a basic program in XNA where you have a ball in a set 2D environment, a wind slider, and a gravity slider (can go to negative for reverse gravity). You can click to drag the ball around and release to throw it and, depending on what you do, the ball interacts with the environment. Implement other shapes afterwards.

  4. Random 2D terrain generation: Build a basic program in XNA that randomly generates terrain (including hills, caves, etc) created from 2D tiles. Add functionality that draws the tiles from a tileset and places different tiles depending on where they lie on the y-axis (dirt on top, then rock, then lava, etc).

  5. Randomised objects: Build a basic program in XNA that, when a button is clicked, displays a randomised item sprite based on parameters (type, colour, etc) with the images pulled from tilesets. Add the ability to save the item as an object, which stores it in a side-pane where it can be selected for viewing.

  6. Movement: Build a basic program in XNA where you can move an object around in an environment (tile-based) with a camera that pans with it. No gravity. Implement gravity and wind, allow the character to jump and fall with some basic platforms.

So my question is this: Are there any other commonly used techniques that I should research, and can I get some suggestions as to the effectiveness of the techniques I've chosen to work on (e.g., don't do QuadTree stuff because [insert reason here], or, do [insert technique here] before you start working on particles because [insert reason here])?

I hope this is clear enough and please let me know if I can further clarify anything!

  • 8
    \$\begingroup\$ You should study all of them. \$\endgroup\$ May 31, 2012 at 23:33
  • \$\begingroup\$ Pretty much as @GustavoMaciel said. That's about the extend of answers we can give you to a question like this. It's fairly broad and it doesn't have a correct answer. See the FAQ about that. \$\endgroup\$
    – House
    May 31, 2012 at 23:52
  • 1
    \$\begingroup\$ But if this question is indeed broad enough to be considered "too broad", I'll delete it and ask a more specific question :) \$\endgroup\$
    – Djentleman
    Jun 1, 2012 at 0:08
  • 1
    \$\begingroup\$ Actually, game programming as a subset of programming I think game programming is a superset of all programming, like the epitome of programming. It spans the widest range of topics ever required. \$\endgroup\$
    – Jake
    Jun 1, 2012 at 5:27
  • 3
    \$\begingroup\$ I'm not trying to belittle game programming in any way and I definitely agree with you in general, but I'm just trying to be accurate with my terminology. "Programming" encompasses far more than just games, and that's all I'm trying to say :) \$\endgroup\$
    – Djentleman
    Jun 1, 2012 at 5:49

2 Answers 2


I think you are looking at it from the wrong angle, ie if you were planning a trip, you would be placing the horse cart ahead of the horses.

Game design is not about programming, some people enjoy programming and some programmers are in part responsible for great games but game design and more so indie game design is not about programming. It is about designing an experience, not about writing a game loop.

The fact that you can get to your goal by doing several things, drawing art, making music, designing game levels and character(monsters / traps) behavior and programming, does not meant that programming and game design overlap substantially.

2D game design

  1. Draw some mockups of the game and the levels of the game.

  2. Place the monsters inside those mockups.

  3. Make some music that fits the atmosphere of the game.

  4. Think how you want the monsters/traps/challenges to behave? write that down.

  5. Think up a short story if a story fits this game. Write it down.

  6. Making a serious game can be a lot of work, especially by yourself. Think of what you will need for the game and see if some of that code already exists or if there is an existing framework that does the work for you. Making a game from scratch does not make you a better programmer, it makes you *Waste time you could be investing in making the gameplay better. (nobody cares how good the code of a game is and how much of it you have written on your own, unless the code hurts performance)

  7. Like I said, making a cool game is probably lots of work, think up the reasons why you would be truly and utterly committed to making the game you chose, why is this game worth making and not some other game idea you have? Write those reasons down and start working on the game. :)

If you are serious about making your first game, start from what you want to make, not from some code demos. If you want to practice programming, write demos. Programming does not equate game making just like spilling water on clothes does not equate doing laundry.

Good luck


There is no good answer to your "question". Anyway, all the points you have mentioned are very important and some of them are not so "trivial" to catch. With that knowledge you will have the perfect starter kit imho.

You should change the title by "the perfect starter kit for 2D platformer" :)


Not the answer you're looking for? Browse other questions tagged .