Sunday, May 30, 2010

Getting my dark on

Did I just abandon a project before it began? The quick answer: Sorta.

See, since my home machine's hard drive got virus'd last year (and I've had to use this less than official version of Windows XP), my school laptop became my only Visual Studio coding machine. Well, I had to turn in my school laptop at the end of the semester and now I am without a machine with VS. Fair enough, I'm all of an hour's worth of work away from getting access to the MSDN and getting all the Windows 7 and Visual Studio I want for free - but the thought of going through a format and all that junk... Yuck.

For a while there I had been hard at work scoping out an engine to do a quick side project on. Not coding anything was making me crazy, I had to find something to do.

And then my old copy of Quake fell out of my dresser Wednesday of last week. Quake, I think to myself, is old enough that it must be documented like crazy, and be chalk full of sweet tools just ready for me to pick up and use. Genius!

It turns out I was mostly right.

Modifying the game logic in Quake is all about messing around with John Carmack's QuakeC script, a beautiful little C like language that is clean and easy to dive right into. I can modify a script, compile it, and be in game and testing it all in about 30 seconds time. As for the guts of the engine, I can let someone else do all the heavy lifting. The Darkplaces engine is a gussied up Quake engine with plenty of modern graphical additions like reflections, shadowing, and bump mapping.

Documentation? We have documentation. The Quake dev community is still alive and well after all this time. Inside3D is my main reference site so far.

But the best part about using the open source Quake-based Darkplaces engine is that it allows me to release the game not as a mod but as a stand alone game!

That sounds all well and good, but the downside to going stand alone is, of course, that I have to generate 100% of my own content to use with the thing. This is a pretty good knee cap to my progress, but I went on to see just how viable it would all be.

I already know that I'm solid on the coding/scripting front. What about mapping? Well, my logic that an old game must have some solid tools turned out to be right in this instance. A slightly old and modified version of Valve's ancient-but-effective Worldcraft editor (now Hammer) is an elegant solution. After downloading the thing it only took a bit of fiddling to get it in working order and I was compiling my own test map in five minutes. Perfect. And the package included a .wad packager, so I can make my own texture packs (which I'm going to have to do).

How about the models? Ah hah! My logic worked for mapping, so surely it would be pie to export MDL files from any modeling program I want, right? WRONG! The pipelines for modeling for Quake are kaaaarazy. I knew I was in trouble when I came across a tutorial that wanted me to export into Quake3's MD3 format, then run some converter to turn it into MDL, and then hope and pray it comes out the other side looking anything like the model I started with. Luckily, after many hours of searching, I came across a decent (if still buggy as hell) straight MDL exporter for Blender3d. It messes up the textures like crazy, but my textures are going to suck anyway, so who am I to complain?

So now I've got my own models into the game. That leaves sound, and I'm pretty sure I can find some public domain .wavs to use.

It has been an odd experience for me. When I normally enter this feeling out period of the project I very quickly find out the ceiling of my capabilities and pair back what I want to do as necessary. But this time, whenever I sent a feeler out to check out my limitations I actually found the ceiling to be much higher than what I need. For once it would seem that my own creativity will be my limit. Hooray for Quake and Id.

Now, before I get too excited, it is worth realizing that I still have a crap load of content to create, and I am nothing even close to resembling an artist. To combat this I am picking a simple boxy art style and, taking a cue from major crappy developers everywhere, adding in toon shading to cover up my shitty programmer art.

Anywho, more details on the actual game to come soon, as well as screens (which I can already show because the game is coming along so fast and furious).