1. Scope, scope, scope! UA had plans for a mind-boggling number of units. This put our modeling, skinning, and animation folks in so many kinds of screwed that I sometimes wonder what kept Lupin from going postal on us. On top of that, we were trying to code every little feature TA had into UA's interface, plus a first person interface for every unit. Needless to say, this turned out to be a gigantic task that seemed at times endless. This tediousness really reduced team morale, and kept development in the grand scheme of things, at a crawl. One must remember, a mod team is not a commercial development team, and scopes should not be written to match one.

    Unreal Annihilation Screenshot
  2. Write, re-write, delete, and write again: UA suffered from a major problem in it's code. Almost monthly, at least one major chunk of code was tossed out and re-written from scratch for flexibility issues, or general problems including the infamous "I don't know WHY this isn't working, so screw it, lets rip it out". This constant turnover in code produced countless bugs on the side, and made the code practically impossible to properly document. New coders would look at the code notes, then the code, scratch their heads, and cry. Almost half of the coders that joined the project left after a single compiling commit.

  3. Transparent productivity: One major issue in coding is that 3000 lines of code can compile out to adding a cool looking bar at the top of the screen. There was always a feeling in the team that the coders didn't do much, because progress was externally so slow. This, in turn, generally pissed our coders off and further increased turnover. It also made the mod's frequent updates look like all we were doing was making models and skinning them, in effect making it hard to locate additional coders willing to help out in what looked like a project without code.

  4. Code + netcode != network capable code: None of our coders really understood the Unreal engine's network system. Instead of learning it, we just ignored this issue and wrote the code to work in single player, using the excuse "Oh, we'll add netcode later". When it finally came time to add the network code, we ended up ripping out massive portions of code that simply weren't compatible, further slowing down the development cycle and obfuscation of the code.

    Unreal Annihilation Screenshot
  5. Anyone seen a texture artist? With a massive project such as UA, we found ourselves missing a texture artist most of the time. Without one, progress literally ground to a halt. When we did have one, he'd be overworked and without help. This problem held up progress on a regular basis, and further contributed to the Transparent Productivity issue.

Next: Conclusion