Configurations
Change your game's values from the dashboard without shipping an update. A configuration is a JSON document your game reads through the Gamebeast SDK. Edit it, deploy it, and every running server picks up the change.
A configuration is a JSON document of values your game reads at runtime: prices, rewards, drop rates, feature switches, event dates. You edit it in the dashboard, and when you save, connected game servers get the new values within seconds. You don't need to publish a new version of your game or restart servers.
Configurations are also what experiments change: an experiment gives different groups of players different values from the same configuration.
Try the editor
This is the dashboard's editor, running on a sample configuration. Change a value, hover a row for its ⋯ menu, drag a row by its handle to reorder it, or use Open to drill into an object. Then switch to JSON, or press Save to see exactly what would be deployed. Nothing here is saved.
Create a configuration
Go to Configurations in the project sidebar, then:
- Click New configuration to start from an empty document, name it, and add keys.
- Click Import JSON file, or drag a
.jsonfile onto the list, to create one from a file. The file's name becomes the configuration's name, and the file must contain a JSON object.
A new configuration isn't saved until you click Create. It needs a name that's unique in the environment and at least one key.
Importing from Roblox
To turn an existing Lua table into a file you can import, encode it with HttpService:
local HttpService = game:GetService("HttpService")
print(HttpService:JSONEncode({
Sizes = { Jimbo = { SizeMulti = 1 } },
}))
-- Copy the output into a .json file and import itRoblox types that aren't JSON, like Color3, Vector3, NumberRange, and Enums, encode as null. Store them as plain values instead, for example a color as "#ff8800" or { "r": 255, "g": 136, "b": 0 }.
Edit values
A configuration is any JSON object. Each key holds one of:
| Type | Holds | Example |
|---|---|---|
| Primitive | A string, number, boolean, or null | "Dragon Sword", 1.5, true |
| Array | A list of values, including lists of objects | [99, 199, 499] |
| Object | More keys, nested as deep as you need | { "coins": 50, "streak": true } |
When you type a primitive, its type is inferred: 12 becomes a number, true a boolean, and anything else a string. An empty value is null. Each row shows the type it inferred as a badge (NUMBER, STRING, BOOLEAN, NULL, OBJECT, or ARRAY), so you can check it before you save. Make sure your game reads each key as the type you stored.
Hover a row to add a key below it with +, or open its ⋯ menu to:
- Duplicate it, including everything inside it.
- Make private or Make public. See Private keys.
- Change type between Primitive, Array, and Object.
- Delete it.
Drag a row by its handle to reorder it. The order is saved, and it's the order you see in the JSON. Arrays open in their own editor from the entries button, where you can add, edit, reorder, and remove values.
A key with no name is tagged missing name, and two keys with the same name are tagged duplicate. Fix those before you save.
Three views
Switch between views at the top of the editor:
- Tree shows nested objects as a collapsible tree. Hover an object and click Open to focus on just that part of the configuration. The breadcrumb shows where you are, and the URL links straight to it.
- List shows every value on one row with its full path, for scanning a large configuration.
- JSON shows the whole document. Switch it to Raw to edit the text directly.
Search finds keys and values in any view. Expand all and Collapse all open or close every object. In the Tree and List views, the button opens a JSON preview next to the editor, and a dot on it means you have unsaved changes.
Review and deploy changes
Edits aren't live until you save them. While you have unsaved changes, changed keys are highlighted: green for added, amber for changed, and blue for reordered.
- Show changes only hides everything you haven't changed.
- Revert all changes discards your edits, after showing you what will be undone.
- Save shows the full diff first, in a Deploy configuration? dialog. Nothing changes until you confirm.
Saving sends only the keys you changed. If a teammate changes a different key at the same time, both changes are kept. If you both change the same key, whoever saves second is told the configuration changed, and the editor reloads the latest version so you can re-apply your edit.
The main configuration
Each environment of a project has one main configuration. It's the one the SDK loads by default, and it's the one marked with a server icon in the list.
- To choose it, open a configuration's ⋯ menu and pick Set as main configuration, or choose it under Configuration in the project's environment settings.
- Saving the main configuration pushes it to every connected game server immediately. Saving any other configuration changes nothing in-game until it becomes the main one, or your game reads it by name.
- The main configuration can't be deleted. Make another one main first.
Each environment has its own main configuration, so set it in each one.
Private keys
A private key is only sent to requests made with a server key. Requests made with an SDK key never receive it, so it never reaches players. Use it for values that shouldn't be visible to players, like thresholds, internal IDs, or tuning you don't want data-mined.
Mark a key private from its ⋯ menu. It's marked private in the editor, and everything inside it becomes private too.
Private keys keep values away from players, but a configuration is not a secret store. Don't put passwords or API tokens in one.
An experiment that changes a private key is only served to server keys as well.
Keys controlled by an experiment
While an experiment is scheduled or running, the keys it changes are locked in the configuration. They're shown read-only with a lock icon, and hovering the lock shows which experiment reserves the key. The lock covers the key and everything inside it. It's released when the experiment ends.
Keys an experiment doesn't touch stay editable, and your edits reach every group.
Environments
Every project has a Production environment and a development one: Studio for Roblox projects, Development for others. Each has its own separate set of configurations. Switch between them from the environment selector at the top of the dashboard.
- Production is what your live game servers read.
- Studio (or Development) is what the game reads while you're testing: on Roblox, when the game is running in Roblox Studio. Use it to try changes without affecting players.
To move a configuration between them, open its ⋯ menu and pick Copy to production (or Copy to studio). You'll see what will change in the destination first. If a configuration with the same name already exists there, you can choose to overwrite it.
To find an environment's name for the SDK or API, hover it in the environment selector, open its ⋯ menu, and pick Copy environment name.
Read configurations in your game
Your game reads configuration values through the SDK, and gets updates while it's running:
- Roblox:
Configs:Getreads a value by path, and:Observeor:OnChangedruns your code whenever it changes. The SDK reads your main configuration. - Unity:
Configs.Getreads a value by path, starting with the configuration's ID:"MyConfig.PlayerSpeed". Unity can read any configuration, not just the main one. - JavaScript: in the browser,
configs.getreads a value by path, starting with the configuration's ID, andconfigs.observefollows changes. On a server,configs.evaluatereturns a configuration for a given player.
A configuration's ID is a short name made from its name, like economy-tuning. Copy it from the configuration's ⋯ menu with Copy ID. It changes if you rename the configuration, so update your game when you do.
When a player is in an experiment, the values the SDK returns already include their group's changes. Your code doesn't need to know about experiments.
Copy, duplicate, and export
From a configuration's ⋯ menu:
- Duplicate opens a copy in the same environment, for you to rename and create.
- Copy to project copies it into another project in your organization, in the environment you choose.
- Export downloads it as a
.jsonfile. - Delete removes it. You can't delete the main configuration.
Ask the assistant
The AI assistant can find and explain values in your configurations, and propose edits. Every edit it proposes waits for your approval on a card showing exactly what will change. Use the Ask AI button in a configuration's header to start with that configuration, or the field you're viewing, already attached.
Permissions
| Action | Needs permission to |
|---|---|
| View configurations and export them | View configurations |
| Create, import, duplicate, or copy one | Create configurations |
| Edit and deploy changes | Update configurations |
| Delete one | Delete configurations |
| Choose the main configuration | Update project settings |
Getting Started
Previous Page
Experiments (A/B Testing)
Test changes to your game on a share of your players or servers before rolling them out to everyone. Each group changes specific keys in a remote configuration, Gamebeast assigns players to groups and serves them the right values, and you compare the groups in analytics.