Foundation includes built-in analytics. Track player sessions, hardware profiles, progression milestones, and custom events. Data flows to BigQuery. You can query and visualize it any way you like.

How it works

Your game ships with the Hypercade analytics SDK (available for Unreal and Unity). The SDK logs events to a secure endpoint. Data is stored in BigQuery, partitioned by date and studio. You access it via standard SQL queries or pre-built dashboards in Looker.

No third-party analytics vendor lock-in. No monthly fees per event. Your data is yours to query.

What you can track

Sessions: Player login/logout, session duration, devices.

Progression: Milestones reached - first level completed, boss defeated, tutorial finished, etc.

Hardware: GPU, CPU, RAM, OS version. Useful for performance debugging and targeting minimum specs.

Custom events: Anything you define. Store purchases, feature engagement, difficulty selected, playstyle choices - whatever matters to your game.

Anonymous: No personally identifiable information is collected. Each player is identified by a machine ID (a UUID generated once per machine, shared across all Hypercade games on that machine). No tracking across the web. No ID stitching.

Endpoints

The SDK posts batched rows to:

https://data.programmoria.com/v1/log/batch

(A legacy single-row endpoint at /v1/log/ exists for back-compat but is no longer used by the SDK.) The endpoint is HTTPS, auto-scaling, and stateless. If the service is temporarily unavailable (503), the SDK retries automatically.

Auto-collected fields

The SDK automatically collects:

  • h_id - Hypercade machine ID (UUID)
  • app - Your game slug
  • env_os - Operating system
  • env_gpu - GPU model
  • env_ram - System RAM in GB
  • env_vram - Video RAM in GB
  • env_deck - Is this a Steam Deck? (true/false)

You don’t need to log these manually. They’re captured for every event.

Event format

Events are flat key-value pairs (no nested objects). Supported types:

  • Strings
  • Numbers
  • Booleans

Example row written to a progression table:

{
  "level": 3,
  "boss_defeated": "fire_lord",
  "time_to_beat_minutes": 45
}

The destination table name is selected by the first argument to LogMarker / LogEvent, not by an event field inside the row. Managed fields (h_id, app, env_*) are injected automatically by the SDK.

SDK integration

  • Unreal: HypercadeAnalytics plugin
  • Unity: HypercadeAnalytics package
  • Anything else (Godot, custom engines, server-side, web, backfill scripts): Direct HTTP API. You can — but the page is upfront about what you give up by skipping the SDK (journal-based crash survival, batching, 503 retry, identity, environment enrichment, session events).

Setup with the SDK takes 5 minutes. Initialize at game start, log events where they matter, and data starts flowing.

Querying your data

All data lands in BigQuery under your studio’s dataset. You can:

  • Query via BigQuery’s web console (if you have access)
  • Build dashboards in Looker (pre-built templates available)
  • Export to your BI tool
  • Use Hypercade’s API to retrieve summary data

The Hypercade portal includes a basic analytics view with charts and filters. For deeper analysis, SQL queries and Looker dashboards give you full control.

Data retention

Raw event data is retained in BigQuery for 1 year. Aggregated summaries (session counts, average session duration, etc.) are retained indefinitely. You can export or archive older data at any time.

Privacy and compliance

  • No PII is collected or stored.
  • Data is encrypted in transit (HTTPS) and at rest (BigQuery encryption).
  • Data is private to your studio - not shared with other games or studios.
  • Machine IDs are random UUIDs generated once per device and persisted to disk; they are not derived from hardware fingerprints and are not traceable to an individual.
  • Compliant with GDPR, CCPA, and similar privacy regulations (machine ID is not personal data).

Troubleshooting

Events not appearing in BigQuery: Check that the SDK is initialized with the correct project token and game slug. Test the integration in a development build first.

Latency between event and BigQuery row: events are journaled to disk on each LogMarker / LogEvent call, and uploaded in batched POSTs to /v1/log/batch at flush time — on focus loss, pause, quit, an explicit Flush() call, or next-startup recovery from a crashed prior session. Row-level latency therefore ranges from “seconds after a manual flush” to “next time the player alt-tabs or quits.” There is no time-based periodic flush.

Disk space issues from queuing: if the game client loses network for extended periods, events stay journaled locally and replay on a later flush. This is normal. Occasional duplicate rows are possible by design (the backend doesn’t deduplicate retries).

For help, see the Unreal or Unity integration guides, or contact the Hypercade team at hello@hypercade.io.