How aidanslab/pipboy3000companion works
Pip-Boy 3000 Companion synchronizes Fallout 3/New Vegas player state and inventory to the USB-connected replica. Game-specific plugins collect game state and communicate snapshots over a named pipe; the desktop app coordinates connection, form-ID mapping, state reconciliation, and serial commands. The app also provides firmware installation. The README documents the end-to-end flow; sampled source confirms app orchestration and firmware-flash entry points, but plugin snapshot internals and most firmware modules were not sampled.
Main entry points: app-core.js App Orchestrator · main.cpp FO3 Plugin · flash-fw.js Firmware Installer · IPipeClient.cpp Named Pipe
Components 15
Game Plugins
- FO3 Plugin
GamePlugin/src-fo3/main.cpp - New Vegas Plugin
GamePlugin/src-nv/main.cpp - FO3 Engine Bindings
GamePlugin/src-fo3/fo3_engine.h - Named Pipe
GamePlugin/FOSE/common/IPipeClient.cpp
Companion App
- Desktop UI
CompanionApp/electron/main.js - App Orchestrator
CompanionApp/src/app-core.js - Pipe Client
CompanionApp/src/pipe-client.js - Form ID Mapper
CompanionApp/src/form-id-mapper.js - Sync Engine
CompanionApp/src/sync-engine.js - Serial Bridge
CompanionApp/src/serial-bridge.js - Firmware Installer
CompanionApp/src/flash-fw.js
Pip-Boy Device
- Device Firmware
FW/FW-decoded.js - Device Settings
FW/SETTINGS-decoded.js
Other components
- Fallout 3 / NV
- Pip-Boy 3000
Connections 17
- Fallout 3 / NV → FO3 Plugin: provides game state
- Fallout 3 / NV → New Vegas Plugin: provides game state
- FO3 Plugin → FO3 Engine Bindings: uses bindings
GamePlugin/src-fo3/fo3_engine.h - FO3 Plugin → Named Pipe: sends snapshots
- New Vegas Plugin → Named Pipe: sends snapshots
- Named Pipe → Pipe Client: transfers JSON
- Desktop UI → App Orchestrator: starts app
CompanionApp/electron/main.js - Desktop UI → Firmware Installer: invokes installer
CompanionApp/electron/main.js - App Orchestrator → Pipe Client: coordinates connection
CompanionApp/src/app-core.js - App Orchestrator → Sync Engine: processes snapshots
CompanionApp/src/app-core.js - App Orchestrator → Form ID Mapper: maps device events
CompanionApp/src/app-core.js - App Orchestrator → Serial Bridge: uses bridge
CompanionApp/src/app-core.js - Sync Engine → Pip-Boy 3000: updates state
- Serial Bridge → Pip-Boy 3000: sends commands
- Firmware Installer → Serial Bridge: uses bridge
CompanionApp/src/flash-fw.js - Firmware Installer → Device Firmware: installs firmware
- Device Firmware → Device Settings: includes settings