Crash Course in Game Programming? 142
Lullabye_Muse asks: "I want to write a game program for an independent research class I am taking at my High School. I have until June to deliver a final product or a good demo. I'm somewhat new to programming and will be doing work at home, and at school (Linux and Windows, so cross platform OSS is best). What is the best language to learn to code games in, and do you have suggestions for any useful sites, on game programming?"
New To Games? (Score:5, Insightful)
If you are dead set on writing an entire game yourself, best of luck to you. Even for an experienced programmer, throwing together a game (or even a demo) in three - four months is a feat.
The best language... (Score:1, Insightful)
It's going to need to be simple.... (Score:5, Insightful)
Game Blender (Score:2, Insightful)
Keep it simple, it should be one level or two atmost.
Even things like shooting arrows at moving targets are fun, the arc of the arrow etc., teach you physics and for the player it takes time to learn, so they get hooked.
Have a goal, the user at the end needs to do something like rescue a princess or find treasure.
No OpenGL, SDL and C++. Period. That is simply impractical. You'll end up coding the engine and won't have time for art or game play planning.
If you really want to do something like that look at CrystalCore http://crystal.sourceforge.net/tikiwiki/tiki-inde
Re:New To Games? (Score:4, Insightful)
The author of this "Ask Slashdot" did not mention "First Person Shooter" or even 3D at all. And there are games which are very simple but still fun. Games like Pong, Mine Sweeper, Snake and many more can each be done in a couple of hours. There are even programming languages made for simple game development although I would prefer a "real" language like Java or Python. I once wrote a small game to learn Tcl/Tk and that was fun and I did it in less then a day.
thoughts from a teacher (Score:2, Insightful)
Some of my kids want to jump right in with a GTA clone or Zelda or something
Yaztromo, in a helpful comment somewhere above, mentioned starting with Blackjack, with some suggestions for going about that. An ASCII single-player version is relatively simple. Other possible intro projects would include some other card games, Mastermind, Simple Simon, Yahtzee, etc. Keep it simple to start-- graphics, sound, languages, even the computer are secondary here. Test as you go: in the blackjack example, get a card deck implemented first, then add draw/hold, then double, then split. Get something down on paper that a mindless automaton can follow and successfully complete it's task. Then substituting a computer for the dummy is simple, and programming is just translating your instructions efficiently. Once you have a project like this completed, you'll better understand game complexity, allowing yourself realistic goals.
Your final project could be something entirely different, or you could extend your intro project to include multi-player (hotseat and/or online), graphics (very extendable), or AI, which is also very extendable. And there's always optimization, which is infinitely extendable. The nice thing about this path is you know you'll have something to be proud of come June
On the language issue, I teach with Python. It's clean, powerful, and easy to learn, and my kids seem to like it. Use Pygame as well if you go this route. I introduce some of my more advanced students to Java later in the year (last quarter) if they're interested, which some like, some don't. I hesitate to recommend it if you don't have any previous programming experience, especially given your timeframe. However, if you are really interested in Java, consider trying this: the first Java assignment I give is the re-implementation of a previous Python project, typically something like one of the games mentioned above. This would give you a feel for both languages, though as a caveat it would take more time from your final project.
For resources, the Learning Python and Programming Python (O'reilly) books are pretty good
Make something you can be proud of. Good luck, and keep it fun.
Michael
MAKE A MOD - Unreal 2k4 or Neverwinter etc (Score:1, Insightful)
Why try to invent the wheel in a semester? These tools are made to make games. This is how the real world works except everyone uses professional grade middleware like Renderware, another engine like Doom3/Source/Unreal, or proprietary middleware developed in house like Sega and Nintendo.
Game developers spend as little time messing with the engine as possible. Unless you want to do something that's just never been done before or needs to run in a restictive environment (Palm, GBA), DO NOT DEVELOP AN ENGINE.