There are a lot of misconceptions about the GM file - others speculate that altering this folder may actually enable one to hack the game but in reality, it contains essential files used for one's day-to-day activities. Today, we will be explaining how GM file actually works and how dataminers get their "leaked" information from the game.
Pokémon GO: GM File Explained
Testorom from TheSilphRoad explained how Game_Master File actually works. According to the dataminer, this folder serves as a configuration file for the app and is downloaded straight from the Pokémon GO server to your iOS or Android devices. The following are the contents of the file:
Pokemon Specie metadata - Moves, Stats and size (ATK, DEF, STA, weight, and height deviations, etc.) and Candy requirements
Pokémon Type metadata - Attack modifier coefficients
Move animation - Camera configuration, Resource names and 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, and more!
The GM file basically provides all the essential aspects of the game. The folder contains virtually everything that players enjoy and care for the location-based augmented reality game, Pokémon GO. Moreover, the existence of the GM file gave rise to the sites such as TheSilphRoad, PokéAssistant, and the GO Hub.
The GO Hub also explains that the GM file, which is saved on your phone, is an identical copy of the same file found in Niantic server. To make it short, there are two existing identical GM files - the one saved on your phone and the one saved on Niantic servers. Why did you ask? Well, we will be elaborating the GM file down below.
How Pokémon GO and Niantic Makes Use Of GM File
According to GO Hub, all mechanics that occur in the game must first occur from Niantic's server. Afterward, the event is then replicated on the client app (mobile) via the GM file. These events include encountering Pokémon, calculating catch success, gym battles and even PokéStops spins. In short, all of these interactions modifies and configures both your GM file (mobile) and the GM file from Niantic's server.
A definitive example of the actual use of the GM file will be given down below:
Wild Pokémon Encounter
When you encounter a wild Pokémon, that instance or event is created using the modification of the Game_Master file. Basically, the server creates the instance through copying random yet "appropriate" Pokémon specie from the GM file. After collecting the necessary data, the server then creates the instance of that specie, resulting in a wild Pokémon encounter.
Now, it may sound quite complicated but it's really quite simple. Here's an algorithm of the Wild Pokémon Encounter:
First: The server generates a Pokémon specie encounter - the server loads metadata for a particular Pokémon specie, (e.g. Weedle). Afterward, the server creates the instance (encounter) through copying the specie metadata. (E.g. Weedle with X, Y moves). The server then calculates other encounter metrics such as IV, etc. Next, the encounter is then placed on the World Map.
Second: You find that encounter in the wild (real-time).
Third: You catch that instance of Weedle encounter.
Modifying the GM File
As shown in the process above, one cannot modify the GM file in order to hack the game simply because the instance is created and validated first from the server before it is being replicated and configured on your device. Simply put, your GM file, albeit an identical replica of Niantic's server file, takes precedence from the latter.
So Why Do We Have A Mirrored GM File?
Creating an identical GM file on each device hastens the time required to create various instances and events in the game. For example, rendering UI and creating encounters takes a considerable amount of time if they're being accessed from the server every time an instance is made. Moreover, the server won't be able to handle the humongous data constantly passing through their servers every time. As what Pokémon GO Hub stated: "Rendering info from a local file is immeasurably better than fetching that info from a remote server."