Who Are You?
First, this is not...
- a metaphysical, thought provoking post on self reflection.
- a quote from dinosaur rock.
- an into to any of the hundreds of variants of CSI.
- a launching point to call you a nerd reading a blog about a video game.
This is an outline of How PlayDom identifies you, and what you can and cannot do about it.
The app running on your device requests quite a few permissions. The two relevant to how PlayDom identifies you are:
- Read phone status and identity
- Full network access
Read phone status and identity give them permission to retrieve a value called your Android ID. That value, and that alone, is how PlayDom knows you. Network access is how that value gets back to their servers, where that value (or a hash of that value) is stored. Each time the game starts, it checks with the server. If your Android ID has been seen by PlayDom before, it sends all your game data values (recruited heroes, hero and agent levels, gold, SP, CP, silver, gear, etc.) to your device and you resume. If they've never seen you before, they create an account for you and you start from scratch.
A Bit More on the Android ID
I don't expect everyone will have followed the above hyperlink and completely understood the developer documentation. Here's what the layman needs to know.
- You get assigned a new one every time you do a factory reset.
- A factory reset generates the new one at random.
- You do NOT need root access to read this value. Any app (i.e. MAA) that requests "Read phone status and identity" can see what it is.
- You DO need root access to write the value to your device and set it to a specific value.
What This Approach Enables
The main reason for using a device ID to identify an account is it allows for a new player to instantly start playing. 0% of new players abandon the game because they get to some "create account" prompt before they can actually start playing and say "Screw this, I'm not giving my Facebook / Google / Twitter / e-mail / DNA sequence / whatever to this game.", or "Screw this, I don't want to remember ANOTHER password." if they were to roll their own.
I hope what they store server side is a salted hash of your device's actual value. First, that's more secure for the player base. Second, it would be a viable excuse for why PlayDom support refuses to assist in account recovery.
What This Approach Prevents
Unfortunately, it completely ties your game to your device. Not just your device, but the current incarnation of your device. Hard reset a flaky device, and your game is gone. Save your new bride at the expense of your phone, and your game is gone. Flash a new ROM, and your game is gone.
What You Should Do
If you've got an MAA account that you've made more progress on than you'd care to redo, go backup your Android ID RIGHT NOW. No reason not to. It's a 16 character text string.
- Paste it into Keep, Evernote, or OneNote.
- Memorize it (older people, you may need to make some room, so flush away unimportant info like spouse birthday or anniversary - trust me, they'll remind you every year once you miss it, so no need for you to remember too).
- Tattoo it on the inside of your forearm (has enough time passed to make concentration camp jokes yet? If not, chalk it up to a combination of bad taste and Godwin's Law and move on).
- Don't trust technology and fear needles? Chisel it into a slab of rock. Your wife probably has some marble or granite in the kitchen just doing nothing - go put it to good use.
- If you have root, Titanium Backup (with the Pro key) has a nice, fluffy GUI wrapped around backup (and restore, but more on that later) of this value.
- I guess, in theory, pen and paper could work as well, although I have not tested that approach and therefore cannot personally vouch for it.
Point is, it costs nothing and requires no effort to back it up. Devices aren't designed to be cross-generational family heirlooms. They're actually designed to be disposed of every 2 years - just ask your carrier. And that's best case. The 6 year-olds in China may have been a little tired at the end of their 20 hour shift when your particular device got made, so it may fizzle out on you unexpectedly before that. Or you may meet a nice gentlemen that thinks he is more deserving of possessing your device than you are, and his handgun makes his argument quite compelling. Odds are you won't think to respond "Yeah, okay, you can have it. Just let me make a backup of my Android ID first so I can continue my dumb video game on my next phone first."
There are several ways to go about retrieving the value for backup. The most user friendly I've found is an app called ID Info for Android. It'll look it up and show it to you, and get it on your clipboard with a tap. From there, use one of the above methods, or invent your own, to save it someplace for safe keeping.
What You Can Do
So you're moving to a new device for whatever reason, and also, for whatever reason, want to continue your MAA game. You were a good monkey and followed the above instructions and have your Android ID backed up somewhere. Now it's time to write that value to your new toy. This will require root access on your new toy. That's a whole other rabbit hole I'm not going to go down here. Use a site like XDA or Android Central to figure out the details for your specific make and model. From here on, in this section, I'm going to assume you have root access.
Unless you're doing the Titanium backup/restore process, SQLite Editor is required for my preferred method. It will request root rights and access system DB's (when granted root rights). The database you want to write to is com.android.providers.settings. The friendly name appears as "Settings Storage". You want settings.db, "secure" table, and the record you're after will be identified by the field "name" having a value of "android_id", and you'll be updating the "value" column of that row.
There are doubtless other approaches, but I can personally attest to the fact that I have used both these methods in the past, and unless something drastic changes (maybe in Android L? Only time will tell), these both work.
But...but...My Warranty! Or My Game Progress! Sophie had it easy!
Two tasteless Godwin's Law occurrences in one blog post? Shame on you, internet.
Anyways, yes, rooting your shiny new device may technically void your warranty. Odds are you'd be able to factory reset and/or unroot if you ever had a warranty problem, but I get it, you may not want to take that risk. You have another option.
Continue your game on a virtual device. There's a decent thread on the process already, and this post is obnoxiously long already, so I'm linking to it instead of restating it.