CalmUI
Store

Define Game Data and Preview Values

Create Store fields, reusable list items, actions, and sample data in Studio.

Open Store in the Activity Bar. If the project has no Store yet, choose Initialize project Store. You can prepare the data your UI needs before opening Unreal.

Create a player name field

  1. Choose State Groups, then + State Group. A group keeps related values together.
  2. Set Group Name to Player. Check that Store Path is player.
  3. Choose Scope = Per player so each local player has their own values.
  4. In Fields, add name with type string.
  5. Click Save.

The field's path is player.name. Use that path when selecting the field in Blueprint or reading it from a component.

TypeUse it for
boolA true/false value such as ready
intA whole number such as score
floatA decimal value such as progress
stringText such as a player name
objectSeveral related values, such as item details
arrayA list, such as inventory items

Choose Global only for values shared by local players in the same game process. It does not enable network synchronization.

Give Preview some sample data

  1. Open Presets and click + beside the preset selector.
  2. Enter a unique name, for example MainMenuExample.
  3. Set the player name to Alex and fill any other fields you need.
  4. Create the preset. Studio selects it for Offline Preview.

A preset is a saved set of example values. You can create several, such as an empty inventory and a full inventory, then switch between them while designing. Object and array values use a JSON editor; invalid values must be corrected before saving.

Use the remove action beside a preset to delete it. You can delete any preset, including default. If none remain, Preview uses the field defaults.

Display the value in a component

Select the field and use its copyable binding example. In the component's <script> section, / → Store → Read field inserts a read and the required import. Return the value or a computed value from the script, then use the returned name in the template, such as {{ playerName }}.

Only names returned by the script are available to its template. See TypeScript for the complete component structure.

A preset changes only Studio Preview. To supply real data, follow Update game values in Blueprint.

Define an inventory list

  1. Open Reusable Types and click + Reusable Type.
  2. Name it InventoryItem. Add id as a string, label as a string, and count as an integer.
  3. In a State Group, add an array field and choose Item type = InventoryItem.
  4. Choose Stable key = id. Give each item a unique ID that stays the same when it moves in the list.
  5. Save, then add sample items in Presets.

A reusable type describes the shape of an object or list item. It is not a separate game value. For an object field, select the type with Object type. You can use the same reusable type for more than one array or object field, even under different State Groups; each place you use it is validated on its own, wherever you put it, not only where you first defined it.

Use ui:key="item.id" when displaying repeated components. This lets focus and local state stay with the correct item after a reorder. See Lists.

Define button actions

Open Action Contracts to create the named requests your buttons send to Unreal. Payload contains any extra fields sent with a request. For a complete example, follow Make a button run Blueprint.

Save and change definitions

Save checks the definitions, actions, and selected preset, then rebuilds the packages and updates Preview. It is disabled when nothing changed. If saving fails, read the error and correct it; the last valid version is kept.

You can undo and redo definition edits. To remove a reusable type, first change or remove the fields listed under Used by.

Changing Store Path under Advanced changes the names your components and Blueprint references use. Studio lists the affected fields before confirming. It updates the active preset, but you must update affected component source references yourself. Recheck Blueprint field and action selections after renaming.

When connected to Unreal, wait for the rebuilt package to synchronize. If you changed Store or action definitions during Play, restart Play so your Blueprint registers its listeners again. Ordinary visual edits do not require this restart.

Source files

Studio saves the definitions in store.schema.json and presets in the files listed by storePresets in calmui.config.json. Files under generated/schema are produced automatically; do not edit them. Studio also manages definition version numbers when you save.

Connected Live values are the running game's values. They are read-only and do not overwrite your offline presets.

On this page