In software development, less is more. Clean, lean code is easier to debug and maintain. Designing the simplest solution is the trick. Whenever I design a software component, I tend to over-engineer it the first time through. This produces a solid, well-designed, hand-crafted unit of code, which is usually terribly complicated for its intended purpose. It’ll work well, but trying to explain it to someone else would be difficult. Some call that job security, but I’d prefer to find a more elegant design.

From a management standpoint, a mature software development process should not allow that first design to ever be implemented. Another round of simplification should be performed before any code is written. The initial design is not wasted time, as it provides insight to future improvements based on the original designer’s concepts. I’ve found that, working on my own, there is often too little oversight in this regard.

So it was with the content management system for the MMORPG platform I’m developing. Since I’m on my own, I could cope with the inelegant-yet-functional initial design. It had several programming-theoretic benefits. For example, I’m a big believer in strong typing and layering, but to the extreme it adds boilerplate code at each layer of architecture. In addition, (against my own advice) much of the design was overly rigid and complicated for the sake of theoretic (unproven) efficiency gains.

The straw that broke the camel’s back was gameplay integration. Adding and changing game content was a multi-step process to integrate properly with the underlying content system. Due to the aggressive byte-packing strategy, database storage was fragile, requiring a complex process to cope with code changes. Altering the gameplay needed to be more fluid, robust, and simple.

The new content design is fundamentally the same as before, but with a radically simpler implementation. As evidence, I dropped over 12,000 lines of code after removing the legacy content structure from the code base. Granted, not every little thing is fully functional yet, but the client and server operate with basic functionality, at least as well as before. Every line of content integration is simpler, with cleaner behavior. Database storage and network transport are more robust.

As a postmortem to the legacy content system, it provided a solid testbed for developing the features needed to support an MMORPG. It served as a proof-of-concept of the fundamental design principles, which are now more elegantly realized in the new content system. Most importantly, the new system shall usher in a renaissance of gameplay integration.

Share and Enjoy:
  • StumbleUpon
  • Facebook
  • Twitter
  • Digg
  • del.icio.us
  • Reddit
  • Technorati
  • Google Bookmarks
  • Slashdot
  • N4G