How to build an IM-reachable MMO
From AJS.COM
- This article has been turned into a blog posting on Aaron's Essays.
Building an IM (as in instant messaging) reachable MMO has been a problem I've been working on as a mental exercise for some time. In this essay, I'm going to use World of Warcraft as a model, since a) it has a large user-base b) it seems to have all the parts required and c) I'm familiar with it. I won't use EverQuest, which supported some limited IM features, but really stopped too short, in my opinion.
Contents |
Components
The components are nothing too shocking to those familiar with MMOs and IM:
- An IM system with a public API
- A way to communicate in-game between players ("tells")
- A way to create unique communication groups ("channels" in MMO terms or "MUCs" in IM terms)
- A way to specify lists of trusted users in-game
- A unique way of addressing all users of the MMO
That last one is a challenge in most MMOs, as there can be lots of non-unique names across regions, languages, third-party versions (e.g. the Chinese version of World of Warcraft). In WoW, I'd suggest the following naming:
<character>@<realm>.<region>.worldofwarcraft.com
so, for example, "elfsmash@argentdawn.us.worldofwarcraft.com". Or...
channel:<name>@<realm>.<region>.worldofwarcraft.com
so, for example, "channel:tradediscussion@argentdawn.us.worldofwarcraft.com".
Connecting to the IM system
Jabber is the IM system I'm proposing, here. It has the advantage of being a standard protocol (XMPP
) and being well tested by large, commercial users (e.g. Google's Google Talk system). It also allows complete interoperability with existing Jabber users, so in-game messages could be sent to real-world IM users and visa versa on day one without commercial agreements.
Connecting would require the creation of a gateway XMPP server that provides all of the services of a normal Jabber server, but does so by proxying requests back to the in-game chat servers. Most of this gateway/proxy code could be based on an existing, open source implementation, and need not be written from scratch. In essence, Blizzard has already written most of the system, and only require a thin layer of glue to connect it to the outside world.
Multi-user chat (MUC)
Multi-user chat or MUC is the generic term for any chat room or channel where multiple users can communicate in a broadcast fashion. In the game, existing channels could be gatewayed the same way that users are. There's no additional complexity, since the game's concept of a channel is a 1:1 mapping to the IM system's.
Protecting users
Of course, the moment "elfsmash@argentdawn.us.worldofwarcraft.com" is a valid Jabber user, that character will start getting IMs, some wanted... some not. To protect users, a white-list model is the most effective protection. To start, such a whitelist could be integrated with the existing in-game "friends" list. Adding "joe@example.com" to your in-game friends list would allow the system to accept incoming messages from that user.
For MUC, a value associated with channels could specify how open they are to public contact. A default setting of private would protect users from accidentally opening themselves to external communication.
Extending existing controls
Some controls exist over in-game communication already in most MMOs. World of Warcraft, for example has an "ignore list" feature (a blacklist) and does not allow communication between players on either side of the two primary factions (the Alliance and the Horde). How these should be maintained or extended is a matter of policy, but if they were to be extended into the IM space, then that could be done with minimal difficulty (simply not allowing Horde players to communicate with Alliance players regardless of what realm or region they are in).
There is no way to prevent someone from running an external IM application in order to circumvent these policies, but then there is no way to do that now, either (and people do use external IM and voice chat systems to communicate cross-faction today).
Benefits
The benefits of adding external IM into an MMO are many-fold. Obviously, it allows players to stay in touch with real-world friends and family while playing. However, it also provides more exposure for the game's primary retention model: social interaction. That is, it allows non-players to see that the game is a venue for social interaction and not just a hack-and-slash video game.
The wider benefit is one of entrenchment and barrier to entry. If one MMO has full IM integration, then who would one to play a new one that didn't? It's a smart way of locking customers in to your game, or at the very least adding one more feature competitors must implement.
BlogMarks
del.icio.us
digg
Fark
Furl
Newsvine
reddit
Segnalo
Simpy
Slashdot
smarking
Spurl
StumbleUpon
Wists