One of the best articles I've ever seen on getting started in game development is here: How do I make games? A Path to Game Development. I'll paraphrase the steps author Geoff Howland describes here.
You learn how to write games by writing games, according to this article. And the first game to write is...Tetris.
Tetris has all the basic elements of any game, such as the basic game loop:
- Read input.
- Update state of game with current input.
- Test for victory condition (filled line) or defeat (bucket overflow).
- Update display.
- Repeat.
You also don't need a lot of fancy artwork: anyone can draw a simple four-block tetramino. But do get your game into a good working state.
(Oh, and, of course, you can't call it Tetris, as that name is trademarked. When one of my coworkers at Durand built a multiplayer version of the game that ran over our MindWire platform, he called it Block Wars.)
Once you've mastered Tetris, you're ready for Breakout:
This adds in more advanced elements of collision detection and simple physics, to properly depict the motion of the ball and the paddle. It also gives you the concept of levels, which means you'll be dealing with how to save and load resources and switch between levels. The artwork still isn't fancy, though.
What's after Breakout? How about Pac-Man?
Now you're dealing with the need for AI to drive the ghosts, as well as some slightly more complex artwork and map layout. (A good article on the behavior of the Pac-Man ghosts is here: Understanding Pac-Man Ghost Behavior). Sound, too; where would Pac-Man be without some kind of "wocka-wocka" sound as you gobble down the dots?
And then build on your success by writing a "side-scroller" like Super Mario Brothers:
Now you have a few more things to deal with:
- More complicated "sprite" and "tile" artwork.
- More complicated interactions with the game environment: running, jumping, ducking, shooting. This implies needing physics to get these right.
- Your screen will need to scroll in at least one direction, and maybe two, and you'll have to deal with screen clipping.
- More complicated AI for the enemies, including "boss" enemies that require certain patterns to defeat.
- The game levels are now complicated enough that you'll have to make some sort of level editor, and determine how to store the level data for easy loading at runtime. (Your level editor will need a whole host of features in and of itself, including operations like "undo" and automatic backup of saved data...you'll thank me later. Or your level designer will thank you.)
- Now your game can incorporate a basic storyline, since you're actually going somewhere. ("Sorry, Mario! But your princess is in another castle...") And make sure to do something flashy when the player completes a level successfully; keep them working for those rewards!
Polish your games! They should include things like title screens, menus, help/introduction screens, reward screens, scoreboards, and so forth. Make it so they look like something you'd want to pay at least 99 cents for if you downloaded it from someone's app store.
Notice I haven't said anything about fancy 3D technology, like you'd find in DOOM, Quake, and so forth. Strip those games of their 3D trappings, though, and you'll find that they use exactly the same concepts that you'll be mastering by writing clones of basic 80's and 90's games. One must learn to walk, at least, before one enters the decathlon. :-)
I didn't say it would be easy, mind you. But nothing good ever is.