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.
I have never been a fan of learning how to do something by reading about it. The only way to learn good game programming, IMO, is to actually try doing it. That's how I started with the game in my sig and its been working so far. While not a book, may I recommend you take a look at the Simple DirectMedia Layer (SDL) library? It's free, cross-platform, and is really easy to learn to use. It's written in C, but there are extensions to it in other languages. Good luck!
Hero of Allacrost, a FOSS RPG for *NIX/*BSD/OS X/Win
I toyed with this myself. In my experience, it isn't the technology that's hard. Simple games like you're talking about aren't much different from any other apps out there, so just dive in and do it in whatever language you want to use. It doesn't take some kind of special training to code a card game if you already know how to do GUI programming.
The hard part, IMO, is the extra stuff like graphics and sounds. Unless you're talented in such things, making a game look and sound good is a real problem. It is especially troublesome if you don't know anyone who can do the artwork and is willing to just toy around with you for free. Good artists are expensive and games need to look good or most people will pass right over them.
The only technology that is really hard is the 3D stuff due to all of the math and such. However, there are so many libraries and engines out there (many free and open source) that most of that isn't an issue anymore and once again you're back to the art and gameplay being the hard part.
Just do it. If you run into problems, there's always Google. The best way to learn what you will need to know is to get started now and discover it on your own - that way you will not only know what doesn't work, but you'll also know *why* and that's an important element that can often go missing if you try to do it the "right way" from the beginning.
Hexy - a strategy game for iPhone/iPod Touch
you might find Game Coding Complete, by Mike McShaffry useful. I'm not very familiar with Java, so this may be incorrect, but in my experience C++ is the way to go for 3D graphics, and I do my sprite engines in it as well. If you're into OpenGL, I can't really help much, but I have seen some very cool stuff by my friends in OpenGL.
I hope that helps.
What is your target? Do you want to write a game for a Windows PC? If so, then maybe you should look into C# and Direct3D. If you want a cross-platform game that you can compile on Windows, Linux, BSD, and Mac OS X, then look into SDL and OpenGL.
. html
You might want to start here if you're going the cross-platform route:
http://www.libsdl.org
http://andrew.textux.com/tutorials/tut1/tutorial1
http://www.kekkai.org/roger/sdl/
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
You don't have to start with them but they are good challenges and will probably help you feel more confident about your skills. You want to be able to build a skeleton game quickly so that there's something to play, not a case of "at some point in the future..." Forcing the time pressure will make you really seriously consider which pieces of technology are essential and which pieces aren't.
Programming a game and designing a game are two quite seperate disciplines. If you are interested in making a small game you'll probably be doing both.
Typically a game is designed on paper before any coding starts. Once the game design document is fairly complete a technical design document outlining the games implementation is written. Even for a small game, defining what your game is before you try to code it is an important step. That said there is nothing wrong with doing quick prototypes of gameplay ideas before you commit to something.
You game design document might list what platforms you intened to target and your technolgy choice should be influenced by that.
DirectX limits you to Windows only, SDL is great but not hardware accelerated (I think there are work arounds) but that might not matter for your target audience and platforms.
For some sample game design documents and a list of good books on the subject try http://www.ihfsoft.com/index.htm
Out of the books listed there I highly recommend Game Architecture & Design.
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!
While my project is still in its beginning stages, you may wish to take a look at Improbable Drive. The basic concept is that I'm going through the game development process following formal techniques for project management, and documenting things as they go along.
Everything's based on a CCL license, so you're (mostly - see site for details) free to take any part of the process and alter it to suit your personal needs.
The Project only started a couple weeks ago, so I'm still in the project specification stage. The first milestone (Initial Specification document) is already complete, and I'm well on my way to getting the next one done (a full high-level plan of what needs to be done, and where future milestones are going to sit.)
Is the whole thing overkill for such a small project involving a single coder? Of course! But, that's really half the point - the project is small enough that the basic principles I'm exploring can be understood by anyone coming into it.
For small, personal projects like what you're describing, you may not want to go to the lengths that I'm going to, but it might prove helpful to see what sorts of steps need to be addressed that are commonly forgotten about until it's too late (sound design, for one).
And, of course, it's not too late to add your own $0.02 (US) to the project's design, as I'm soliciting input via the forums on the site.
That green slime had it coming.
Against some people's ideas, books can be a great way to learn (especially because you don't have to keep switching between programs, just keep the book on your lap). I like the OpenGL Superbible (ISBN 0672326019 or linky) despite the name pissing me off.
You and a partner commit a crime, and are arrested. In the interrogation room, you learn that the two of you will each go to jail for 2 years if neither of you says anything; however, if you testify against your partner, you'll get off free while he ends up with 6 years. If both of you confess, you both go to jail for 4 years. What do you do?
You are playing a game where you are given $50, and then asked whether you would like to take it as is, or flip a fair coin. If you make the latter choice and turn up heads, then your total amount will be doubled to $100; if you turn up tails, then the amount will be halved. Do you take the $50, or take your chance with the coin?
You appear on a game show where, at some point, you are told to pick one of three doors. Behind one of these doors is a prize; behind the other two, nothing. You pick a door. The host then declares that he will open one of the empty doors. Having done this, he offers you a chance to switch to the other, single remaining door. Do you switch, or do you stay?
www.pygame.org
The perfect way of starting a simple game.
I know much of Slashdot's audience can't stand Flash, but I've had quite a bit of experience with it over the past five years -- I was a Flash game developer -- and I've got to say, ActionScript has become o very powerful language. Don't be fooled by its name: It's not a scripting language. It's an entirely object-oriented similar to Java and C#. You should feel right at home with it.
The upside is a very rapid development phase: you could bang out a prototype in a couple of hours, depending on complexity. It's also an almost-ubiquitous platform: With the exception of *nix (of which I know very little, and as such refrain from commenting), the player is reportedly installed in 90% of all browsers.
The does-side is that you have little-to-no control over lower-level functions, such as memory-management; no direct disk access outside of 'Flash cookies'; and absolutely no access to a user's video card. It's also quite an expensive application -- it starts at $499.00 USD for the standard version.
Quite a number of amazing games have been developed using Flash, most notably (IMHO) Alien Hominid, which, ironically, has been turned into a full-fledged console game.
That's just my two cents, at any rate.
"Yeah, well, Dracula called and he's coming over tonight for you and I said okay."
The projects that the poster wants to work on sound like more of a showcase of gameplay rather than graphics. So, it might not be necessary to dive into linear algebra and x86 assembly just yet ;-)
Here's the tough part: I can't stand the majority of design book. I've read a few (and skimmed/browsed dozens), and they mainly seem to be essays written by game designers on what games they do/dont like. Interesting, but imho they didn't equip me with any tips/trick/knowledge that could I could actually use. I've heard that Rules of Play is good at defining what makes good gameplay (there's virtually no mention programming languages or hardware). In fact, many of the design studies are simple board-games. However, some people have called it it too academic.
I'd stick w/ Java for now, and find a book on java game development. It'll make it easier to get your design to reality, and port it to c++/directx later on. Java is slower, but it "feels like" c++ so porting wont be as bad as porting a VB or flash game.
Hire an already existing and out of work game programmer to program your game. We need the money!
Don't trust any concentration of power.
Start Here. Go there, read and do what it says.
And FYI, I'm resisting the urge to make snide remarks about the naivety of your comments. You state that you're ernestly going to try "making some games" (if you manage ONE coherent game I'll be impressed), and that you enthusiastically want to make 3D games (but appear to be scared of C++).
In the words of Yoda: Try not. Do. Or in this case, "after asking on Slashdot, try some of the suggestions".
Learn from games you play. You've obviously played a computer game before. Take one that's similar to the game you think you want to make. Write down all the things that you do in that game and what you think the game has to do to support that action.
(ie: you click "new game", the board re-initializes and sets up the game state. You try and move a piece, the game checks to see if it's a valid move. You win the game, the game somehow detected that condition. You've got a high score, the game knows this and stores it somewhere).
Write this down for a game that you know, then try to change it into the game that you want to make. Then expand each section with detail and keep adding more and more game features while keeping everything coherent. You'll soon figure out how complex (or simple) your game will probably be.
Great program design begins on paper. A great implementation can come later when you've got the broad strokes figured out. (Unless it's an organic design (which is often unavoidable in live projects where you can't afford to break something) - in which case, welcome to hell).
One of the first things that is beaten into 1st year computer science college students is that you should not cling to any one language. You should grow to the point where you can easily pick up any language thrown at you (the specific advanced knowledge later coming with experience).
FYI, there are decent free C++ tools and libraries available for Windows, you don't have to use whatever Microsoft tries to push on you.
With your Java background you might want to try messing around with Proce55ing (a very good prototyping tool) to solidify some of your ideas.
And of course, break the rules when it suits you.
This will give you an excellent platform to start developing games from. You can dabble in gameplay, graphics, sound, AI, and so forth in a proven game. And heck, if you break it, you can always download it again :)
Writing your own modification is probably the easiest way to get into game development, for the simple fact that it is extremely popular and there's a large knowledge base to support your efforts.
For he today that sheds his blood with me shall be my brother.
Try BlitzMax -- it compiles for Windows, Linux and OS X.
OpenGL, SDL, DirectX, 3rd party engines, etc. are all well and good...but what about PHP? Particularly with AJAX, a whole new world of possibility exists. We're working on a RPG that does just this. While not graphic heavy, it does look nice and is amazing snappy even over a 28.8k connection. And there's no download.
Mutant Freaks of Nature: "Frighteningly Addictive"
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.
Surely not inexpensive, but it does a very good job of showing how to implement games in Java, including 3d-rendering...
:-P
The Author's Website (Includes demo-project and source codes to all chapters)
I'm not affiliated with this in any way
Good books on Graphics are exceptionally hard to find. 3D math primer for graphics and game development by Fletcher Dunn and Ian Parberry is a rare gem. Starts off extremely simple and ramps up fast. It assumes you have some math expertise though.
Adventure Game Studio provides an extremely simple way of doing old-style adventures quickly and has an active community behind it, which is rather friendly.
Guess what, lots of scripting languages are object oriented and very featureful. That doesn't mean they aren't scripting languages. Scripting isn't a bad word you know, python and perl seem to be doing pretty well for themselves.
Slashdot just posted another story about a great developer tool you can use to get started in your game programming career!
Modern copyright is theft of culture from everyone and it retards the progress of the useful arts and sciences.
GameMaker is an excellent tool for learning about making your own games. It handles all of the low level things like graphics and audio for you so you concentrate on actually designing the game. It was mainly for learning 2D programming, but with the most recent release, Mark Overmars added some 3D functionality and its quite amazing what people have done with it. It is also quite cheap shareware (about $20 or so) and you can still use most of the functions using the free version.
DEAD DEAD DEAD DELETE ME
Yes, it wouldn't do any harm to brush up on your C++ skills. If you don't have a C++ compiler yet, get Dev-C++ http://www.bloodshed.net/devcpp.html
Then try to finish at least one game. It doesn't matter how simple it is. If you then want to concentrate on design, instead of the nitty-gritty details, you might want to try http://www.cs.uu.nl/people/markov/gmaker/
For 3D, 3DGamestudio http://www.conitec.net/a4info.htm is a cheap, decent, all-around game authoring system. You can cobble together a quick FPS and if you put more time into it, a good RPG.
The two I just mentioned are for the windows platform, btw.
If you really want to start with a good (cross-platform) 3D engine, Irrlicht http://irrlicht.sourceforge.net/ is a good open-source one. It works with Dev-C++.
The important thing is to get one game out.
For a generic book on game programming, check out Andre LaMothe's book Tricks of the Windows Game Programming Guru's (assuming you're developing for windows...and if you're trying to find a decent sized audience, you really should be) That provides the technical introduction you'll need, from COM to DirectX. Note that you can skip a lot of it if you're a seasoned windows developer. If you're not though, this is the best book to start with IMO, since it has a great windows primer.
When it comes time for you to consider programming game AI, look no further than Programming Game AI By Example by Mat Buckland. He goes over a LOT of material in the book dealing with very practical game programming. He starts out with very basic examples of Finite State Machines (FSMs) and works his way into building a bot for a full blown FPS game called Raven. His website (http://ai-junkie.com/)also has a very nice introduction to Neural Networks and Genetic Algorithms--some of the more 'exotic' approaches to game AI.
He writes all his code in the book in C++, so obviously it would be helpful to know it. Also you will need to be slightly adept at math if you want to understand completely the physics code, but luckily he provides a very detailed and lengthy refresher chapter and references it constantly whenever introducing a math-intensive portion of code.
J2ME (I mean, provided you have some portable device to really use it on, instead of just a lame cell phone emulator or whatever) is rather fun to program in. When I did it for a class, I did not program a game, but my program was relatively similar in terms of what I used from the language (it was a baseball-game scorer). Doing the UI was a snap. J2ME offers graphical/ interface program that is not only ideal for a cell phone/ PDA, but because of those concessions, it's really easy and straightforward and cool, because the interfaces are flexible and they do what you'd expect them to- MUCH better than Swing/AWT. I don't feel like writing a book, but, let me tell you, the stuff inside J2ME (from the graphics to the internet stuff, etc) is very helpful for writing games. The only annoyance was losing random (non-UI related) libraries that you had in normal Java for no apparent reason. By and large, I liked programming in J2ME as much as I do in VS/#C/.NET, and I really enjoy doing that.
Insightful: 76, Off-Topic: 379, Flamebait: 24, Funny: 152, Interesting: 201, Underrated: 55, Troll: 9, Total: 896
From the site: [ http://realmforge.com/ ] """ The RealmForge GDK is the cross-platform game development platform for .NET. It is written entirely in C# to ensure portability and allow the productivity, flexibility, and dynamic nature of the .NET Framework to be leveraged in all aspects of game development. This middleware is architected with both power and ease of use in mind and is released under the LPGL so that it is the free and ideal solution for both commercial and hobbyist projects.
This game development kit is characterized by its productivity, ease of use, and highly flexible and intuitive component-oriented architecture. This game engine and development environment consists of a framework, rendering engine, run-time development toolset (In-Game Editor), script and media libraries, and a growing showcase of demo games and tutorials which assist in rapid prototyping.
"""
The framework itself is under lots of active development and has support for just about everything expected of a modern game dev kit. Also, the support is simply amazing, with forums, google group mailing lists, irc channels, great documentation, etc.
I agree with those who say that knowledge of OpenGL and/or DirectX is a must, (always know something about what goes on under the hood), but I'm also a big fan of short time-to-market once you actually start developing a concept. Here are some 2D engines that speed up development:
- Torque2D - GarageGame's upcoming 2D tiling engine SDK. This looks promising, but is in its early-adopter release. Not yet ready for primetime, according to GarageGames.
- Pygame - Python-based 2D engine. My feeling is that Python is a great language to start game development in.
- Orbforms Designer - Why limit yourself to the PC? PDA games can give you a greater return on your time than Windows games do. (Per man-hour, our PDA titles bring us more revenue than our PC titles do.)
- Game Editor - For those who want to go even higher-level than an SDK.
So you want to write a 3D game! Try one of these:- 3D Gamestudio - The engine of choice for our latest games. I love it, and hope they'll extend to the Xbox 360 platform when it comes out.
- Torque - Maybe the single most popular 3D engine among indies and hobbyists. Focuses, in part, on cross-platform compatibility (Windows/Linux/Mac).
- OGRE - An open-source package. Frequently updated. Some nice projects using the engine.
- DarkBASIC - A popular package among new developers and independents.
Also check out what kind of games independents are making now:- Game Tunnel - Previews, articles, and reviews of indie games.
- DIY Games - Covering the latest independent/shareware titles.
And ignore anyone who says that you should start off by developing something simple. It's good advice, but nobody ever listens to it.---
Inago Rage - Create and fight in your own FPS arenas.
---
We're indie. We're working on our 14th game.
Check out our 2D game framework and real game samples, available at http://developer.popcap.com/index.php. We've used and continue to use this framework for all our own games. Nearly all the hard technical issues you'd need to tackle have been solved here, so you can really put your focus on game design. There's a pretty active community of people on the Popcap Developer Forums who can help you out too. Best of all, it comes with one of the most free and open open-source licenses out there. Give it a shot!
Dave Haas
Chief Operating Officer
PopCap Games
Give the jogl or Java3d package a try. If you already know java then jogl is just a wrapper over the openGL libraries. It's kind of funky to start because it's clearly a C library with a JNI. On the other hand you have Java3d which is a high level all java scenegraph package that links either to openGL or Direct3D. Java3d is very easy to start because of its simplicity and better documentation than JOGL. You can get at all of this stuff from https://jogl.dev.java.net/ or java.sun.com/products/java-media/3D/.
The book Introduction to Game Development just came out and is a whopper of a book (hardback, almost 1000 pages). I picked it up at Borders two days ago and it's pretty thorough, discussing the whole of game development from programming to game design to art creation to business issues. The preface mentions that it was designed as in intro book for colleges following the IGDA educational guidelines, but I've found it quite easy to read so far. Of course one person can't really write on all of these subjects, so the book is written by over dozen game experts. One of the coolest sections that I haven't seen covered before is a chapter on IP law and content regulation. Here's a link to the book's website which is mentioned in the preface: http://www.introgamedev.com/
If you really want to learn about the video game industry, get a job. Expect to work 80+ hours per week for months on end, living off junk food and soda, and maybe seeing family once a month. Get treated like trash by people in management who whould be taken outside and shot if they weren't in the video game industry. Mandatory retirement age is at 30. So enjoy it while it last.
Seriously, working in the video game industry is a lot harder than playing video games at home. I spent six years working in the industry and got out because I wanted a social life in my old age (I retired at 35). I now make more money contracting as a lead QA tester or PC technician and I can enjoy life. I wouldn't get back in unless a company can guarantee 40 hours a week, minimal amount of crunch time and a better pay rate. This was covered at the 2005 Game Developer's Conference.
http://www.gamemaker.nl/
Drag and drop style programming. Very nice way to get into game programming if you do not have much experience with programming languages. Shareware too.
Well I program games, and though books can give you a headstart in doing certain things in a certain way, they never go very far or very deep, and usually are just a colleciton of tricks and tips. They just sit on my desk for the rare occasion that I need to look up the peculiarities of an A* or something or how to build a Q-Hull.
The best way to learn how to make games, is to go out and do it. The best reasons for using this or that language, is the reason YOU have, not the reason someone else has. Each game is different. Each scope is different. The only way to preserve your idea is to work on the transformation yourself without others dictating 'how it should be'.
But what IS always good to read, are the postmortems and articles at Gamasutra.com. They give you an amazing list of resources that are definately worht checking out.
All the best!
With great power comes great electricity bills.
This may seem silly, but it's really very important to keep things like this in mind when designing a game. Many games nowadays take more into account the technical aspects and forget the basical principles about gaming.
You must allways offer choices to the players. You can make some of this choices random to add uncertainty (like in the third case), but you must add some problems where the player can evaluate the conditions and try to take an informed decision, which must be rewarded if it's good (like the first case).
Also you must tease the player with rewards but at some risks, so he cannot go on trying everything that there is in the game without risking something.
Thought these principles seem very easy, there are many games that fail to implement them.
I was in the same situation a couple of years ago.
These two books really helped me:
- "Focus On SDL" by Ernest Pazera
- ""Tricks of the Windows Game Programming Gurus" by Andre LaMothe
There are plenty of tools & materials on the net for programming the Gameboy Advance. As a plus it is a pretty simple platform, as is probably good for starting out. You can compile to a rom file & run on an emulator & You don't need the actual SDK, which is probably pretty pricey.
If you come up with something cool its easy to just send a demo rom to a dev house.
I've experiments to run, there is research to be done on the people who are still alive.
SourceForge has a lot of open-source game projects now, and many of them are quite good.
While a lot of them are ports of older games, like Doom, others are new. All types, and many are written in Perl and Java, as well as C.
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
It doesn't matter if you are the best programmer in the world. Unless you have great artistic skills, no one will even look at your game.
If you already know Java and you've never written a game before, I wouldn't bother investing in a book right away. I bought a book about game programming in Java (coming from a C++ background) when I started my second game project and found it totally useless. With your first game, the most important thing to do is to restrict the scope. Your eagerness could very easily impell you to start a project you will never be able to complete (this is why my first project flopped). Pick a 2D genre that doesn't require realtime processing, or AI, or networking, or anything complicated (you can add those later) and then use the Java programming you already know. I specifically chose Java for my project because of the ease of 2D graphics programming.
You stole that idea from the Dirty Bomb episode of NUMB3RS!
As an IT professional with not a whole lot of time to miff around, I prefer using Multimedia Fusion, a product created by Clickteam. You might have heard of their more popular install maker program.
www.clickteam.com
A lot of game programmers hang out at flipcode.com They also have tutorials and other resources.
Coder's Stone: The programming language quick ref for iPad
I've been playing with this. So far I'm getting a nasty segfault that I need to debug, but there are lots of demos etc that are quite nice (just wish they'd fix the directory/hierarchy structure on the samples).
Oh, and it works in both linux, windows, and Mac OSX....
You CAN develop modern, well-performing games in Java. Since you already have a good Java skillset, try these:
Killer Game Programming in Java from O'Reilly, and Developing Games in Java by David Brackeen, from New Riders.
Brackeen's book (Developing...) is particularly well-written, and a great place to start. Killer Game Programming in Java is an *excellent* idea source/reference in the great O'Reilly tradition, but is a little more intimidating, since you could use a copy to beat an elephant to death. "Killer" is a more recent book, and covers some aspects of Java 5.0 game development that Brackeen's book necessarily omitted. Both books also point out various commercial games, and games in development, that were written with Java. You're probably not going to end up writing a screaming, graphically stunning FPS with self-shadowing objects, etc., but since you're not EA, you can't afford to do that in your own time anyway. So why throw out your current skill with Java and learn C++ all over?
Arr! The laws of physics be a harsh mistress!
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.
I have really tried to learn game development. I am a relatively experienced programmer so I picked up OpenGL and with in three months I was writing useful "applications" but no games, that's because games are more than code. I can show case some great demos; I can model a shape with triangles, skin it with a texture, give it a good shading, put it all in a display list and have it run an optimum speed. But I can't write pacman to save my life. I have no artistic talent.
The other thing I found out was that game programmers in general are very specialized to games programming and have no knowledge of other domains. I met some competent game hackers who have never used a unix variant, or who have never writen code in anything other than C++ who don't know of the freely available tools. Most game programmers seem too narrow in their knowledge of programming. I once shared an array implementation of a binary search tree with a few hackers on IRC and they had no clue what it was supposed to do. Those same guys are comfortable implementing a BSP if needed be.
Culture wise I found game developers too young and naive to work with, and I later found out that graphics programming was not my cup of tea and I much prefer writing shell-code.
hello, this is a test! http://example.com/
- - - - - - -
Reliable but Cheaper Web Hosting