Pokemon GO Buddy system has been data mined from the latest app version. We will be taking our favorite Pokemon for a walk soon.

The Buddy system was first seen on AeonLucid’s PogoProtos, the biggest Github repository for analysing Pokemon GO network traffic. The Buddy system was introduced in the code base in 0.35.0 update.

In short, here’s what we know:

  • Pokemon Buddy System is using the same server side distance calculation as the one used for Pokemon Eggs
  • Walking your Pokemon Buddy will award you with candy. The amount of candy is yet to be determined.
  • You can walk the same Pokemon Buddy multiple times, but there is likely a daily limit for obtained candy
  • You can walk with only one Buddy Pokemon at a time
  • There are various looks of Buddy Pokemon
    • Medium size
    • Big size
    • Flying next to you
    • Rests on your shoulder

All of these changes are already present in the code base, and by the look of it, we could be getting the Buddy system in the next update.

Full Code Analysis

The following few paragraphs discuss code details and reference the code directly. We will keep the discussion simple. If you are not familiar with software development and coding practice, feel free to ask questions in the comment section below.

BudyPokemon.proto introduced

message BuddyPokemon {
	fixed64 id = 1;
	double start_km_walked = 2;
	double last_km_awarded = 3;
}

As observed, a new file has been added to the code. BuddyPokemon message  tracks the Buddy Id, the start distance and the last awarded distance.

According to previous experience, the app will receive the entire data package from the server side, similar to how walked egg distance is updated. 

 

A new type of Network Response  – GetBuddyWalkedResponse

message GetBuddyWalkedResponse
{
	bool success = 1;
	.POGOProtos.Enums.PokemonFamilyId family_candy_id = 2;
	int32 candy_earned_count = 3;
}

GetBuddyWalkedResponse records the awarded Candy amount and logs the event inside the Journal. Not much to explain here, it’s a new type of Network Response clearly indicating that you will get Candy from walking a Buddy Pokemon.

The response is in line with the structure of other Network responses and it looks lightweight.

 

Set Buddy and Get Buddy Walked messages

message SetBuddyPokemonMessage {
	fixed64 pokemon_id = 1;
}
message GetBuddyWalkedMessage {
}

There are two new functions in the Network Requests code base:  

  • SetBuddyPokemonMessage
  • GetBuddyWalkedMessage

The implementation is currently missing but their naming clearly indicates the intent.

As there are no extra parameters sent via GetBuddyWalkedMessage we believe you will be able to walk with only one Buddy Pokemon at a time.

 

New BuddySize enumeration

	enum BuddySize
	{
		BUDDY_MEDIUM = 0;
		BUDDY_SHOULDER = 1;
		BUDDY_BIG = 2;
		BUDDY_FLYING = 3;
	}

As expected, a new BuddySize enumeration has been added in regards to Buddy Pokemon. The code is inside Pokemon Setting message and clearly references various sizes and looks of buddies.

We are not sure how it will look and feel, but Shoulder buddy sounds bloody amazing.

 

Conclusion

There are still quite a few changes were not noting or discussing here for the sake of brevity. If you are interested in the full list of code changes, visit the PogoProtos Github repository.

The Pokemon Buddy system looks promising and simple. We expect it to land in the update next week as it reuses the Egg distance walked calculation and multiple existing endpoints.

Share your thoughts in the comment section. Stay safe!