Roadmap

ggscale follows semantic versioning at the SaaS-product level: MAJOR.MINOR. Breaking changes to the OSS Go core, SDK API surface, or public HTTP/gRPC API bump MAJOR. New capabilities bump MINOR.

Status legend: [in progress], [committed], [planned], [exploratory].


Milestone: MVP (v1.0)

Status: [in progress]. Target: launch.

The full scope is in docs/mvp.md.

    
flowchart LR
    M1["Milestone 1
Foundations
[done]"] --> M2["Milestone 2
Tenanted API
[in progress]"] M2 --> M3["Milestone 3
Realtime + Fleet
[next]"] M3 --> M4["Milestone 4
Billing + Compliance
[planned]"] M4 --> M5["Milestone 5
Public Beta
[planned]"] classDef done fill:#d4edda,stroke:#28a745,color:#000 classDef active fill:#fff3cd,stroke:#ffc107,color:#000 classDef planned fill:#e2e3e5,stroke:#6c757d,color:#000 class M1 done class M2 active class M3,M4,M5 planned

Included at launch:

  • Multi-tenant control plane: auth, storage, leaderboards, friends
  • Realtime: WebSocket lobbies and matchmaking
  • Hybrid Networking pillar: Agones authoritative fleet (competitive/ranked) and pion/turn STUN/TURN relay (co-op/casual). Both are co-equal launch capabilities
  • Go SDK and C# SDK (Unity-verified at launch)
  • Pluggable Transport and Authenticator interfaces; binary transports land in a later milestone without breaking integrators
  • Stripe billing across Free / PAYG / Premium tiers; Prometheus-driven CCU metering
  • 3 OVH regions: us-east-1 (write hub), us-west-1, eu-1, behind Cloudflare LB
  • Self-host migration guide (pg_dump, docker save, published compose)
  • Apache 2.0 OSS core

Milestone: Product Fast-Follows (v1.1)

Status: [committed]. Target: post-MVP fast-follows.

Deliberately deferred from MVP to keep launch shippable. All product and operational work; no foundational rewrites.

  • C# SDK: full Godot 4.x and MonoGame verified samples and packaging
  • Dynamic K3s node autoscaler: Go reconciler provisions and drains OVH VMs automatically via OVH API and kubeadm-join; replaces alert-driven manual scaling
  • Audit-log dashboard UI: filterable view with CSV export
  • Player moderation primitives: ban/kick/report endpoints, tenant-scoped ban lists, webhook for custom pipelines
  • Game-server log-streaming UI: per-tenant log viewer in dashboard, ggscale logs --tail CLI, backed by Loki
  • Grafana + Loki + Promtail: local dev dashboarding stack returns; dev parity matches production
  • Postgres HA via Patroni: closes the launch-time Postgres write SPOF; synchronous standby with etcd quorum; sub-30-second automatic failover
  • Self-hosted vs. brokered TURN decision: revisited once doomerang-mp produces real bandwidth and cost data

Milestone: High-Performance UDP Transport (v1.2)

Status: [committed]. Target: later.

The technical wedge from foundational research, delivered without breaking the launch SDK contract.

  • Server-side gnet event loop for raw UDP ingress: 100k+ concurrent UDP flows per VM at sub-millisecond syscall overhead
  • FlatBuffers schemas for high-frequency game-state messages: zero-allocation decode on both server and client
  • Custom UDP reliability layer: ack/retry, jitter buffer, ordering semantics
  • SDK opt-in: ggscale.WithHighPerformanceTransport(); existing call-sites unchanged
  • Public benchmark: end-to-end latency and GC-pause numbers against the launch stdnet+JSON baseline

The stdnet+JSON transport from launch remains the default; high-performance is opt-in and never deprecated.


Milestone: Shared C-ABI Core (v1.3)

Status: [exploratory] (committed only after the prior milestone’s prototype validates).

Cross-engine network parity via a single C-ABI library. Gated by a prototype proving cgo --buildmode=c-shared loads stably in Unity Editor and IL2CPP Windows standalone without runtime conflicts.

If the prototype passes:

  • Single libggscale with stable C ABI (Windows/Linux/macOS)
  • Engine adapters: C# via P/Invoke, Rust/Bevy via extern "C" and UniFFI, TypeScript/Three.js via WebAssembly
  • Android .aar packaging with ABI splits

If the prototype fails:

  • Pure-managed C# SDK improvements via System.IO.Pipelines
  • Rust SDK with hand-rolled HTTP and WebSocket bindings
  • Full shared-core story defers to a major-version milestone (no pretending otherwise)

Milestone: VM-Based Single-Tenant Substrate (v1.4+)

Status: [exploratory]. Target: later.

A second orchestration substrate alongside K3s+Agones for workloads that don’t fit a shared multi-tenant container substrate.

    
graph LR
    CP["ggscale Control Plane
same matchmaker, same identity, same SDK"] --> K8s CP --> VM subgraph K8s["Substrate A: K3s + Agones (default)"] direction TB Fleet["Agones Fleet
containerized, Linux
multi-tenant"] end subgraph VM["Substrate B: OVH OpenStack + Packer (Premium)"] direction TB VMInst["Packer-baked VM
Windows or Linux
single-tenant by construction"] end K8s -->|"~95% of workloads"| Tenants["Indie / mid-tier
default path"] VM -->|"Premium escape hatch"| Premium["Windows servers
Kernel-level anti-cheat
CPU-pinned high-perf
BYO-OpenStack"]

Scope:

  • Packer-built VM images (immutable; updates ship as a new image plus re-provision)
  • OVH Public Cloud provisioner via OpenStack API (Nova/Neutron/Cinder)
  • BYO-OpenStack as a follow-on; same provisioner, pointed at your own private cloud
  • Lifecycle integration: same Prometheus scrape and Stripe billing pipeline as Agones pods

Use cases: Windows-only game servers, anti-cheat with kernel drivers (EAC/BattlEye), high-perf physics simulation (CPU pinning, NUMA), heavily-modded sandbox servers (ARK, Minecraft modpacks), compliance/single-tenancy mandates.


Milestone: Edge Expansion and Premium Networking (v1.5+)

Status: [planned]. Target: later.

  • Additional OVH regions: APAC (Singapore, Sydney) and LatAm
  • OVH bare-metal Game DDoS for UDP traffic (Cloudflare doesn’t proxy UDP; game-server UDP today relies on OVH’s default network filtering)
  • Third-party TURN brokering: Twilio / Xirsys / Cloudflare Calls integration as an alternative to self-hosted pion/turn

Milestone: SDK Coverage Expansion (v1.6+)

Status: [planned]. Target: later.

  • Godot 4.x native GDScript bindings (beyond C# adapter)
  • Unreal Engine 5 native C++ plugin
  • TypeScript/JavaScript SDK for browser-based games

Milestone: Matchmaking and Social Graph (v1.7+)

Status: [planned]. Target: later.

  • Skill-based matchmaking (SBMM) with configurable rating systems (Elo, TrueSkill, Glicko-2)
  • Friends and social graph: friend requests, online presence, activity feed
  • Clans/guilds: first-class tenant-scoped group entity with roster, roles, and messaging
  • Cross-title identity: single player identity across multiple games under one publisher

Milestone: Game Data and Economy (v1.8+)

Status: [planned]. Target: later.

  • Virtual economy primitives: wallets, currencies, item catalogs, transactions
  • Cloud saves: versioned player-save blobs with conflict resolution
  • Leaderboard expansion: seasonal resets, custom scoring functions, regional boards
  • Remote config and A/B testing: tenant-scoped feature flags and experiment framework

Milestone: Lifecycle SKUs (v1.9+)

Status: [planned]. Target: later.

Productized GTM motions on top of the launch platform. No new substrate; additive product offerings inside the same semver lane.

ggscale Sunset (B2B): Port a shutting-down live-service title to ggscale-OSS so the player community can self-host. Satisfies CA AB 2426 and Protect Our Games Act. Fixed-fee tiers (Small / Medium / Large) tied to game complexity. Two delivery paths: (A) port to ggscale-OSS, (B) offline-mode patch when porting is infeasible.

ggscale Community Hosting (B2C): Consumer-facing storefront renting private dedicated server instances of sunset titles. Players pay a monthly subscription; royalty flows back to the publisher. Reuses launch infrastructure end-to-end; no new substrate.


Milestone: Hyperscale (v2.0)

Status: [exploratory]. Target: years away.

  • Multi-region Postgres writes: closes the launch-era us-east-1 write hub SPOF; requires distributed-transactions work
  • gRPC API surface alongside the existing REST and WebSocket API
  • Any breaking changes to the OSS Go core or SDK API surface

v2.0 is years away. Everything possible ships before then.