Get the latest Education e-news
 
  • Postmortem: The Nameless Mod

    [06.11.09]
    - Jonas Wver

  • 5. Post-release support

    After seven years of development, most of us were really eager to put TNM behind us and start up a new, independent project -- something we might actually be able to make money from eventually. Unfortunately that would have to wait. By the time we released, Deus Ex was a very old game, and in our infinite ambition, we'd been messing with the native code and adding a couple of our own features to it, such as an OGG music player -- in short, it crashed a lot. Furthermore, it turned out that thousands of players are better at finding bugs than 20 volunteer testers (who would have thought?)

    We started fixing bugs the day The Nameless Mod was released. When we built the release version, we were almost certain there were no significant bugs left, but hundreds of people signed up to our forums to tell us otherwise. The first patch was released after one very long, very hard week of the worst crunch I've ever experienced, and fixed around 140 bugs. The second patch was released a month later with over 200 fixes. Though this sounds like a lot, it's actually fairly good considering the scope and complexity of the game, and the fact that we had very few really dedicated testers and no systematic testing procedures in place.

    Most importantly though, we got them fixed very soon after release, with the help of our community, and we're not done with the game quite yet. We're also cooperating with a few other well-known Deus Ex mods to help make sure their work is compatible with TNM. Finally, we've been providing thorough support to people with installation problems or other technical issues, going so far as to monitor TNM discussions on other forums to intervene with help when it's needed. All of this, combined with some very open and honest communication throughout, has earned us a lot of goodwill with the community that we might otherwise have lost to a reputation for releasing a bug-ridden mess of a game.


    Weapon renders are a bit of a modding cliché, but here's one anyway! Our weapon designs were pretty much improvised by our 3D artist, but we managed to come up with unique functions for them that didn't just duplicate weapons from the original game.

    What Went Wrong

    1. We spent no time on pre-production

    In stark contrast to Deus Ex's luxurious six months of pre-production, we literally had none. Actual game assets were being produced from day one; before we'd even decided what the game was going to be about or what sort of story we would write, artists were churning out character textures and level designers were building maps. A month or two of recklessly disorganized brainstorming segued into a confused, hurried documentation process where we struggled to keep up with our own ideas. Since the project was entirely anarchistic in the beginning, nobody had to wait for permission to start pumping out assets, and little to no coordination took place between different designers or artists.

    In and of itself, "don't eliminate pre-production" may seem like a pretty obvious piece of advice, but what we were actually trying to do, in hind-sight, was iterative design: We were experimenting with the engine and the tools at our disposal, testing the capabilities of our team, and throwing our every idea at the game with no sense of restraint in order to see what worked and what didn't. The approach could've worked out a lot better than it did if we'd made a conscious effort to evaluate the decisions we made and deliberately pick out the elements we wanted. Our team size and structure was even quite suitable for an iterative design model; we had around ten highly dedicated people working on it back then, and there was no management or budget to worry about, so we were free to mess around and distil the useful ideas from the poor.

    Unfortunately we made the major mistake of not eliminating anything at all. Everything people created and every idea anybody had went straight into the design documents. In that way, we managed to waste what was actually a pretty healthy pre-production process because we treated it as full production. A lot of the bad ideas and decisions that made it into the game back then, we managed to replace or fix later down the line, but some of it can still be found in the final product because it's simply too time-consuming to fix. File that one under "how not to do Agile development".

    2. We didn't understand all the code

    They say those who don't know history are doomed to repeat it, but sometimes you know going into a project that you're going to face some major problems, and there's very little you can do about it. The sometimes makeshift nature of parts of Deus Ex's code was one such problem we faced. Now, far be it from me to criticize the Deus Ex programmers -- they did an amazing amount of work and unlike us, they were working under deadlines. But by their own admission, the artificial intelligence in Deus Ex wasn't as well designed as it should have been and suffered even further for being constructed precariously on top of the Unreal Engine code.


    Some of our levels really pushed the capabilities of the creaky old Unreal Engine. We had to cut almost half of this one and replace all its background lights with ambient "zone lighting" to make it stop crashing; and to be honest, it's still too big. (click for full size)

    To us, the problem wasn't just that we didn't want to mess too much with the AI code, and that we never had access to Unreal's source code to fix some of the more persistent bugs we encountered, but that we didn't fully understand how the code was meant to be used in the design. Our AI problems are the most illustrative example of that, but unfortunately not the only one. Deus Ex's AI, it turns out, is pretty stable when it just has to be friendly or when it just has to be hostile. When you start mixing friendly and hostile (and perhaps even neutral, if you hate yourself) behaviors in the same area, the illusion begins to fall apart. What we did was to mix friendly, hostile, and neutral characters in the same levels, and then switch their alliances around depending on the player's previous choices. It blew up in our faces, and it never stopped blowing up.

    I suppose there were two ways we could have solved this problem. One was to sit down and rewrite all of Deus Ex's AI code as early as possible. This wasn't an option due to our extremely limited programming resources, so the remaining solution was to look very carefully at how Deus Ex's characters had their AI set up and how the different settings were used, and then stick to that; but once we finally realized that, implementing such a solution was tantamount to scrapping everything and starting over from scratch.

Comments

comments powered by Disqus