HEAT ProtoLib
HEAT ProtoLib defines the simulation data model as Protocol Buffers .proto schemas and
publishes builder libraries for C#, C++, Python and Rust generated from them. It is not a
service: it produces no network traffic of its own. HEAT Capture, HEAT Capture Plugins and the
HEAT platform all serialize and parse the same messages through it, which is what lets a plugin
written in C++ publish a frame that HEAT Capture, written in C#, deserializes without either side
hand-writing the wire format.
The data model is an Entity-Component System: an Entity is an id, a name and a list of
Component values; each Component holds exactly one of 53 typed component messages (transform,
dynamics, gaze, ground-vehicle control, and so on); a SimulationFrame is a snapshot of every
entity and every event at one capture moment. See Message reference for
every field.
What you need
- The language runtime for whichever package you consume: .NET 10 (or netstandard2.0/2.1, or .NET Framework 4.8 for Unity), a C++23 compiler, Python 3.8+, or Rust. See Consume the packages for exact requirements per language.
- Nothing else. The published packages carry their own protobuf runtime dependency; there is no HEAT-specific service to install or configure.
Limits
- ProtoLib defines data, not transport. It does not open a socket, start a server, or carry an authentication scheme. Products that move ProtoLib messages over a network (HEAT Capture’s WebSocket publish endpoint, the HEAT platform’s ingestion API) document that transport in their own Interface Control Document, cross-referencing the ProtoLib version they were verified against.
- There is no formal Interface Control Document for ProtoLib itself. An ICD describes transport, session lifecycle and authentication; a schema library has none of those. What an ICD would otherwise carry for a schema, its data model, units, coordinate frames and compatibility rules, is in Message reference and Versioning and compatibility.
- The code generation toolchain that produces the builders from the
.protofiles is VRAI internal tooling; see Code generation if you are contributing to ProtoLib itself, not consuming it.
Pages
This documentation was verified against tag v0.37.1 of HEAT ProtoLib. Where a page states a
field, a type, a package name or a version requirement, it was read from the source at that tag.