So I saw a link first thing this morning for Myst Online's developer page which stated that Myst Online was being open sourced. The page is somewhat vague as to when, what's already been accomplished and so on. So I started to do some research. This sounds like a pretty exciting thing for the open source MMO arena. It's nice to see games like Planeshift and Peragro flourish from a pure community but the introduction of large code bases to the open source world does nothing but good to foster other projects. I think NeL is a good example of that despite the fact it's use in the wild is still somewhat limited. One of the key things that the open source world gets when these kinds of projects open source: knowledge.
I can safely say from personal experience very few of us hobby game programmers have done this for real, for a living. We've never completed a game on a timeline in a structured environment with responsibilities. We haven't had the pleasure of working with seasoned veterans that can help prevent us from wasting precious time on concepts/designs that simply won't work or don't scale. This last one is one of the major reasons I never seem to make any progress in Werewolf. After several tries at a problem area (which means several large refactors) I finally squash a problem. Then I realize that I need to move on to the next problem space. Sometimes this means that I didn't think something through on the previous problem and have to refactor both.
What I'm trying to get at here is that by having large professionally developed MMOs source code available to the public projects like mine can begin deriving ideas and best practices for their own project and their own needs. It means when I face the next big problem space I'll be able to look at someone who is doing it and more than likely doing it right and start getting ideas. In fact I'm kind of hoping that I can look at the tools that Myst Online uses for world building as maybe an inspiration for the tools that Werewolf will implement. Now that I think I have a workable entity and component system with a definition manager (the ability to define entity types and then spawn instances of them) completed in testing and will be shortly going about implementing into the main game the next challenge I face is world building and layout.
As with any task or project you need to know what you're doing before you do it. This is a valuable lesson that Werewolf learned the hardware and because of it I've been teased with comments like "I thought Werewolf was just fiction and not really a game." So I started looking at what else was out there and was astounded by the cool factor of the Torchlight Editor . I figured this is what I need. While you can download and play with Torchlight's Editor it's clearly not open sourced (yet?) and so other than an inspiration not entirely useful to me. However Myst Online will be releasing Plasma and the accompanying Plasma20 3DStudio MAX plugin. While I'd love to see a Blender plugin for NeL the reality still is that most content creators will still need to have 3DStudio MAX to create content for NeL so "ideas" from the Plasma20 plugin may meld nicely with NeL Ligoscape plugin for MAX. For the uninitiated Ligoscape (or the NLLIGO module) is the underlying library and file format that NeL/Ryzom world editing is based on. Unfortunately do to the lack of documentation on Ligo and the fact that Ryzom isn't open source this really doesn't leave me much to work with.
In the mean time I'll keep working on my own direction and hope for some inspiration. I'd also like to think Trefall for his article on the OGRE forum about Component/Entity systems . This has been instrumental in my redesign of our entity system. While my sample greatly reflects his sample by the time I get to merging it into WWCOMMON it will be a wholely independent system. Chiefly the changes will be that I use events and not commands and my components likely will become singletons managed by the component factory and will not have a unique instance per entity. It seems silly when considering the objective of scaling to thousands of entities to spawn a large number of components. Lets say that I have on average 9 components which each have 5 properties.. This means in a 1000 entity zone I'll have 15,000 objects created. If I made components statics (like I do with my state classes) I now have 6009 objects instead.
Anyway look forward to a demonstration of the new system in the next couple weeks...