The other day saw an announcement on Mojang website about Minecraft 1.7.6 having support for Minecraft name changes, with the service itself being made available for use at a later time, presumably with 1.8.
Long rant ahead, so grab a cup of your favorite beverage, turn off your cell phone, sit comfy and let’s get started, shall we?
This is a very important announcement. Players that previously thought they’re stuck with strange or creepy names for their entire Minecraft life are no doubt doing a little happy dance right now. On the other hand this proposed change left server owners and service providers scratching their heads. Allow me to explain, there’s way more than meets the eye…
Ever since Minecraft has been introduced player names have been thought immutable. That once picked and bought from Mojang they can never be changed. Mojang itself has never provided as part of the authentication service another unique ID of any sort to uniquely identify players across services, across different sessions from same player and across different servers.
So the entire community that arose around Minecraft servers, and associated services, has been designed around this unique ID: player name. Databases use this player name to tie with their associated data. Plugins use it to provide functionality. Mojang own server implementation uses player name as part of the file name to store player inventory and other detail. Change the name and none of these bits and pieces of data can be found anymore. So far we’re talking about things happening on a single server.
However the issue is more complicated than that. If it were just about plugins across a single server or a group of servers part of the same group, one could simply make a password authentication plugin and be done with it. You’d have to type in a password when you log in to the server, no matter what name you’d be showing up with, and that’ll signal that you’re the same person. The password would then be the unique key, not the name.
Let’s now put this name change in a broader perspective. Player name is a unique key not only for plugins on same server, but for services spanning the entire Internet. Services that often have to work together to be able to provide the rich functionality we’ve come to expect nowadays will stop functioning when players will be able to change their name at will.
Buycraft takes your username and ties that to whatever perks you donate for. Then a completely separate entity, a server half a globe away asks Buycraft “what perks shall I give and whom?” If the Buycraft name and the server name don’t match, player doesn’t get said perks.
What about serial refunders? People that make a habit of refunding their payments. I’m not talking about legit issues or reasonable mistakes. No, I’m talking about people that routinely pay, get some perks or digital goods, refund then move on to the next server and do the same. And they do this to tens or in some cases hundreds of servers.
Buycraft tracks these people by… you guessed it: player name. It makes the names of serial refunders available to server owners so they can protect themselves against this threat, disallowing these players from buying from their store.
This is common practice with any financial institution or service outside Minecraft realm. Do enough shady chargebacks with goods you buy from brick and mortar stores or Interwebz and Paypal, your bank and in some cases even police will take a special interest in you.
Back to Minecraft. Player changes name? Clean slate, so they can start doing their thing again, scam another dozen servers until another name change is in order.
Same goes for global ban services such as MCBans that uses the player name as a global key across all Minecraft servers. Player changes name and from that moment on she has a clean slate since it no longer has a track record of past misdeeds. They’re no longer the griefer Joe, known across the entire community and not allowed even to join most servers. He’s new player Jane with no track record. She starts anew, griefing and disrupting the enjoyment for their own pleasure, until time comes for another name change.
This whole thing isn’t new. People learned to deal with this for ages. It’s the issue of identity change. If you’d done something pretty bad, or other reasons maybe legal maybe not, if you somehow can get a new identity you are a new person with a clean state. No track record of what you’ve been up to that moment in time.
However in real life, having a history of experience to draw upon, people have wizened up and instead on relying on names as unique keys they have used things like social security number or other form of unique ID issued by a central authority that is kept unchanged from the moment you’re born to the moment you die. You can change name, you can change address, you can change jobs, marry or divorce, this unique ID – like your DNA, fingerprints or retina blood vessel network – is always kept unchanged.
For Minecraft, until today, this unique ID has been player name.
In the past Mojang has been known for some less than stellar design or implementation decisions concerning the multiplayer aspect of the game. Things that are perfectly fine and even great in single player suddenly become major hurdles when you put together hundreds of players on the same server. Over time they have been corrected some of these, some still remain today. Client side inventories. Client side player position. Single thread. Server – client communication protocol. Just to name a few of them that worked really well on single player, but have proven major issues in multiplayer, especially when many players are packed together on a single server.
The gist of the matter is, back from inception Minecraft has never been thought as a hugely popular MMO but as a single player game. It’s been said already but bears repeating since this is the crux of this whole rant: design decisions that are perfectly fine in single player or when playing with a family member or three sometimes are not so great in the context of large servers.
Depending on how Mojang decides to implement this name change it can be one of them. If Mojang decides to simply allow players to change their unique ID – their name – at will, without providing another unique ID to track the player for the lifetime of their Minecraft life, things won’t be pretty. Server owners will undoubtedly adapt and find workarounds. But without a central unique ID issued by a central authority to replace the no longer unique player name, services that many have come to rely upon it will cease to function.
Now that we’ve seen the problem, it can be a useful design exercise to think ourselves of possible implementations. Challenged with the task of name change, how we’d go about to implement it? We can learn a lot from this exercise, and later draw upon what an established company has chosen to implement, compare with what we’ve come up with.
Here’s two of my own ideas. If you’re up to it, how you’d make this work yourself? Submit your ideas in the comments below, or on the forums. It’ll prove an amazing brainstorming session, and who knows? Maybe someday in future one of us may actually have to design and implement something like this.
The simplest way this can be made to work is keep the name unique as it is now. Don’t allow players to change it. Provide instead an additional field: the display name. The player name would be provided to backend services such as Buycraft and servers, and the display name would be shown in chat and to other players. Players can choose whatever display name they wish to be known as, while all the existing infrastructure of services surrounding multiplayer Minecraft works as is with minimal changes.
The second possible design choice I’ve been able to come up with is provide a unique hash ID. This is generated when someone buys an account at Mojang and acts pretty much the same way the social security number in real life. This never changes. Players can change their name, their skin or other attributes but never this unique hash. Mojang supplies this upon authentication to servers, service providers and other interested 3rd parties. While server plugins will require only minimal changes it is a bit more complicated to make work for service providers such as Buycraft. A SSL secured form hosted on Mojang servers will ask the player for their authentication details, and return the hash ID to the service provider similar perhaps on how Paypal and others work today.
I for one look very much forward to see Mojang design decisions. It’s a great learning experience. We won’t have to wait that long either. When they release 1.7.6 – sometime at the end of March from what they announced – we might be able to figure out how they went about in their implementation.
And no matter what they come up with, I’m sure server owners and service providers will adapt and make it work.