Overview

What is Gateway?

Gateway is a modular challenge and stat progression framework for Unreal Engine.
It centralizes a challenge progression-related systems and historical player behavior statistic system into a single extensible pipeline while remaining extensible, lightweight, and gameplay-agnostic.
info
Gateway was originally designed for multiplayer roguelikes, but its architecture is flexible enough to support achievement systems, battle passes, telemetry, seasonal content, and general player challenge progression in any genre.
Gateway uses GameplayTags extensively for categorization and filtering. Stats can be tagged by persistence scope, gameplay domain, progression type, or any custom taxonomy relevant to your project.
This allows systems to operate selectively on groups of stats, such as:
  • Lifetime vs match-only stats
  • Combat vs exploration progression
  • Seasonal or event-specific tracking
warning
Note: Gateway is intended for progression and tracking systems, rather than frame-to-frame gameplay state like health or mana.

Structure

Gateway Component
The Gateway Component coordinates and unifies all systems in the plugin.
  • It houses all of the actual data related to a player.
  • It instantiates and maintains the providers, which are the logic drivers for each of the domains of the system. The component itself doesn't interact with the systems.
  • It should be attached to your player state class.
Providers
Providers are the logic drivers of each system, and all live on the Gateway Component. Each have their own particular role, they don't interact or reference each other in any way.
There are 4 providers:
  • GatewayStatsProvider
  • GatewayChallengesProvider
  • GatewayRewardsProvider
  • GatewaySavingProvider
These are extendable, and have virtual overridable methods to change default behavior.
You can easily swap out your custom providers on the Gateway Component
Function Library
There is an API layer by the way of a blueprint function library: Gateway Library This is where pretty much all interactions to the whole system should go through.
Cheats
Finally, Gateway has a built in cheats system: a set of console commands and also a slate-based debug overlay UI (Similar to the built in GAS debug overlay).

Design Philosophy

Gateway is designed around a simple principle: progression systems should track outcomes, not gameplay logic.
Rather than embedding custom logic directly into achievements, challenges, or reward systems, Gateway reduces progression into a set of tracked statistics and evaluations built on top of them.
In practice, this means your gameplay code determines when something meaningful has occurred, and Gateway is responsible for tracking, evaluating, rewarding, and persisting that progression.
For example, a challenge condition such as: Kill a giant while upside down does not require Gateway to understand giants, gravity, or player state. Your gameplay systems simply decide when the event is valid and update an associated stat: UpsideDownGiantKills
Challenges, rewards, progression tracking, persistence, and UI can then all operate against that stat without requiring bespoke systems for the condition itself. This keeps Gateway intentionally decoupled from gameplay-specific implementation details while still supporting highly specialized progression systems.
The framework is also designed to remain:
  • Data-driven
  • Multiplayer replicated
  • Extensible through provider overrides
  • Accessible from both Blueprint and C++
  • Compatible with GameplayTags and GAS workflows