I wanted to ask a question regarding data persistence strategies for an MMO. I have some experience in the games industry with social synchronous games. At Zynga, we stored static proto data in XML on both the client and the server and stored instance/runtime data in membase. For clarity sake, proto data for a Potion would be PotionName or MaxCharges, while runtime/instance data would be something like ChargesRemaining. So basically, if a player picks up a potion the instance is (via prediction) created from XML data on the client, the request gets sent to the server where the instance is created from XML and then added to membase.

Is the same strategy that would be used for soemthing like an MMO? Would it be feasible to have static proto data in some kind of in-memory no-sql database on both client and server with instance data being stored on the server in a more enterprise level database? Or should all data (proto/instance) be stored on the server and the client gets everything from server?

I know a lot of this might on certain game requirements, however, i'm basically looking for some general opinion/best practices here if there are any.


1 Answer 1


Is the same strategy that would be used for something like an MMO? Definitely, but up to a point. The static data is typically deployed with (or patched to) the client and dynamic data is presented by the server when necessary.

But in between those 2 extremes are bits of static data that you don't want to sit on a client all the time. This might include the stats for secret items, or map data for hidden areas. On the server, this will probably be stored in the same way as the other static data - but it'll be sent to the client on a need-to-know basis.

As for the actual storage strategies, there are almost as many approaches as there are games, because each game makes different requirements on the data. On the server side, myself and others supplied several answers here: What kind of databases are usually used in an MMORPG? And on the client side, their 'in-memory no-sql database' is often just a data structure they wrote themselves based on reading in a file format they may have also written themselves.

  • \$\begingroup\$ Kikaimaru linked to WoW wiki, that says WDB files are cache files. I thought emphasizing this fact would nicely complete second paragraph here: you don't want to give a client info about all possible items, because sooner or later someone will decode it and make public. Unless you want it to be public, that is. \$\endgroup\$ Commented Oct 4, 2012 at 16:15
  • \$\begingroup\$ Thank you, I hadn't considered the concept of secret items, hadn't gotten that far in planning but definitely something I need to consider. \$\endgroup\$
    – JasonG
    Commented Oct 4, 2012 at 16:16

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .