Featured Blog | This community-written post highlights the best of what the game industry has to offer. Read more like it on the Game Developer Blogs.
A Theory on Pokémon Go's Location System
In this post we're going to try to crack open Pokémon Go and determine how and why each pokémon are placed.
Continuing with the pokémon theme this week we're going into part three of my series on Pokémon Go. Today we'll be discussing how the pokémon locations are determined. If you haven't read my last couple posts on Pokémon Go I recommend checking them out! While they aren't necessary to understand the concepts we will be discussing today, they will help to give a broader picture of the game and how individual functions work. They can be found at:
Part 2 - Pokémon Go: Gym Battles
Now, let’s dive into how I believe the pokémon locations are determined. A disclaimer if you will, the only way to 100% find out for sure how it works is to ask Niantic how they did it. What I am presenting here today is based on my observations and discusses how I believe it to work. While their system is much larger, I have attempted to miniaturize it and discuss it in a smaller more manageable version. I hope by doing so the concepts will be more approachable and less daunting. With that out of the way, let’s get to it!
The Grid:
Imagine a grid over Los Angeles, like this:
Within each section of the grid, the player can see up to nine different pokémon. The player can see which pokémon are within their grid space via checking the nearby section of the app.
These pokémon might be in F2 (in the square with Museum of Contemporary Art), while in G2 there is a whole different set of pokémon. When a player moves to a different grid space, different pokémon will populate in their “Nearby” page.
Side note: The pokémon also seem to cycle in and out based on time elapsed. Each pokémon will disappear after a certain amount of time has passed.
But how do they decide which pokémon will be in each grid space?
Enter a random number generator! For simplicity sake, I’m going to use only five pokémon in my example.
Now imagine you have a twenty sided dice. You’re going to roll the dice nine times, and those nine dice rolls will determine the nine pokémon in the K1 grid space. You can try this exercise out using the grid as follows:
Just from looking at this chart you can see a few things:
● 25% chance the pokémon will be a Pidgey
● 25% chance the pokémon will be a Rattata
● 25% chance the pokémon will be a Zubat
● 10% chance the pokémon will be a Growlithe
● 5% chance the pokémon will be a Goldeen
● 10% chance there will be no pokémon
(If you don’t have a D20 lying around, you can check out WIZARD'S DICE TOOL and use their digital dice)
Try it out! Roll the dice nine times. What did you get?
My rolls are:
4, 1, 2, 17, 20, 1, 5, 13, 4
This means that the 9 pokémon in K1 are:
1. Pidgey
2. Pidgey
3. Pidgey
4. Growlithe
5. Nothing
6. Pidgey
7. Pidgey
8. Zubat
9. Pidgey
As you can see the results are random, but there is a higher chance of certain pokémon appearing over others. If we were to check a different space, we’d see different results. Maybe we’d find a space with mostly Zubats instead of Pidgeys.
So how does geography affect pokémon placement?
Let’s say, for example, we go to the pier. Now we’re over water, so there are more water pokémon appearing. How has our chart changed? Let’s take a look:
As you can see from the chart, things have changed. Now we have:
● 15% chance the pokémon will be a Pidgey
● 5% chance the pokémon will be a Rattata
● 15% chance the pokémon will be a Zubat
● 5% chance the pokémon will be a Growlithe
● 50% chance the pokémon will be a Goldeen
● 10% chance there will be no pokémon
Now, if we run our simulation with the updated chart, what do you get? I got:
2, 8, 16, 17, 2, 10, 6, 16, 19
This means that the nine pokémon in the space with water are:
1. Pidgey
2. Goldeen
3. Goldeen
4. Growlithe
5. Pidgey
6. Goldeen
7. Rattata
8. Goldeen
9. Nothing
As you can see, while on land we had more Pidgeys, Rattatas and Zubats, but Goldeen rains supreme by the ocean. This is because there is a higher chance of Goldeen appearing based on the player's proximity to water. It’s safe to say then, if the player were near a volcano for example the number of Growlithes would increase just like the number of Goldeens increased when the player was near the water. Because of the random number generator, it is possible to find an area that has no pokémon, or even only one kind of pokémon. Though this is unlikely because Niantic is working with 150 different pokémon instead of just five.
Is it possible to catch any pokémon at any location?
I believe so. I know it sounds crazy, but at times I’ve found Goldeens and Goldducks in the middle of downtown L.A. miles away from the water. I think the possibility of a Goldeen showing up though is so miniscule that it will almost never happen. While our example used only 20 slots to choose pokémon from, Niantic’s would be using hundreds of slots resulting in some pokémon appearing less than .001% of the time.
Side note: Imagine you lived in the middle of Kansas with your dog Toto. What if a super rare pokémon to the area, like Venasaur, popped up? You’d race towards that Venasaur. This is the kind of effect they’re creating in players by allowing pokémon to appear anywhere just at an incredibly small probability. Players’ excitement will be rekindled again long after the initial excitement has dwindled because of this rare find. Additionally, they may have done it this way to simulate wandering pokémon who maybe got lost.
So, what factors cause the chart to adjust?
Niantic has come out and said that there are a couple of factors which influence pokémon appearing:
● Location - Geography and location on the planet