Elemental: Post-Mortem

By Jon Caruana, Lead Programmer

Elemental started as the desire to do an RPG mod. This initial concept was quite fluid. We had discussions of lasers on a technological wasteland. But David lead us to a world where Romans and giant insects and talking animals mingled.

It took us three-ish years to "finish," but almost all of that time was spent "starting." None of us had ever worked on a mod before. And Elemental was always an ambitious project. Many systems from Dungeon Siege simply could not be used. But we didn't realize that immediately and instead were mesmerized by "data-driven" and "moddable" in the buzz on the Internet.

If the engine was our only trouble, Elemental would have been completed, and in less time than we took. But we had larger issues, many of which fall directly on my plate.

At the beginning, we had no clear code direction. With a healthy number of programmers, we each took a piece and played with the engine. But we didn't communicate much to fit the pieces together. I took charge of what we called SecureChar (our solution for the rampant cheating that was killing Dungeon Siege multiplayer), and left everyone else to work on the (at the time, believed to be simple) content aspects.

A year later, SecureChar barely worked. It used a multitude of low-level assembly hacks to the game engine that was less than stable. It was essentially a black-hole of effort and, therefore, cancelled. But in the mean time, the actual mod hadn't made much progress either. We had little toy systems, but nothing was integrated or fully working. (But, unlike SecureChar, it didn't crash randomly.)

I was still a junior in high school. Obviously this meant I had no experience leading a project of any magnitude. But after ending SecureChar, I took control as the Lead Programmer. I did very little leading and wasn't comfortable delegating tasks to the handful of programmers that remained.

At the same time, we threw away much of the existing code base and I designed or helped with the design of all the new systems. In hindsight, the only mistake was not throwing away the entire base. All the systems we kept gave us trouble throughout development. Ironically, the most stable system of the entire mod was probably the save game system (which was more or less SecureChar v2 without the central servers).

Another derailment was our focus on multiplayer. From a technical point of view, this was an "interesting" problem and the focus of a ton of our code. (Complex data storage in multiplayer was a problem that DS1 simply wasn't expecting mods to deal with.) But in reality, hardly anyone playing Dungeon Siege used multiplayer. Noone played multiplayer of Elemental to my knowledge.

The straw that broke the camel's back was the impeding release of Half Life 2. The team was sick of the limitations of the Dungeon Siege engine. An engine with real mod developer support was too tempting. As the HL2 release neared, we kept talking about the cool mods we could write with that engine.

The mod we planned to create died before a single line of code was written. The team was already chronically lazy and we never got properly re-organized. It also turns out that the HL2 engine isn't any more elegant than DS1, it merely has a better client-server separation.

Despite all these problems, I still think of Elemental as a success. I (and others on the team) regret that we didn't finish, and perhaps one day we will, but everyone learned a lot during the project.

Copyright 2006 Jon Caruana. Although I work at Microsoft, everything you read here is my personal opinion or creation. That's why it is on joncaruana.com and not microsoft.com.