I've got a simplistic idea on how this could be done and wanted to share it.
Some assumptions:
Let's assume we have 3 environments (games) Game A, B and C. They are similar in some concepts and vastly different in others.
Let's assume we have one user, Joe, who wants to play in all three environments.
Step 1:
Joe signs up for Game A and plays it. All information is stored within Game A as normal.
When Joe logs out of Game A. He is given a url that will contain all his information.
www.GameA.com/userInfo.php?userID=10
Next Step:
Joe now wants to play Game B. He has the option of entering in his url or registering as normal.
Once given a url Game B will request Joe's information from Game A.
Game A will response with pair values, like so:
UserName=JoeGame A will also record the fact that Game B requested information. This will come into play when Joe goes back to playing Game A.
Email=joe@somewhere.com
Score=1000
Money=500
CharacterName=Killer
CharacterHP=50
CharacterMagic=40
etc...
etc...
Game B will take the values it can use and create/update Joe's account within it's game environment. Such as UserName, Score and Money. (Maybe this game does not have characters)
Next Step:
Joe is done playing Game B. As he logs out he is given the opportunity to get a new URL or he can update Game A.
If Joe decided to update Game A, Game B will send a request to Game A letting it know the url it can find an update at.
www.GameB.com/userInfo.php?userID=99
Game A will go to that url and process all of Joe's information, updating it's stats as needed.
Thoughts:
One of the advantages of this system is that if Site A were to disappear or be unavailable, Joe still retains all the information from Game B. It's even possible for him to save information from Game A, if the site does disappear, if Game B has it saved.
For those who are worried about malicious use of the system, it would be quite easy to code the update process to only allow updates from certain game sites. If you did not want to see updates from Game C, you could exclude that site from your updates by looking at the request url.
Alternatively someone could offer a service where "trusted" games can exchange information.
The user information could be in an XML document, but I have found that the ease with which you can build key pair values is easier to build and search then XML documents. I know the advantages, I personally don't think the advantages out weigh the disadvantages in this case.
This is a stab in the dark any thoughts and comments are appreciated.
1 comments:
I like the idea, but I don't like the method you've come up with. oAuth would be a much better way of linking accounts across sites, both for ease of use by the player and security.
In the above example, anyone who had the player's link would be able to see their email address, and even if personal information wasn't shared at all, access to the link could still give malicious players an unfair advantage in something like a strategy game where part of the gameplay was based around not knowing how strong your opponent was.
With oAuth, instead of needing to copy and paste a URL, the player would just be able to log into GameB, click a button that says "Link to GameA!", and the two games would be able to link accounts. After that, the two servers could sync data at will (server-side, so the player wouldn't need to do anything other than play the games) until the player chose to break the link.
Post a Comment