In this version I've essentially completely rewritten the plugin. The old socket flow has been replaced with a local TCP telemetry server, a source registry, external control commands, subscriptions, filtering, and much better runtime hardening.
I've:
- Replaced the old WebSocket-style feed/vstate workflow with a local TCP server on
127.0.0.1:28765 - Added external commands for service control, source enable/disable, broadcast settings, and client field filters, and more
- Added per-client subscriptions, including subscribe-all, unsubscribe and more
- Added per-client field filtering so clients can request only exact fields from large sources
- Added telemetry rate limiting/coalescing to protect clients and keep the plugin more stable
- Added demand-driven sampling (enabled sources are only sampled when at least one live client requests them)
- Added stronger error handling so source failures produce available: false payloads instead of taking down the sender (which would have previously required manual intervention to restart)
- Added stricter command validation and safer disabled-source behavior
The plugin also handles more sources now, and made the previous sources richer!
race_datafocuses on race/map state fromMLFeed::GetRaceData_V4(), read more about that here: MLFeed Documentationplayer_cp_infonow focuses on CP data fromMLFeed::PlayerCpInfo_V4, read more about that here: MLFeed Documentationvehicle_stateis much richercamerais much richer Note: Optional dependencies now report explicit unavailable reasons instead of silent empty data.
More games have support now! (MLFeed data is not available in other games, but vehicle state and camera are available when the shipped OP plugins are available)
BRAKING CHANGES
-# there is a reason for the major bump xpp
Anyway:
- The old WebSocket endpoints such as /feed and /vstate are no longer the primary interface
- The default port changed from 8765 to 28765
- External readers now connect to the plugins TCP server instead of waiting for the plugin to connect to them
- The Payload schemas have changed significantly, take a look at: documentation, for more information on the new setup!