I have read a few books, many articles and countless blogs about game programming, but still don't know how to program a game. I think I've stumbled on why: I don't know what basic skills I need and how to use them. As everyone keeps telling me, games are different than event driven programming. I've successfully created database programs, file sorting and renaming programs, horoscope programs, etcetera. I do have a reasonable understanding of C#.
What got me thinking about this was a post about a guy who wanted to make a Pacman clone. Someone said the easiest way would be to make it grid based. I didn't know what that was. I've read three programming books and they never talk about breaking down your screen into "cells" and putting those cells into arrays and mapping where you can and can't go on the screen via the values in these arrays.
That makes me wonder, "What are the most common ways of getting a level in a 2D game on the screen?" (it actually seems easier in 3D)
Then the posts went on to collision detection and why the grid method alleviated certain collision detection problems. So, then I ask myself, "What are some of the most common ways of handling collision detection in a 2D game?"
Do you see where I'm going with this?
Every trade has a base set of skills you need to know to work effectively. What skills do I need to know to create games effectively? I can't learn what I need to know if I don't know I need to learn it.
I propose a list of common game programming tasks, list three different ways of accomplishing that single task, with the pros and cons of each method. I haven't listed any of the most common tasks here because I honestly don't know what they are, nor what to learn first and then build upon in sequence to make it effective.
Using the aforementioned Pacman example, I now know to research the "grid" method. A patiently explained detailed example of it would be great, but if nothing else, I know what to start looking into.
If all goes well, this could be the start of a great way to educate others on what to do after you've finished that beginning programming book :-)