I was going to write a long semi-inspirational "Ten Commandments Of A Game Designer" here, but I figured I'd better get more of my prototype done before I get self-righteous. Instead, you get the dilluted watercolor of my thoughts splattered on the canvas of your mind. (Wow, isn't that vivid? I should write for LucasArts ;-) )
I've been using Java to build my game prototype for a couple of weeks now. The Java graphics libraries are brain-dead and butt-slow. Just drawing several points in a window gives an abysmal frame rate. It probably doesn't help that I'm running the VM under FreeBSD in Linux emulation mode, but still... I'll have to replace AWT/Swing with something lower-level as soon as I get the chance.
I think the benefits still outweigh the detriments though. Inner classes are a nice way to represent a lot of things, like game events. Having serialization is very handy for a barebones load/save function. Reflection is also coming in handy. I had a Windows .INI file reader class from another project, so I'm using that to read in text files containing game parameters. All in all, Java is helping me proceed quickly with a prototype to prove the game concepts and architecture, and that's all I need for now.
I've given up on JBuilder 3 as an IDE. It's about as stable as leaky dynamite in the back of a pickup truck on a summer day. And it's just plain unpleasant to use. I really can't tolerate 10-second GC pauses in my text editor -- with its event queue not even recording keystrokes during that time! So I'm back to good old javac and 'joe's editor'. If anyone has had a good experience with a Java IDE, please let me know -- even if it's for Windows or (shudder) MS VJ++.
All things being equal, I'd be much happier with Borland Pascal 7.0. Now THERE was an IDE you could be proud of. ;-)
When you're coding alone, it's often hard to enforce discipline on yourself. Not that you'd neccessarily want to -- having complete creative freedom is the only advantage a lone game developer has. Still, it's good to have a few ground rules for coding to keep you out of the Abyss of Hackerdom. Here are some of mine:
Write "TODO"s. - When I write a piece of code that is incomplete -- if I am not absolutely sure it's correct, or it lacks some feature that I'm too lazy to add now, or it just "smells" bad -- I add a little "// todo: blah blah" comment on that line. I can then grep later to see what outstanding issues I have to fix, and where they are. Simple and painless.
Use version control. I use CVS at home, even though I'm the only one working on the code base now. It has saved my rear more than a few times. Get some kind of version control in there, no matter how big your project.
Get away from the keyboard. Every day I spend at least an hour away from the computer thinking about the game, using a plain old piece of paper for notes. It's easy for one algorithm or code module to suck you in for weeks at a time, so escape and think Big Picture thoughts as often as possible.
Take copious notes. Keep journals, notes, and weblogs (like this!) even if no one but you will read them. It's interesting to go back a few months and see how drastic your thought processes have changed. Also, if you can express an idea in words, you have a better chance of being able to expess it in code.
Put off things until absolutely neccessary. This may sound like sound business advice and bad coding advice, but here's my rationale: Game development is largely experimental in nature, more so than many (most?) other forms of programming. So chances are you will run down more dead ends and throw away more code than usual (unless you are so good that you can plan every single thing in advance -- I'm not). So put off making that super-efficient hash table or wicked lighting effect, and get your game playable as soon as possible. If you've coded correctly, you can pop in more efficient routines without affecting the overall program.
These are all pretty obvious things, but they bear repeating. Darn it, I'm being self-rightous and I said I wouldn't. Ok, next topic...
I picked up a copy of Inspire 3D. It's 8031575517f Lightwave for around $400. I figured, what the heck, I don't really need to fork over several months of rent for MAX do I? Now I'm not so sure. Lightwave's modeler is OK, but I wish it would support hierarchical models rather than layers. It seems like I could get away with using Inspire for modeling, and then import into Milkshape for texturing, but Milkshape's LWO import seems to munge vertices a lot. Agggh!
The Old-Skool Quiz
There's been a lot of talk on this site about landscape engines, dynamic level-of-detail and so forth -- but what was the first computer game that featured a dynamic-LOD 3D landscape? Everybody who saw Star Wars in the theater should know, but I'll give you a hint: it was released in 1985. For an extra point, what was its original title?
'Til next time... bye!