I am in the late functional Design stages of an Indy MMO, and the early technical design stages (Secret for the time being), so a couple of weeks ago when I was searching for a very inexpensive, scalable, smart solution to the ’server problem’ all MMO’s face, I found Darkstar and a couple other MMO backend products. Darkstar is an Open Source server platform developed by Sun Labs, specifically created for massively multiplayer game creation. It has a long list of useful features, and allows the development team to build application logic directly on top of it while handling all the low level server tasks which are traditionally the most difficult – concurrent data access, user connection level loading, multi-node scaling, and persistence across server crashes or shutdowns.
I looked carefully at several server platforms by analyzing technical documentation, 3rd party opinions, and in the PDS (Project Darkstar Server) case, actually building out the examples and looking over some of the source code. The result is that I have (tentatively) chosen Darkstar as the technology for my current project, and thought I would post my analysis here for those who may be evaluating MMO creation themselves. Darkstar is currently in pre-release, and this analysis is based on it’s current state and assumes successful a node scaling implementation which is expected within the next 6 months. This is a high level analysis of the Benefits and Risks of choosing Darkstar as the back-end server platform for an MMO (with small teams and Indy projects in mind, and not a lot of extra cash). Left out of this analysis is any direct feature comparison with other products. For more information, I recommend visiting their website and reading the forums, or even trying out some of their code examples yourself.
Benefits of Darkstar as a Server Platform:
- Darkstar is Open Source – I like open source because it’s possible to contribute back to the community, and support a good thing in software. Open Source products have saved me thousands of dollars over the years in license costs, so I tend to want to support their efforts. This may not apply to all teams reading this, but is a key point for me. Additional benefits of open source are deeper understanding of underlying technology, and the ability to customize and support a product regardless of what entity initialized it. You also have a good chance that many other teams are adding useful features and tools into the code base.
- Darkstar is Free! This beats every other server solution. Although there are some other free servers out there, none have much in the way of functionality needed for a back-end MMO. For a small game shop, this significantly reduces game production risk. It also avoids one of the success pitfalls, which is needing to scale up server licenses quickly if the traffic is not sustained while hoping revenue will also follow along. PDS offers (or soon will) easy scalability in both directions at no cost.
- Scalable! Though not quite complete, the vision of PDS scalability is unmatched in other systems today. Both the ease and method of scaling cannot be found in other systems today (at least not at Indy price point). If you want to find out more about how scaling works, I suggest you take a look at this video demonstration of capacity level loading across nodes.
- Superior Capacity Planning – The fact that the code base is free along with the scalability function of the product gives a unique advantage in deploying or removing capacity. If paired with a cloud based server environment, it is easy to add machines quickly as you scale up, and if demand drops off, to quickly scale back down and save costs. If the game has seasonal fluctuation or sudden peaks, this is a key cost advantage over other systems.
- Excellent reliability in the data store – Though I have not fully tested it, the basic model avoids a key number of issues found in other server implementations around reliability of data. The primary example is the avoidance of duplication bugs and in memory errors seen in some other MMO’s. The data storage mechanism is unique and robust.
- The Server base is really tailored to multi-player games. Other server systems are typically geared towards chat, large numbers of rooms (or shards) with few players, or other server side functions, and toss in virtual world building almost as an afterthought. Once you get past a lot of the marketer-speak on many other systems, the technology doesn’t seem to be there to the same extent as PDS. What this means to a development team is that much less time worrying about the server logic and that much more time implementing game logic when using PDS.
- Server side game programming is easier and faster (and thus more reliable and less expensive) then any other server system I have seen. PDS offers developers the illusion of programming a mono-threaded application while maintaining a highly concurrent state. There is a number of convenient API’s for using the server, and the PDS API is quick and easy to learn. This reduces the potential for programmer error in server side programming for massive environments.
- PDS implements roughly 80% or more of server side programming not related to game logic. Ideally, a game server would implement 100%, but I don’t think such a thing exists today. The amount PDS has achieved is incredible and blows away other server system I have seen. Since it is still in pre-release, I expect more down the line, and much of it is on their product road map.
Risks of using Darkstar as a Server Platform:
- No SQL Database back-end. Darkstar chose a design pattern which uses a database and serialized Java classes. It is very easy to code in, but makes viewing your data virtually impossible. Though this design decision is behind many of the benefits listed above, the trade-off makes several critical game components much harder. The repercussions for this are numerous and varied, and are a downside of choosing the PDS. I have listed the main problems this causes below.
- In order to update an objects’ current state as an admin or GM outside the game rules, custom interfaces must be added as opposed to using direct SQL tools. It is significantly more complicated to write such a tool then to write a web front end to a database.
- Historical reporting is not a freebie as in other DB systems – Server design must include asynchronous writes to a DW DB, as opposed to using DB to DB datawarehouse methods, which is currently a well defined and solved problem. This is not as big a problem as the first, since it should be relatively easy to implement. Additionally, a large game server would need to implement something like this anyway, to avoid contention on their main database.
- The server state itself relies upon the data store. If you want to change certain code objects (An initialize method on server startup which creates many objects only on the first server start, and non-serializableable compatible class changes), you must also remove your data or use another method such as merging changes. This makes future server patching much more difficult. It also blurs the line between what is game data and what is game logic. Since there are certain methods and objects which can’t be easily updated without potentially harming player data. It is possible a third party, which has already developed a tool to make this easier, will release something to the community, but it remains an issue for the foreseeable future. The technical details of what this means are complicated, and if you are considering Darkstar, I recommend you read up on these issues on their website to get a fuller understanding of exactly how a code patch might look.
- Long term platform support is unknown. Currently, the only support is through forums or logging a bug issue. Since there is no formal paid support option, there is no real hope that critical issues will be handled in a reasonable amount of time as in some other open source projects. Having the code helps in this case, but it would be good to be able to get support at some point if needed, especially if the game turns into a breakout hit.
- Oracle/Sun acquisition. Unfortunately, due to regulatory issues, it can’t be discussed yet by the Darkstar team or Oracle, but Oracle has a mixed record on Open Source when it does not suit them. The long term viability of a project which is not aligned with Enterprise database software seems low to me. From the outside, I judge the probability of Darkstar being Oracle supported years from now to be moderate to low. That leaves long term support and improvements to the community, if a team picks it up at some later date. Historically for open source, there is not a great track record of this happening, especially with highly specialized open source software. Selecting this server technology means the team will have to take on the risk of self support and improvement for the code base years from now. Another related worry is if the Darkstar team itself leaves, as several other high profile Sun professionals have done in the past few months.
- Documentation lacking / not regularly updated - Things on the server side are changing fast, and the documentation does not keep quite up. It is still in pre-production release, so this is not a really a fair criticism, but examples, training, and documentation is still sparse for such a complicated system. There is plenty of material for learning the basics and to get you started, but detailed manuals do not yet exist, and support tools are not offered.
One note on the list of risks to those who might look at this for their own projects. The risks can be broken along two specific lines, one is long term supportability of the product, and the other along the lines of how much work will it take to design a game out of the box. This second criticism is valid, but if you compare Darkstar to other solutions on the market, the work entailed to bring you to the same level as PDS currently offers is far greater. In other words, if you are making a buy decision on server software for MMO style games, every server I have come across has a long list of server functionality gaps, but Darkstar only has the ones listed above (which end up being far fewer then other products I have looked at). As for supportability, that is something common to most new open source projects, and not unique to Darkstar. I think the Oracle acquisition adds to the uncertainty significantly compared to when Sun was still independent, but I am hoping to gain clarity in the future, perhaps once the EU clears the deal.
The Final Say
Given the not insignificant downsides, you may wonder why I have chosen Darkstar for my own projects. The real reason is functionality, followed closely by cost. First, a quick note on functionality: it is unmatched. Yes, there is a lot of work required to make sure patching is viable and you can modify and track data. However, both of these issues are currently widely discussed by the Darkstar community, and it seems reasonable to assume they will be tackled in the future. Now, a quick look at costs. See my other post on Indy Game Economics 101 for an in depth view of game revenue vs. cost, but with a server that takes no upfront cost or licensing cost, it is the best value for the money. Support costs may be higher if internal support requirements grow rapidly, however existing projects don’t seem to have this complaint.
