Thoughts on database management in role-playing games
I’ve just started a research project on the IT-like technology of games and virtual worlds, especially MMORPGs. My three recent posts on Guild Wars attracted considerable attention in GW’s community, and elicited some interesting commentary, especially for the revelation of Guild Wars’ very simple database architecture. Specifically, pretty much all character information is banged into a BLOB or two, and stored as a string of tokens, with little of the record-level detail one might expect. By way of contrast, Everquest is run on Oracle (and being transitioned to EnterpriseDB), at least one console-based game maker uses StreamBase, and so on.
Much of the attention has focused on the implications for the in-game economy – how can players buy and sell to their hearts’ content if there’s no transactional back-end. Frankly, I think that’s the least of the issues. For one thing, without a nice forms-based UI you probably won’t create enough transactions to matter, and integrating that into the game client isn’t trivial. For another, virtual items can be literally created and destroyed by the computer, with no negative effect on game play, a factor which drastically reduces the integrity burdens the game otherwise would face.
Rather, where I think the Guild Wars developers at ArenaNet may be greatly missing out is in the areas of business intelligence, data mining, and associated game control. Here are some examples of analyses they surely would find it helpful to do.
- When they find a “gold-seller” — somebody who plays the game professionally and sells in-game commodities for real money – what are the characteristics of that account? E.g., what patterns of trading and/or playing behavior reliably flag a seller, as opposed to a generous person who makes gifts to friends?
- Which rare loot is the most popular to be kept by “wealthy” players?
- Which skills are use by whom in what ways?
- Which modifications are deployed on the equipment players actually use?
And I could keep going.
What these questions have in common – other than that answering them helps make the game better and more appealing to its players – is that to answer them, it is extremely helpful to deploy one or both of two database technologies. One is ordinary relational DBMS; e.g., if you have the inventory info in traditional record formats, it’s easier to do cross-player queries. The other is memory-centric event processing. Thus, if you have a stream processing engine (StreamBase, Truviso) or an in-memory (fully or hybrid) RDBMS (SolidDB, TimesTen), you can capture, filter, and selectively keep all sorts of moment-by-moment gameplay info that otherwise gets discarded or else is aggregated only on a very gross basis.
My sense is that some other MMORPG makers are ahead of ArenaNet in these regards, but I don’t know how far ahead. I hope to find out soon.
Comments
Leave a Reply