By now, you’re probably painfully aware of the problems that are plaguing the biggest of Nintendo’s mobile apps, Pokemon GO. A crossover of sorts with Niantic Labs’ augmented-reality sensation Ingress, GO tasks players to venture through a world, capturing Pokemon and battling them against others. The twist is that the world being explored is our own– literally. GO uses the player’s location data on their smartphone to track what Pokemon are nearby. So you might encounter, say, a Drowzee at your favorite all-night diner, or a Zubat near the tunnel you take to work. It’s a fantastic concept, and based on what I’ve played so far, it is an amazing game.
I wish I was playing it right now.
The game’s launch, starting Tuesday night in Australia and New Zealand and ongoing as I write, has been an utter, unmitigated disaster. This is a failure that’s to be expected from new online developers, but not necessarily from Nintendo and certainly not from Niantic. In short, what should have been the opening fanfare on the series’ 20th anniversary celebration is rapidly turning into a bloodletting that threatens the Pokemon brand as a whole. There are three core problems plaguing the game right now, and each one is directly traceable back to either Nintendo or Niantic not doing something they should have. These are sins of omission, things that any experienced developer only ever faces once before correcting them in their next project.
The first, and probably the one people are most upset at dealing with right now, is the flawed to the point of useless login procedure. Upon starting the game for the first time, the player is asked to log in either through a Google account or their Pokemon Trainer Club (PTC) account. The PTC option is the best choice, because it is (ostensibly) tied in to all of your other online Pokemon services– your Global Link account for the games, your online card game account, your real-world card game ranking, etc. Unfortunately, this requires the game to authenticate against the PTC, which is a massive bottleneck. The single-sign-on server has been reduced to rubble since noon today. Now, if you were to log in via the Google account, you might be able to get in… but your data is tied to your account, not your device. So if you had managed to get a good start on the PTC account, you would have to start from scratch on the Google account.
The solution to this is simple, from a standpoint of any developer who’s ever had to build a login portal pass-through of any kind: store the login as an encrypted token in your database, and issue the user a token that corresponds to their data on your system, not the authenticator’s token. This way you only go out to the authenticator when you absolutely need to, and not constantly re-authenticate. In addition, by not tying data to a remote authentication token, you can then allow a user to link multiple login methods to the same data, in case they don’t have (or want to create/use) one of the offered login options. Going to the authenticator is a costly action, and as a developer it’s your responsibility to minimize that cost. This is basic stuff for any kind of distributed system, not just highly-complex ones.
But more than that, the existing login scheme violates an emerging mobile-app design trope: it asks for a username and password on every launch from the title screen (and the game frequently crashes back to the title screen, trashing its login token in the process for reasons unfashionable to man and Pokemon alike). I don’t think any mobile game released in recent memory has used a username/password authentication setups as its everyday login. Most rely on secure identification information provided by the mobile operating system, and if the user requests additional protection, it’s secured by the phone’s local authentication (your unlock code, for example, or thumbprint/other biometric key). Smartphones are the last single-user environment in consumer computing. Many apps have tossed aside the archaic and error-prone username/password setup in favor of allowing the app to act as if nobody else in the world even exists. Even my banking applications only ask for my password in dire circumstances; the norm is simply to accept thumbprints as proof of identity and move on.
(As an aside: I labor to believe that Niantic coded the app that way on purpose. What I think happened was that Nintendo, in a misguided attempt to protect users’ privacy, forbade both token caching and account linking. Worse, the PTC login token may have a uselessly short lifespan, on the order of fifteen minutes or so. It makes sense, but at that point, they both should have realized that using the existing consumer-facing PTC login process would be a Very Bad Thing and would develop a similar process specifically for communications related to the app. An N-to-N solution, so to speak.)
The second problem comes in the form of how the app went live. After the game’s open beta ended last week, speculation ran rampant on when GO would have its public launch. You would expect a reference here to whoever had the right day in the proverbial office pool, but in fact there wasn’t even enough time to set up such a pool. The game was suddenly released in the Australia and New Zealand regions on Tuesday night at about 10:30p EDT. There was no fanfare, no announcement, nothing. Niantic wouldn’t even register their support Twitter until Thursday morning. In the official silence that followed, North American users swarmed to create ANZAC-regioned accounts for the Apple Store and Google Store, or resorted to sideloading the game (downloading the game app from an unofficial source and installing it manually, something common on Android but difficult on iPhones).
Setting up regional rollout is not difficult, and certainly it’s not the issue here. But it was botched badly in this instance, because an obvious and elegant solution to the issue presents itself by virtue of the game’s nature. GO requires the player’s accurate location, right? So why not release the app as a “pre-load” in all regions, and then allow access based on location in order to prevent the servers from overwork? This allows geographically large regions– the United States, in this case– to be divided into cascading rollout zones. The simplest zone distribution would be by time zone, but other factors could inform that decision. I don’t think this has been done before in a mobile app, but it’s certainly something to consider.
More damning than the rollout timing, though, was the radio silence out of Nintendo and Niantic throughout the whole affair. These are not plucky indie developers who have to choose between addressing public complaints or fixing their game. They are big enough that they ought to have halfway competent PR groups. (Though given Nintendo’s PR catastrophes this year, I think we can say that they in fact do not have a PR staff that is even minimally competent.) It is absolutely unacceptable to meet consumer queries with disinterest bordering on apathy. I would have preferred even a somewhat hostile response over nothing; at least with a venomous reply, you know they actually saw your question.
Finally, and this is probably the most distressing fault that I’ll address, the game has virtually no tutorial or information on how to play. There is no online manual, no on-screen guides, nothing. I honestly thought my game had soft-locked when I went up a level, because nowhere did it say “Swipe to dismiss” on the all-encompassing celebration screen. Using a Poke Stop (waypoint, which when used gives valuable items like Poke Balls and Revives) was similarly opaque. There is a short explanation of Pokemon Gyms when you first try to use one, but nothing comprehensive on what the Gyms are or what they do. There is a daily login bonus that grants you some of the game’s real-money currency, but nowhere is it explained that it’s dependent on how many Gyms are under your direct control. Battling is a rough affair, especially because while the Pokemon do respect type advantage and disadvantage, getting a Pokemon to use their special move is not explained at all. And in the absence of this information, players are falling back to approaching the game like any other Pokemon game, when it is definitely not meant to be just another main-series game.
I’m going to be perfectly clear: Pokemon GO is a good game, but it is not a traditional Pokemon game. Battling and trading are the focus of the handheld games. GO is not about that. GO is instead about exploration and collecting, and indirectly about area control in the real world. If you go into this game looking for battling and saving the world, you are going to be disappointed. Instead, if you view the game as an incentive for physical activity, similar to critical darling Zombies, Run!, the game becomes much more engrossing. The real-world aspect of the game may feel gimmicky, but it is integral to the game’s design.
So having players approach the game as a traditional Pokemon adventure does it a disservice. If it were more obvious to the player that going out to Poke Stops to restock your is more economical than buying them from the cash shop, the player would do that. If it were stated that controlling Gyms grants the player free cash shop currency, the player would do that, too. Even basic information like attack type match ups would be helpful. Without that information, the player runs a high risk of frustration and boredom– two things lethal to any game. The game is too complex to approach solely on intuition. A tutorial should be the next top priority for Nintendo and Niantic.
Pokemon GO is, I still assert, a good game. But it has not had a good start. I mentioned way at the top that the catastrophe that is this launch could poison the Pokemon franchise as a whole. That was not hyperbole. Think about how Star Fox Adventures was the first harbinger that the series would never again reach its former glory. Or how Xenosaga Episode 2 killed the hopes of that series reaching its full conclusion. One game, if it’s bad enough– or perceived enough as bad– can ruin a franchise beyond salvaging. I think Pokemon GO has a good chance of undeservedly being that game. And should that happen, I will weep for it, dry my eyes, and move on. I just think it’s a little early to start digging that grave.