EnfinitOSEnfinitOS
DevelopersConsumer render
Production-ready scaffold

Gaming SDK

Unity 6 (Awaitable), Unreal 5.5 (TPromise), Godot. IAB Gaming SIG 2024 viewability + dwell + interaction proof.

@enfinitos/sdk-gamingSubstrate GAMINGC#, C++, GDScript
Install

Get the SDK

npm install @enfinitos/sdk-gaming

About this status badge

Typed, tested, documented, and grounded in the 2026 platform reality. Awaiting first customer-integration validation.

README

The developer-facing documentation in full

Rendered from packages/sdks/gaming/README.md at build time — the same source the package ships with.

@enfinitos/sdk-gaming

EnfinitOS SDKs for the GAMING substrate. Three per-engine sibling implementations:

PathEngineLanguageStatus
unity/Unity 6 LTS (6000.x)C#full
unreal/Unreal Engine 5.5+C++full
godot/Godot 4.4+GDScript 2.0full

2026 platform notes

Unity

  • Unity 6 LTS (Unity 6000.x stream, released 2024). The SDK ships as a UPM package (com.enfinitos.gaming).
  • UnityEngine.Awaitable for the public async surface — Unity 6's in-engine async primitive that integrates with the main- thread dispatcher. Task interop via Awaitable.AsTask().
  • UnityWebRequest for HTTP — no third-party HTTP client (avoid IL2CPP build issues with HttpClient / Newtonsoft).
  • Compatible with: Universal Render Pipeline (URP), High Definition Render Pipeline (HDRP), the Built-in Pipeline. The SDK does not require any specific render pipeline.
  • Editor support: drag-drop InGameAdSurface MonoBehaviour via GameObject menu; custom inspector surfaces brand-safety verdict + viewability state.

Unreal Engine

  • UE 5.5+ is the supported floor. UE 5.4 added the UE::Tasks::TPromise framework the SDK builds on; UE 5.5 promoted it to the recommended async path. The SDK does NOT use the legacy OnProcessRequestComplete delegate pattern.
  • Nanite + Lumen + MetaHuman are mainstream — the SDK doesn't require them but is designed not to break them. In particular the InGameAdSurface component doesn't override GetActorBounds in a way that would interfere with Nanite's per-cluster culling.
  • C++20 is the language standard (UE 5.5 minimum). The SDK uses concepts + coroutine-style co_await on TPromises.
  • FHttpModule wraps the actual HTTP requests. The async surface is UE::Tasks::TTask-based.
  • Compatible with: all UE platforms (Win64, Linux, Mac, iOS, Android, PS5, XSX) — listed in the .uplugin manifest.

Godot

  • Godot 4.4 LTS+ (mid-2025) is the supported floor. The 3.x line is not supported.
  • GDScript 2.0 — typed signals (signal foo(value: int)), typed parameters + return types, async/await for HTTP.
  • The plugin registers a custom InGameAdSurface node in the editor; designers drag-drop it onto their scenes.
  • HTTPRequest is the supported HTTP path; the SDK does not pull in third-party Godot addons.

In-game ad surface model

The SDK models in-game ad surfaces as 3D geometric primitives with affordances:

  • Billboard — flat quad (stadium ad, virtual TV).
  • Wrapped — texture on a curved surface (logo on a can).
  • Volumetric — full 3D mesh replacement (the platform's asset replaces the host's placeholder prop).
  • Audio — non-visual; in-game radio insertion, NPC dialogue.

The platform's resolve scoring picks an asset whose geometry + MIME matches the surface. Each SDK exposes:

  • EnfinitOSGamingClient — top-level orchestrator (StartAsync, FetchAdAsync, Report*Async).
  • InGameAdSurface — host-attached component (MonoBehaviour / USceneComponent / MeshInstance3D subclass).
  • ViewabilityScorer — IAB Gaming SIG 2024 scorer.
  • ProofReporter/runtime/event-ingest wire glue.

IAB Gaming SIG 2024 viewability

All three SDKs implement the same spec:

ThresholdBillboardWrappedVolumetricAudio
Coverage≥ 50%≥ 50%≥ 50%n/a
Viewing angle≤ 30°≤ 60°≤ 30°n/a
Dwell≥ 2000ms≥ 2000ms≥ 2000ms≥ 2000ms
Gaze on surfacerequiredrequiredrequiredreplaced by "audible"

References:

  • IAB Tech Lab: "Measurement of Ad Inventory in 3D Spatial Environments" (Oct 2024).
  • MRC Viewable Ad Impression Measurement Guidelines (revised 2024 for in-game inclusion).
  • IAB Gaming SIG "In-Game Ad Format Taxonomy" (Mar 2024).

Brand-safety enforcement

Each resolved asset carries a ContentConstraintVerdict from the platform's Rights module. Host games:

  1. Trust the verdict at resolve time (the platform's resolve blocks anything the operator's constraints disallow).
  2. Re-check post-resolve if the scene state changes (the player drove into a war zone after the ad was resolved). The host calls surface.Dismiss() to drop the asset; the SDK reports a dismissed event.

The Unity Editor extension surfaces the verdict in the inspector so designers can see at edit-time whether an ad surface is brand-safe in a given scene.

Steamworks integration

Out of scope for this Tranche. Steamworks ships its own SDK and ad mediation; integrating EnfinitOS with Steamworks happens at the publisher's platform-integration layer, not in this SDK. The Unity SDK is compatible with games shipping to Steam — the SDK doesn't conflict with the Steamworks plugin — but no Steam-specific helpers are bundled here.

Endpoint surface

SDK callPlatform endpointStatus
FetchAdAsyncPOST /runtime/resolve + POST /runtime/grant with substrate: "GAMING"existing
ReportImpressionAsync / Viewable / InteractionPOST /runtime/event-ingestexisting
ContentConstraintVerdict (returned from resolve)platform's Rights module evaluationexisting
Brand-safety re-check post-resolveclient-side; no extra endpointn/a

30-line minimum-viable integrations

Each engine's canonical client file opens with a 30-line copy-paste sample:

  • Unity: unity/Runtime/EnfinitOSGaming.cs
  • Unreal: unreal/Source/EnfinitOSGaming/Public/EnfinitOSGamingClient.h
  • Godot: godot/addons/enfinitos_gaming/EnfinitOSGaming.gd
API reference

Hit the HTTP surface directly

The Gaming SDK is a thin client over the same governed HTTP API every other SDK calls. The full OpenAPI 3.1 reference lives on the docs site.

Sandbox

Run this SDK against a real tenant

The hosted sandbox is the fastest way to verify Gaming SDK against a real EnfinitOS tenant before committing to a pilot. Launching Q4 2026.