Recently, we published a guide on how to extract & decode the GAME_MASTER file, using our GM Decoding utility and your Android smartphone. However, we did not explain what is the GAME_MASTER file and how Niantic uses it in game?

Explaining the GAME_MASTER

The GAME_MASTER (GM in the rest of the article) is a configuration file for Pokémon GO. It’s downloaded from the Pokémon GO servers and saved onto your Android or iPhone device.

It’s a file that contains the following information:

  • Pokémon specie metadata
    • Moves
    • Stats and size (ATK, DEF, STA, weight and height deviations, etc..)
    • Candy requirements
  • Pokemon Type metadata
    • Attack modifier coefficients
  • Move animation
    • Camera configuration
    • Resource names
    • Animation details
  • Item listing and accompanying stats
    • Pokéballs and their effects
    • Potions, Berries, Incubators, etc…
  • Various numerical scales and values
    • EXP requirement per level
    • Badge requirements
    • Gym and training configuration
    • Pokémon
    • etc…

As you can see, it’s a very, very, important file for the game, as basically everything players care is written and hidden inside. The existence of this file made possible websites like TheSilphRoad, PokéAssistant and the GO Hub.

To explain the usage and various roles of the GM file, we first need to remind you that the GM file on your phone is actually a copy of the identical file on Niantic’s servers. So there’s actually two GM files, which are same – the one on your phone and the on on Niantic servers. Remember that, as it will be rather important soon.

How does the game use GM?

Pokémon GO is an online first and a server centric game. Almost every mechanic that occurs, first occurs on the server and is replicated on the client app afterwards. This includes encountering wild Pokémon, calculating catch success, gym battles, PokeStop spins, etc…

All of these things are in one way or another configured in the GM file. For example…

Wild Pokémon encounters

Every time when you find a Pokémon in the wild, that encounter is created using the GAME_MASTER file. The servers create that specific encounter by copying the appropriate Pokémon specie info from the GM file and then create an instance of that specie. We lost you there, didn’t we?

Ok, in simple words, this is how Pokémon encounters are created in Pokémon GO:

  1. The server generates a Pokémon specie encounter
    1. The server loads metadata for a particular Pokémon specie, ie. Weedle
    2. The server creates an encounter by copying the specie metadata, ie. Weedle with A, B moves
    3. The server calculates other encounter metrics, such as IV, ie. 70% Weedle
    4. The encounter is placed on the world map
  2. You find the encounter in the wild, ie. 70% Weedle with A,B moves
  3. You catch that instance of Weedle

The key concepts to remember here is copying the specie metadata and instance of a Pokémon. As the game copies moves from the GM file, we often end up with instances of a Pokémon with legacy moves. These Pokémon were created using an older GM, but their instance is still alive and kicking.

Can the GM file be modified for cheating?

No. As we already explained, almost every action and event that happens in Pokémon GO is validated on the server. Modifying your local GM will result in nothing, as the game will still use the GM file hosted on Niantic’s servers.

Why does Niantic keep a copy of GM file on our devices?

The file is copied on your phone mostly for UI rendering and to reduce the load on Niantic’s server infrastructure.

As we already said, the GM file is used for almost everything in Pokémon GO, from rendering the UI to creating encounters. It would be foolish and very costly for Niantic if the game had to access their server every time it needs to display Buddy Candy Distance, Candy required to evolve or Pokémon Types.

 

Reading info from a local file is immeasurably better than fetching that info from a remote server.