My name is Nicholas, and this is my Tech File.
I haven't actually seen that movie, although I keep on meaning to. I just needed a witty introduction. And boy did that fail miserably. I'm a Linux Game programmer, hopefully soon being paid to do this sort of thing for a living. I've been involved with Sam Lantinga's Simple DirectMedia Layer (SDL), and am also the lead client programmer for an open source online RPG which will be free to play called Kosmos Online. I am REALLY excited about where this is headed; I'll post the URL here once the new web page goes up.
Generally I'll be either posting interesting technical ideas and what I've been up to, or just ranting about whatever gets my dander up... I'll aim for a good balance of both, but today's a rant day. So, let's get started with some of this sort of thing. You will notice that I tend to praise Linux and attack Microsoft a lot. If you have ever compared programming under Linux to programming anything for Windows, or programming any third party API to anything written by Microsoft (MFC vs. GTK, GDI vs X11, Direct3D vs. OpenGL, etc.) you will automatically agree with me. There's just no other way around it! Right. Rants.
First thing I want to rant about for a little while is this interesting new trend that's started to emerge with commercial games -- that of "engine licensing". Increasingly it seems that major game titles, such as Ion Storm's "Daikatana" (and Anachronox), KISS: Psycho Circus (A brilliant example of marketing gone bad), and Heavy Metal 2: FAKK, aren't using original engines, but simply licensing other people's. This was a trend that REALLY started with Heretic, which licensed the DOOM engine. Heretic worked -- the engine was designed for this sort of thing. It was a semi - cool game, not as cool as DOOM though (Elven Crossbows are now match for my BFG any day), however _The game was based on what the engine could do_.
Unfortunately, some of these newer licensees are bending the rules quite a bit. They seem to be automatically assuming that "Just because Carmack wrote the engine" it's automatically the best bet. I see two problems. First: Quake's engine, Quake 2's engine, and Quake 3's engines are all designed for indoor scenes, and a lot of these licensee titles are using them for outdoor areas.
A few key problems. First of all, for outdoor scenes, BSPs suck. You get lots of planes subdividing dinky little areas in space ad nauseum. Plus, if you want to do some of the stuff that the recent batch of landscape engines have been doing (dynamic LOD, etc.), it becomes that more difficult. You may get no overdraw with BSP trees, but you get far more hassle than you would if you used another PVS solution. Octrees spring instantly to mind; the 3D client for Kosmos Online currently uses octrees and is meeting with a good deal of success.
My more immediate concern is the fact that we seem to be relying more and more on other people to do the bulk of the engine design and coding and less and less on the actual in house developers to try to come up with the new ideas. We all think that Carmack is such a coding god; maybe that's because he actually tries to come up with new ideas and new ways of doing things. Then, we stare at them, and go "Oooh wow!" whereas it really doesn't take an uber-genius to come up with a lot of the next big things. A case in point comes from my own 3D engine. Courtesy of some interesting ideas by our resident mathematical genius, Matthew Skala, whose homepage I will eventually link to, all the lightmaps are calculated at present using radiosity. No normal lightmap calculation methods; just radiosity. Too slow, you might say. Normally, yes. But with a bit of extra hooplah, it can be done! And the results look pretty interesting. I might still use a regular lightmapper, in fact I'm leaning towards it, but I can build this in, and get away with using WAY more radiosity than Quake 2 does.... it's quite quick, computationally. More on this method later.
The main point is that we're losing our abilities to come up with new, smart ways of doing things... at least commercial games are. Mainly what we're seeing is people coming up to iD or Epic, licensing their engines, adding skeletal animation and particle system code, and doing a total conversion. No new ideas, and a flagrant misuse in some cases of technology. I would expect Daikatana to use a brand new built from the ground up ultra-amazing technological breakthrough of an engine. The fact is that they're just licensing Quake 2's technology. According to Michael Abrash, they're pretty much the same, except for some upgrades to the physics engine (and the radiosity lighting code in the preprocessor)... and how old is that engine? Even with some nifty modifications, it's still stuff glopped onto ages old technology, and it's still behind the times. I would also expect Duke Nukem Forever to be built once again from the ground up. (I was around way back when Chris Hargrove was a member of the demoscene, with the alias of "Kiwidog", and releasing 3D tutorials. I think I still have them somewhere...) They just licensed the Unreal engine and started gobbing new things on it -- more ancient technology. It really doesn't work all that well. We might play DNF, we'll certainly play Daikatana just to see if it's worth all the wait, but it's really the technology that gets us interested. Look at all the hype surrounding Q3A, we were all waiting with baited breath. But now? Since iD has released Q3A first, we'll stare at whatever games license it and says, "Whoopie. Big deal." On the other hand, I started staring at some screenshots from Warcraft III a while ago (screenshot here), and found myself swearing and cursing and saying "Holy F***, how did they do that?" and "My god, that looks cool." I can't wait to play it. I hope Loki gets porting rights -- a game this cool deserves Linux.
What's scaring me even more is that very often companies are hiring talented "Mod Builders" and not real programmers who actually know how the damn stuff works from the ground up. A scary prospect.
Maybe it's different for non-coders, but I find myself impressed more and more by original and innovative engine technology. So let's get out there and write some engines from the ground up and show everybody in the world that we can all make engines that really prod buttock. I've seen some in the daily screenshots here on Flipcode that have really impressed me.
I promise that most of my writings here will be more technical in future; this is just something that I wanted to get off my chest. Feedback, thoughts, and job offers are always welcome.
Until next time,