/POGOProtos

A central repository for all proto files of PokémonGO.

Primary LanguagePythonOtherNOASSERTION

POGOProtos Donate Python script NuGet POGOProtos.Core on fuget.org

alt text The contents of this repo are a proof of concept and are for educational use onlyalt text


This repository contains the ProtoBuf .proto files needed to decode the PokémonGo RPC.


Versioning

We are following semantic versioning for POGOProtos-Private. Every version will be mapped to their current PokémonGo version.

Version Base Notes Extra
2.56.0 v0.231.0 Proto2 Compilable (Mixed) Protocol Buffers v3.19.4
2.56.0 v0.231.0 Proto3 Compilable (Mixed) Protocol Buffers v3.19.4
2.54.1 v0.205.x Updated (/base/v0.205.x.proto) Protocol Buffers v3.15.8

Addons

Additional resources as *.json files Source Status
v2_GAME_MASTER.json Root OK
GAME_MASTER.json Root OK
ASSET_DIGEST.json Root OK
Additional resources as *.txt files (Decode mode by script) Source Status
v2_GAME_MASTER.txt Root OK
ASSET_DIGEST.txt Root OK
Additional resources as *.xml files Source Status
v2_GAME_MASTER.xml Root OK
ASSET_DIGEST.xml Root OK

Usage

If you want to figure out the current version in an automated system, use this file. .current-version Note: This file will contain pre-release versions too.

usage: compile_base.py [-h] [-gm GENERATE_GAME_MASTER]
                       [-ga GENERATE_ASSET_DIGEST] [-l LANG] [-v VERSION]
                       [-o OUT_PATH] [-m] [-g] [-b] [-k] [-gf]

optional arguments:
  -h, --help            show this help message and exit
  -gm GENERATE_GAME_MASTER, --generate_game_master GENERATE_GAME_MASTER
                        Generates v2_GAME_MASTER.txt form PATH/v2_GAME_MASTER.
  -ga GENERATE_ASSET_DIGEST, --generate_asset_digest GENERATE_ASSET_DIGEST
                        Generates ASSET_DIGEST.txt form PATH/ASSET_DIGEST.
  -l LANG, --lang LANG  Language to produce proto single file.
  -v VERSION, --version VERSION
                        Set version out ex:. (0.205.x)
  -o OUT_PATH, --out_path OUT_PATH
                        Output path for proto single file.
  -m, --java_multiple_files
                        Write each message to a separate .java file.
  -g, --generate_only   Generates only proto compilable.
  -b, --generate_new_base
                        Generates new proto base refs.
  -k, --keep_proto_file
                        Do not remove .proto file after compiling.
  -gf, --generate_proto_files
                        Generates base/last_files/*.proto.
                        

Preparation

Current recommended protoc version: "Protocol Buffers v3.19.4". You can find download links here.

Windows

Be sure to add protoc to your environmental path.

*nix

Ensure that you have the newest version of protoc installed.

OS X

Use homebrew to install protobuf with brew install --devel protobuf.

Compilation

The compilation creates output specifically for the target language, i.e. respecting naming conventions, etc.
This is an example of how the generated code will be organized:

  • Note: the *.desc file is auto created in this function
python compile_base.py -l cpp -k -v base:
 - vbase.proto -> out/single_file/cpp/POGOProtos.Rpc.desc
 -                -> out/single_file/cpp/POGOProtos.Rpc.pb.cc
 -                -> out/single_file/cpp/POGOProtos.Rpc.pb.h
 -                -> out/single_file/cpp/POGOProtos.Rpc.proto
Same similar outputs up but others langs:
  python compile_base.py -l csharp -k
  python compile_base.py -l java -k
  python compile_base.py -l js -k
  python compile_base.py -l python -k
  python compile_base.py -l php -k
  python compile_base.py -l objc -k
  python compile_base.py -l ruby -k
  * python compile_base.py -l swift -k
  * python compile_base.py -l go -k
  * python compile_base.py -l lua -k
  * python compile_base.py -l dart -k

* = Needs plugins

Decode Game Master or Asset Digest:
  python compile_base.py -gm [./v2_GAME_MASTER] (out as same bin name *.txt)
  python compile_base.py -ga [./ASSET_DIGEST] (out as same bin name *.txt)

Initial