Getting Started with Game Development?
Knight2K writes "Recent articles about casual gaming have given me the itch to try my hand at writing some games. I haven't written any since my college projects, and they never followed any formal game design practice or patterns (unless it was unconsciously). I'd like to start just by writing simple board games and card games that my family liked to play that have no digital counterparts as far as I know. Eventually I might want to branch out and do 3D work. I mostly work in Java right now, but I'd re-learn C++, if needed. My question: what books would you recommend to a beginning game developer? Good introductions to game theory would be welcome, but also language or platform-specific suggestions are useful as well: OpenGL, Symbian, C++, Java, J2ME, etc."
Well, this isn't a book, but just as good. The Game Programming Wiki is a great resource for game programming in several major languages. There's also a very active message board that is extremely helpful.
My #1 suggestion would to get yourself a copy of Flass MX or something simular.
You number one roadblock will be graphics.
Flash is an excellent way to quickly prototype game ideas. And the more you use it the faster you can prototype ideas.
I think game design NEEDS to be fluid. You need to get something working play it, find out whats fun about it and whats not fun. Determine what works and doesn't work.
Prototype everything first. Then when you have a solid design of the game play and mechanics, you can start something a bit more serious.
And more than likely your prototypes will be acceptable flash versions, and you might actually have a finished product in Flash.
Now I've seen Everything
Possibly the best way to get started with OpenGL is the NeHe Tutorials. The articles are often written in a C or C++ style but most of them have been ported to tons of other languages and platforms. Check the ends of the articles for links to source for whatever platform you want to work with.
Hexy - a strategy game for iPhone/iPod Touch
There's also pygame which is a python interface to the SDL/OpenGL stack.
:)
Makes it easy to write some cool little games
I've written a small game that some folks find addictive:
.png and .ogg files directly... it just feels all warm and fuzzy :^)
http://www.nongnu.org/tong
It's from an old idea I had and was looking for an excuse to teach myself SDL, which some buddies and I had chosen for a much more ambitious game we're still working on.
We chose SDL primarily because it is cross-platform. I use and develop under GNU/Linux myself, but I want all my windows-running buddies to be able to play my games. OSX and even DreamCast porting is trivial, as SDL happily runs on those platforms and many more.
http://www.libsdl.org/
SDL is very well documented and very slick to use, even to a newcomer (so long as you do have some programming experience). I'm a C and C++ guy, and SDL works with those natively, but if you wish to stick with Java or any other such language there are appropriate bindings. I highly recommend the libraries SDL_image and SDL_mixer as well, for boosting image and sound loading support. (I love being able to have my game just load up
I subscribe to master Miyamoto's game design theories, which basically amount to making your game into its own little playground, running on its own rules and rewarding the player for being clever. Keep the controls simple; a person should be able to pick up and play. Now, my game Tong is pretty rough at first, so I maybe don't follow this thinking very well in practice, but the philosophy is an implementation of the old "Keep It Simple, Stupid" that you've heard so often and I think it's very sensible. Especially for budding game developers.
Even with a well-documented API and a clear idea of what you want your game to be, it's going to take a while. Get a demo of "stuff happening on-screen" with mock-up graphics to get a feel for how you're going to render things, then trash the whole thing and start building up all the pieces you need. If your strengths are with object-oriented design, figure out all your game entities in terms of objects that all inherit things like how to draw themselves. If you're more of a procedural programmer, and even if not, figure out your main game loop, what needs to happen every cycle and what can be called out in special cases.
Take your time, let it be a pet project. The last thing you'd want is to extinguish your interest by making it a serious commitment. Starting small and building up is an obvious and good approach.
Best wishes! Long live the independant game developer!
of course then I go and screw up #3. I should have said always switch, since you had a 1/3rd chance of being right when you chose your original guess, leaving a 2/3rds chance that you were wrong. Now the problem is reduced to two choices.. so you'd think that you'd have 1/2 chance of being right, but you don't.. the 2/3rds never went away, it just compressed down on to one door, so you should pick that.
this site explains it better than I can.
If you're not already used to programming in 3D, it can take way too much time to ramp up, find an engine that works how you want, understand it, and so on and so forth. Writing a 3D engine is also a massive task, and will probably kill your interest before you get around to actually writing a game.
2D is a nice way to go: it's a lot more fun getting so much more bang for your buck, without nearly as many content hassles either.
One cheaply available 2D engine that comes with source is from the good people at garage games, called Torque 2D. It's got a decent scripting language, and nice enough C++ code. If you don't want to re-learn C++ right away, you can accomplish quite a bit with only the scripting language.
There are probably some other nice 2D engines out there as well, so you can look before you buy. However, I'd recommend picking one and starting from there: it'll save you a ton of work, and you're much more likely to actually get something done.
One other possibility: I made a funnish GBA game in my spare time a while back. It just took a few weekends (and a flash linker from Lik-Sang), and the help of a couple friends. I never finished it, but it was a reasonable demo. GBA dev is slightly tougher than 2D dev with an existing engine, but the libraries out there make it really not too much worse.
Many people have mentioned SDL. You should also check out Allegro. It's a multiplatform game programming library.
http://www.talula.demon.co.uk/allegro
Coder's Stone: The programming language quick ref for iPad
Very few responses have actually answered this guy's first question: "What books would you recommend to a beginning game developer?"
Core Techniques and Algorithms in Game Programming. I own many game development tomes, and this one replaced 3 1/2 shelf feet of my reference material. This book contains everything the beginning competent programmer needs to get a quick start at programming any sort of game imaginable, and it covers topics from *useful* design patterns and data structures to shader programming.
Game Architecture and Design is another good book, but is a survey of information from design patterns, architecture, game design/ludology, project management, and business practices in games. Probably up your alley but not exactly what you asked for.
As for an introduction to game theory, none is better than Rules of Play. This book is the first extensive critique of the entire field of game theory as it is applied to game design that I have read. Lengthy, and it reads like a textbook (it was designed as one), but engaging.
Performing sanity checks on your own beliefs is vital in avoiding poisoned koolaid.