Telemetry #

The Telemetry service accepts events from game clients, game services, Pragma Engine plugins, and custom services.

While telemetry applies to many different kinds of data collection, Pragma Engine uses it to describe high-volume, less structured, big data information. Pragma Engine provides a real-time telemetry event collector that terminates data into a data store of choice. Telemetry is useful for collecting high resolution data around specific questions or features, and requires post-processing to produce actionable insights.

The service accepts events in realtime and delegates to a configured storage provider. Studios can use standard, existing toolchains for data analytics and processing.

Data can be passed individually or in a batch, and messages are sent as JSON. Several standard fields are provided outside of the JSON payload to help with grouping, filtering, and aggregating events.

Operationalize #

While it’s possible to build reports and dashboards against raw telemetry data, it’s not recommended. The result will be dashboards that are slow to load due to the volume of data being processed. The reports will also be fragile, breaking when changes are made to the raw telemetry events. Instead, create ETLs that aggregate data into an operable format and build reports against these.

For example, exploratory queries and ad-hoc reports can be built against raw telemetry, but it is advisable to transform raw events into well-formed schemas that are tailored to their purpose. This improves performance, reliability, and reduces the cost and complexity of producing actionable insights.

Below is a sample workflow for building a game health report.

sequenceDiagram participant o as Operator participant gs as GameServer participant t as Telemetry participant db as Database participant s as ScheduledJob participant d as Dashboard gs->>t:events t->>db:store(events) s->>db:runEtl(gameHealth) db->>db:writeToGameHealthTable() o->>d:viewGameHealthDashboard() d->>db:retrieveGameHealthReport()