Pokemon GO Ditto Easter Egg Debunked

Pokemon GO Ditto Easter Egg Debunked
Ditto has always been one of my favorite Pokémon from the first generation, mainly because of how awesome that little dude is. Ditto can transform into any other Pokémon in the game, steal their moves, and then beat them into a bloody pulp. My kinda Pokémon.

But when it comes to Pokémon GO, Ditto is very, well, let’s say absent. Despite the fact that the game has been out for three full weeks now (my god, time has been flying!), nobody has managed to catch (or even encounter) a wild Ditto. Well, that might be about to change.

There’s a group of Pokémon GO fans over on Reddit who are devoting their time to finding the elusive Pokémon, and boy, they’ve tried some pretty wacky stuff to get him to appear. Here are a few things they’ve tried that failed:

They tried to walk away from the starter Pokémon, waited for Pikachu to appear, and then walked away from Pikachu as well. No Ditto.
  • They tried to evolve Pokémon that had the exact same height and weight as Ditto (0.3m and 4kg), but that didn’t work either. Even when the Pokémon were given the nickname of “Ditto”, it failed.
  • They tried to rename certain Pokémon “Ditto” or “Duplica” (Ditto’s owner in the anime was named Duplica; it’s Spanish for duplicate), and then evolve those Pokémon. That didn’t work either.
  • They took a picture of a Bulbasaur in the wild, and hoped it would transform into a Ditto. This one is based on the fact that in the anime, a Ditto transformed into a Bulbasaur but didn’t quite pull it off. But surprise surprise, this attempt failed as well.
They’ve tried so hard to encounter a Ditto, but every attempt thus far has ended in failure. So where exactly is Ditto? Will we be seeing him soon enough? Is Niantic really preparing to release Ditto in Pokemon GO? Let's find out.

We datamined the global-metadata.dat dumped from the 0.37.1 APK today and we have some bad news to report. We are sorry, but there are no references to a Ditto easter egg in the 0.37.1 APK. 

There is no Ditto easter egg reference in the game (yet). Nothing, not even a vague network request, nothing. There are only placeholders in Pokedex and general game settings.

Ditto Easter Egg is not present in the game (yet)

In fact, there are no references to anything related to Ditto except for Pokemon name and Pokemon Family Name. Heck, there are even more references to Legendary Pokemon than there are for Ditto:
POKEMON_CLASS_LEGENDARY
ITEM_EFFECT_CAP_CHANCE_LEGEND
ACTIVITY_CATCH_LEGEND_POKEMON
Here are some answers to frequent questions people ask when Ditto is mentioned:

Q: LIES! YOU ARE HIDING THE EASTER EGG SO YOU CAN GET IT?

A: Well, we’re not but feel free to run the same test we did if you are convinced otherwise:

  1. Download a File explorer for Android
  2. Navigate toAndroid/data/com.nianticlabs.pokemongo/files/il2cpp/Metadata/ and extract the global-metadata.dat
  3. Open it in a hex editor, we used HxD
  4. Start digging
Q: This file contains no Sparky/Rainer/Pyro or Pikachu starter references, yet all of them work! Boom, debunked!

A: Eh, we wish if this was so easy… Pikachu starter is obtained as a result of server side messages named SpawnPokemonNearPlayer and GetGoodSpawnLocations that the client receives from the server periodically. A similar thing happens for Eeveelutions trick, just the message is called OnEvolution.

Sorry, but both easter eggs are completely server side and you should not look for them inside global-metadata.dat.

Q: Well yes, you just said it may be server-side and thus not in the local game code?

A: Every server side request has an accompanying handler inside the global-metadata.dat, including Fort (Gym) battles, item usage, Pikachu jumping from the ground to your shoulder, obtaining Egg candy bonus etc.. There are no client side handlers for Ditto related messages, not even one. So no, it is not hidden on the server side – there is no magic unlock Ditto mechanism hidden in the binary, if there is no message handler that action is not possible and that’s the end of it.

The only possibility for Ditto to be a server side easter egg is if it is obtained from evolutions, spawns or distance walked. It’s safe to assume that given the number of times each of these actions has happened worldwide, that it’s not on the server side.

Q: Wait, why should there be any references in the file?

A: The global-metadata.dat contains a compressed version of the source code metadata, including the names of all constants, method signatures and non obfuscated client code. There is more hidden in the binary, but it’s mostly media resources. Every other client action is visible in the .dat file, including network messages, protobuff handlers etc.

For example, the “Pikachu jumps on your shoulder” Easter Egg is fully visible and readable from the dumped hex code, given that the code references two types of Pikachu buddy (groundPikachu and shoulderPikachu):
.get_GroundPikachu.OffsetRoot.OffsetPokemon.ZoomToBuddy.<PostInject>
 m__2C4.mediumOffsetAmount.bigOffsetAmount.buddyNodes.groundPikachuScale.groundPikachuOffset
 .pikachuShoulderCandy.buddyPositioner.buddyCameraAnimator.AvatarRoot.GroundPikachu.BuddyNode.buddySize.<CreatePokemon>
If there was a Ditto easter egg hidden in the source code, global-metadata.dat would show it – either through method calls, method signatures or constant names.

Q: But Ditto has 2 moves in GAME_MASTER (Pound and Struggle)?

A: Yes, so do Zapdos, Moltres, Articuno, Mew and Mew Two. Every function in the source code that references Pokemon moves expect the Pokemon to have a Quick and a Charge move. These parameters are NOT optional, which suggests that Ditto’s moves are merely placeholder moves. Same goes for legendary Pokemon.

But don’t take our word on it, here’s a full dump of the extracted text:

Q: But Hanke said there is a way to obtain Ditto on TechCrunch event?

A: No, he jokingly said that the host will definitely get Ditto as a hardcore player. We wish he said something else, but John is an elusive guy.

Data mining methodology

We used HxD hex editor to extract strings and methods from the .dat file. Afterwards, we used Sublime Text editor to reformat the text and break it into new lines. Find option was used to count occurrences of strings.

Subscribe to receive free email updates:

0 Response to "Pokemon GO Ditto Easter Egg Debunked"

Post a Comment