Through my years working at BioWare and especially during the development of Neverwinter Nights I really learned to appreciate the advantages of opening up the software so that users can tinker with it. Specifically this began with allowing the designers working on Baldur’s Gate 2 and then Neverwinter Nights and beyond to have more control over the content they created without needing to have programmers make changes to source code. This led to the development of a robust scripting language and a plethora of kick-ass tools for creature placement, level building, writing dialog and so on. One of the reasons LittleBigPlanet is one of my favorite games is that it allows users to build their own levels (and I’m looking forward to the sequel!). Giving users tools creates a more flexible product.
When developing YourOtherMind, the writing platform, I tried to keep it as open as reasonable. Most lists can be modified through the options menu menu, random languages for the Naming Central system can be created by end users and an export pipeline exists for users to export their writing into other formats using their own converters. The tricky thing with creating tools isn’t the actual enabling of customization — its not anticipating all the things people might want to customize!
Software developers — not just those making games — should always take a look at whether it makes sense to deliver a toolset or at least documentation on how to ‘customize’ their product. It might not always make sense but advanced customization creates a stronger attachment between the customer and the product with the potential for the product to have a much longer lifespan than it would otherwise. It can also create an environment where end-users show off features that can be incorporated into official updates. It is also a great way to identify new talent — those who hack your software in the most innovative ways might be strong candidates for new employees!