About this mod
Reference implementation of the Companion App protocol.
- Permissions and credits
- Donations
I have also a Python3 library completely implementing the protocol on github.
And I am also currently implementing an Unofficial Pipboy Companion App.
--------------
I reverse-engineered the communication protocol used by the Fallout 4 companion app and wrote a little python3 script that connects to Fallout 4 and dumps all messages it receives to standard output in human readable form.
It is meant as MODDER'S RESOURCE and reference for anyone who wants to learn about the communication protocol employed by the Companion App.
What do I know about the Protocol Syntax:
- Autodiscovery: 100% known
- Connection Establishment: 100% known
- DataUpdate Message: 100% known
- LocalMapUpdate Message: 100% known
- RPC: 100% known
What do I know about the Data Semantics:
There are primitive Types (int/bool/string/...) and complex types (arrays and objects). Each value (be it primitive or complex values) has a unique id (Bethesda refers to it both as nodeId or pipboyValueId). Arrays are an ordered set of such pipboyIds, and Objects are a set of (key, value) pairs (values can only be pipboyValueIds, and a dataUpdate message can add or remove pairs). The data is layed out in the form of a tree, arrays and objects are the internal vertices and primitive values represent the leafs. The root of the tree is the object with the pipboyValueId 0.
The only thing which is largely unknown is the specific meaning of most values. But I am sure the combined resources of the community will solve this problem in no time ;)
Future Plans:
Changelog:
* BugFix 1.0.1: Corrected code that incorrectly parsed the removedIds sections of an data update object