Skip to content

Live Ops

Live Ops lets you control your game after it ships. Change difficulty, toggle features, adjust prices, and run experiments — all from the dashboard, no app update required. Your players get the changes within seconds.

  • How to set up remote config for feature flags and balancing
  • How to target different configs to different player segments
  • How to edit game data tables (balance sheets) live
  • How to run A/B tests to optimize game design
  • How to manage changelogs for your players

Remote Config is your kill switch, your tuning knob, and your feature flag system — all in one.

Remote Config editor with key-value pairs

Config KeyTypeUse case
coin_multipliernumberAdjust economy without update
enable_new_uibooleanFeature flag for gradual rollout
daily_rewardnumberTune daily login reward
maintenance_modebooleanDisable gameplay during server maintenance
event_banner_textstringShow seasonal event messages
  1. Go to Configuration > Remote Config in the dashboard
  2. Click Add Config
  3. Enter a key name, value, and optional description
  4. Click Save — the value is live immediately
# Fetch configs on game start
QuestData.fetch_remote_config()
# Read values with a fallback default
var multiplier = QuestData.get_config("coin_multiplier", 1.0)
var show_ads = QuestData.get_config("show_ads", true)

See Remote Config SDK Reference for full details.


Give different players different config values based on tags. VIP players get double rewards, beta testers see new features, churning players get a comeback bonus.

Segment Override configuration in Remote Config

  1. Tag players in your game code:

    QuestData.set_user_tag("vip")
    QuestData.set_user_tag("beta_tester")
  2. Create a segment in Players > Segments (e.g. “VIP Players” = tag vip)

  3. Add overrides in Remote Config:

    • Default coin_multiplier = 1.0
    • VIP Players override: coin_multiplier = 2.0
  4. The SDK automatically fetches the correct value for each player


Game Data tables are like live spreadsheets your game reads at runtime. Perfect for item stats, enemy configs, level definitions, or loot tables.

Game Data AG-Grid editor with item balance sheet

  1. Go to Live Ops > Balancing
  2. Create a new table (e.g. “weapons”)
  3. Define columns (name, damage, cost, rarity)
  4. Add rows — or import from CSV
# Preload tables on the loading screen
QuestData.preload_game_data(["weapons", "enemies"], func():
start_game()
)
# Read data synchronously after loading
var weapons = QuestData.get_game_data_cached("weapons")
for weapon in weapons:
print(weapon["name"], " — Damage: ", weapon["damage"])

Changes you make in the dashboard are available to players on their next game start (or force_refresh).

See Remote Config & Game Data SDK Reference for full details.


Test different versions of your game with real players. Does a 50-coin daily reward retain better than 100 coins? Does a harder tutorial convert better? A/B tests give you data instead of opinions.

Experiment creation with traffic splitting

  1. Go to Live Ops > Experiments
  2. Create an experiment (e.g. “daily_reward_test”)
  3. Define variants:
    • Control: daily_reward = 50
    • Variant A: daily_reward = 100
    • Variant B: daily_reward = 200
  4. Set traffic split (e.g. 33/33/34%)
  5. Start the experiment

The SDK integrates with Remote Config — no code changes needed. Players are deterministically assigned to variants based on their player ID.


Publish game update notes directly from the dashboard. Players can read them in-game via the SDK API.

Changelog editor with Alpha/Beta/Live branches

BranchPurpose
AlphaInternal testing notes
BetaBeta tester release notes
LivePublic release notes for all players
# Fetch latest changelog for live branch
# Use the REST API: GET /v1/changelog/latest?branch=live