I have been trying to make a list of games that would be a good path to learn how to program games. I've just only started and have come op with the list below. What i am hoping to do is make some tutorials using these games, and even include the different "disciplines" that have been "added" recently to GDN in a very structured way, e.g. 4-way controls, 8-way controls, making an object follow the mouse, displaying a health-bar, game objects, movements etc. etc.
Maybe the .tut framework would be a good guideline to follow. Anyway, what do you guys think about the order and about the concepts i have noted with each new game? Are there any games you would recommend instead of those i have below, any other order, any other subjects to focus on at each game instead of what i have written? … i appreciate any feedback :)
A path to learn game programming.
Pong
The very basic stuff such as displaying some graphics, the main loop and introduces keyboard input (or optional mouse?) and a primitive computer AI that just follows the ball.
- Graphics
- inputs (2-way vertical slider controls)
- Very primitive A.I.
- Keeping score
Memory
The concept of a model of the "world." The model of the game state with an array representing the table of pictures/cards. Also introduces random numbers.
- Displaying graphics
- Keeping score
- Basic game-logics control
Snake
Collision detection on the model-level (not graphics level as in pong) and timing. 4-way control and movement.
- collision detection
- simple playfield
- 4-way controls
Or optional: KTron (two snakes where the objective is to block each other)
- Very similar to Snake
Space Invaders
A good base for introducing custom data types (structures or objects) and some more advanced collision detection and controlling many objects at the same time using iterations.
- Objects/User-defined Types
- Iterations
- 2-way horizontal slider control
Tetris
(why does it make sense to make Tetris at this stage? What does it offer on the learning curve?)SameGame / KSame
Traversing the game-model finding same-coloured balls that are connected to the clicked ball. Maybe recursion would be well introduced here.
- Traversal (Recursion?)
Asteroids
Introduces a more complex world where objects move "freely" as well as rotations and some more complex math.
- More advanced collision detection
- More complex object movement and control ("Physics")
- Angles and math (trigonometry)
- Rotations
4-in-a-row or KLines
I don't know which of these is easier to make first. 4-in-a-row is a zero-sum two player game, so the A.I would consist of maximizing the computer's result. Both will introduce some kind of traversal (more complex then just the connected balls of SameGame above).
- Seem to be similar. One finds the best move, the other finds if a ball can move freely to another location.
- 4-in-a-row presents the MinMax algorithm and game theory
- Klines introduced breadth first search. (probably easier?)
Pacman
Can offer a different level of A.I. then pong. Maybe perfect for introducing a finite-state-machine for the A.I. Will introduce data-representation of the levels, maybe a level editor.
- Level structure/design. A more complex data structure.
- A.I. (Finite state machines, chase and avade behaviour)
A Platform game
A simple platform game will introduce a scrolling viewport, collision response and using tilemaps.
- collision response (walking on platform not falling through)
- More advanced physics
- More advanced level structure
- Tilemaps
- Viewport
Racing
- Complex physics
- line-following A.I.?
RTS
- Hierarchical levels of A.I.
- A* path-finding
etc…