Dicey Table

Reference

Editor Fields for AI Agents

Editor field ids for AI agents: the Edit Mode menu bar, top bar, Hierarchy, asset explorer, snap tools, scene scripts, manifest editor and game settings.

On this page32 sections

These are the fields and buttons of the Edit Mode shell itself. That means the menus, the top bar, the Hierarchy and the asset explorer. It also covers snap tools, scene scripts, the manifest editor, materials and game settings. Use the ids with fields_set and actions_invoke.

Panels in this group#

31 panels, with the id prefixes editor, scene, manifest, snap-point, material, game, agent. The field catalogue lists every group.

Panel Label Tab Fields Actions
editor.menu Menu bar editor 0 2
editor.topbar Top bar editor 5 7
editor.rail Left rail and snap flyout editor 0 7
editor.hierarchy Hierarchy editor 1 4
editor.draft Draft and restore points editor 2 2
editor.viewport-toolbar Viewport toolbar editor 0 17
editor.explorer Asset explorer editor 10 41
editor.status-bar Status bar and problems editor 0 6
snap-point.point Snap point editor 5 2
snap-point.grid Snap grid editor 9 1
snap-point.folder Snap Points folder editor 0 2
scene.scripts Scene scripts editor 1 3
material Material inspector editor 58 4
manifest.details Manifest ▸ Details editor 14 20
manifest.gameplay Manifest ▸ Gameplay editor 40 15
manifest.files Manifest ▸ Files editor 6 10
manifest.plugins Manifest ▸ Plugins editor 2 7
manifest.bots Manifest ▸ Bots editor 20 12
manifest.credits Manifest ▸ Credits editor 0 0
manifest.file Manifest ▸ File editor 0 0
agent.indicator AI agent indicator editor 0 0
editor.scene-snap-points Snap point tools editor 9 8
scene.ui-layouts Scene UI layouts editor 2 5
scene.highlights Highlight styles editor 6 3
editor.menu.file File menu editor 0 0
editor.menu.edit Edit menu editor 0 0
editor.menu.view View menu editor 0 0
editor.menu.mod Mod menu editor 0 0
editor.menu.help Help menu editor 0 0
editor.move-assists Move assists editor 1 3
game.dice DICE (Game) editor 8 4

editor.menu#

Menu bar · surface editor · singleton (no target)

How it opens: Always mounted in Edit Mode; menus open on invoke.

Actions (2)

Action id Label Class Target Description
editor.menu.open-in-mode Open in the matching editor W — This mod is authored in a different editor mode; open it there (the page navigates to that editor for the same project).
editor.menu.pack-updates Pack updates R — Open the list of referenced packs with a newer published version. Opening it changes nothing.

Per-instance action families

Id pattern Registered from
menu.<menu>.<item>[.<sub-item>] One action per Edit Mode menu-bar item; the item segments are its label, slugged.

editor.topbar#

Top bar · surface editor · singleton (no target)

How it opens: Always mounted in Edit Mode.

Fields (5)

Field id Label Kind Unit Target Class Range / options Description
editor.topbar.preview-room in room select — — W — Asset packs: the room pack the preview stands your pieces in (a pack id from the registry, or "" for the built-in room). Remembered for this project, never published.
editor.topbar.preview-table on table select — — W — Asset packs: the table pack the preview stands your pieces on (a pack id, or "" for the built-in table). Remembered for this project, never published.
editor.topbar.preview-companion with / in room select — — W — Room/table packs: what the preview shows alongside this pack (a table or game for a room, a room for a table). Remembered for this project, never published.
editor.topbar.variant Variant select — — W — Game packs with variants: which variant the editor is showing (a variant id; the live options). Switching swaps the whole scene view; nothing is lost and nothing is saved by switching.
editor.topbar.variant-scope Changes apply to select — — W all, variant Where edits made while a non-base variant is shown are recorded: "all" writes them to the base scene so every variant gets them; "variant" records them as this variant's own differences. Fixed at "all" while the base variant is shown.

Actions (7)

Action id Label Class Target Description
editor.topbar.open-project Open project R — Open the project picker (File ▸ Open Project…).
editor.topbar.request-control Request editor control W — Ask the tab that holds this project's editor lease to hand it over. The owning tab's user answers; a granted tab reloads.
editor.topbar.save-state Save state and problems R — Open what is unsaved or the Problems list (the save pill).
editor.topbar.save-draft Save Draft W — Save the draft (flushes every dirty item tab first). Same as Ctrl+S.
editor.topbar.preview Preview W — Save the draft, then open it in a peerless preview tab. Prefer the playtest_start tool, which pairs the preview tab.
editor.topbar.publish Publish R — Open the Publish dialog. Publishing itself is the human's click in that dialog.
editor.topbar.variants Variants R — Game packs: open the Variants dialog (create, describe and compare the ways this game can be set up).

editor.rail#

Left rail and snap flyout · surface editor · singleton (no target)

How it opens: Always mounted; the snap flyout opens from its rail button.

Actions (7)

Action id Label Class Target Description
editor.rail.select-tool Select W — Viewport tool: select (Q). Editor view state; nothing is saved.
editor.rail.move-tool Move W — Viewport tool: move gizmo (W). Editor view state; nothing is saved.
editor.rail.rotate-tool Rotate W — Viewport tool: rotate gizmo (E). Editor view state; nothing is saved.
editor.rail.scale-tool Scale W — Viewport tool: scale gizmo (R). Editor view state; nothing is saved.
editor.rail.snap-points Snap points R — Open (or close) the snap point tools flyout.
editor.rail.frame-selection Frame selection W — Move the editor camera to frame the selected entity (F). View state only.
editor.rail.exit Exit edit mode D — Leave Edit Mode. With unsaved changes the editor asks first; confirming discards them.

editor.hierarchy#

Hierarchy · surface editor · singleton (no target)

How it opens: Always mounted in Edit Mode (left panel).

Fields (1)

Field id Label Kind Unit Target Class Range / options Description
editor.hierarchy.filter Filter by name, id or #tag text — — W — Filter the Hierarchy by node name, id or tag (prefix # to match tags only). View state only.

Actions (4)

Action id Label Class Target Description
editor.hierarchy.clear-filter Clear filter W — Clear the Hierarchy name/id/#tag filter. View state only.
editor.hierarchy.clear-tag-filters Clear tag filters W — Clear the active #tag pills. View state only.
editor.hierarchy.lock Lock / Unlock W entity Toggle an entity's lock (a locked entity is static and cannot be grabbed).
editor.hierarchy.visibility Show / Hide W entity Enable or disable an entity, or every entity under a folder row (target id: the row id).

editor.draft#

Draft and restore points · surface editor · singleton (no target)

How it opens: The draft panel under the Hierarchy.

Fields (2)

Field id Label Kind Unit Target Class Range / options Description
editor.draft.label Draft label text — — W — The draft label shown in the Versions panel.
editor.draft.restore-note Restore-point note (optional) text — — W — The note the next + Save Restore Point uses as its label.

Actions (2)

Action id Label Class Target Description
editor.draft.save-restore-point + Save Restore Point W — Save a named restore point of the draft (the note field is its label). Prefer project_checkpoint.
editor.draft.restore Restore H project Requires the user's confirmation in the DiceyTable tab. Replace the draft with a saved restore point. The target id is the restore point's version (e.g. v3), as listed by project_versions.

editor.viewport-toolbar#

Viewport toolbar · surface editor · singleton (no target)

How it opens: Always mounted over the viewport.

Actions (17)

Action id Label Class Target Description
editor.viewport-toolbar.space-world World W — Gizmos move/rotate in world space. View state only.
editor.viewport-toolbar.space-local Local W — Gizmos move/rotate in the entity's local space. View state only.
editor.viewport-toolbar.freeze-physics Frozen W — Freeze the viewport's physics so entities hold their authored positions.
editor.viewport-toolbar.live-physics Live W — Run the viewport's physics to see how entities behave. Nothing is saved until you save the draft.
editor.viewport-toolbar.play-scripts Play Scripts / Stop W — Run (or stop) this scene's compiled scripts against the viewport. Script errors reach diagnostics_get.
editor.viewport-toolbar.restart-scripts Restart W — Restart the running scripts with the latest compiled output (clears session saved-data).
item.tabs.show-scene Scene R — Switch the editor back to the Scene tab (the table viewport) from an item tab. Item tabs stay open; open one again with panel_open on its item.* panel.
editor.viewport.camera-orbit Orbit W — Orbit camera — circle and zoom around a focus point. View state only; nothing is saved.
editor.viewport.camera-fly Fly W — Flying camera — free movement, no floor or gravity. View state only.
editor.viewport.camera-walk First person W — First-person camera at eye height (Esc returns to orbit). View state only.
editor.viewport.ceiling Ceiling W — Toggle drawing the room's ceiling. Local view only; the button's pressed state is the current value.
editor.viewport.wall-cutaway Wall cutaway W — Toggle hiding the wall the camera has moved outside of. Local view only.
editor.viewport.collider-overlay Colliders W — Toggle rigid-body wireframes. Unlike the other view toggles this writes the room's persisted debug setting (Debug Visibility ▸ Rigid Bodies). Undoable.
editor.viewport.play-area-guide Play area W — Toggle the play-surface / seat-ring / room-bounds guide. A guide only; never published.
editor.viewport.layer-scene Scene layer W — Toggle drawing the Scene render layer. A local view; nothing is removed.
editor.viewport.layer-table Table layer W — Toggle drawing the Table render layer. A local view; nothing is removed.
editor.viewport.layer-game Game layer W — Toggle drawing the Game render layer. A local view; nothing is removed.

editor.explorer#

Asset explorer · surface editor · singleton (no target)

How it opens: The Project / Library panes at the bottom of Edit Mode.

Fields (10)

Field id Label Kind Unit Target Class Range / options Description
explorer.project.search Search assets… text — — W — Filter the Project pane's current folder by name (substring, case-insensitive). Empty clears it.
explorer.library.search Search assets… text — — W — Filter the Library pane's current folder by name (substring, case-insensitive). Empty clears it.
explorer.project.filter Type filter select — — W all, models, materials, textures, scripts Show only one kind of item in the Project pane. Some subjects hide kinds they do not author (the live options say which).
explorer.library.filter Type filter select — — W all, models, materials, textures, scripts Show only one kind of item in the Library pane.
explorer.project.view View select — — W — The Project pane's view preset (Large/Medium/Small icons, List, Details, Tiles). The live options list the preset ids. Editor view state; nothing is saved to the project.
explorer.library.view View select — — W — The Library pane's view preset. The live options list the preset ids. Editor view state.
explorer.project.sort Sort by select — — W — The Project pane's sort as <key>:<asc|desc> (e.g. name:asc, modified:desc). The live options list every pair. Editor view state.
explorer.library.sort Sort by select — — W — The Library pane's sort as <key>:<asc|desc>. Editor view state.
explorer.library.source Library source select — — W — Which library the Library pane browses: presets (the built-in presets) or one plugin source per plugin the manifest lists that ships resources. The live options list them. Switching opens the source at its root.
explorer.rename.name New name text — — W — The in-place rename field, present only while a rename is in progress (explorer.item.rename / F2). A write COMMITS the rename through the explorer's file-op pipeline (references are rewritten). The field takes keyboard focus when a rename starts and fields_set never writes a focused field, so from an agent prefer the asset_move tool; this binding keeps the field readable.

Actions (41)

Action id Label Class Target Description
editor.explorer.new New R — Open the explorer's New menu (folder, material, script, deck, board…).
explorer.item.select Select R asset Select the item (as a single click does) so the Inspector shows it. Editor view state.
explorer.item.open Open R asset Open the item's editor tab (as a double-click does): Model, Texture, Material, Deck, Script, Prefab…
explorer.folder.open Open folder R asset Navigate the pane into this folder (target id <source>:<folder>).
explorer.tree.toggle Expand / collapse R asset Expand or collapse this folder in the pane's folder tree. Editor view state.
explorer.item.place Place on table W asset Place the item on the table as a new entity (the tile's hover Place button). Undoable.
explorer.item.delete Delete H asset Requires the user's confirmation in the DiceyTable tab. Delete the item (and, for a deck, its companion files) from the project through the explorer's file-op pipeline; the sync tombstone removes it upstream on the next publish. Same rule as the asset_delete tool.
explorer.item.split Split into parts R asset Open the Split into parts dialog for this model. Nothing is written until that dialog confirms.
explorer.item.create-prefab Create prefab W asset Write a .prefab.json beside this model (or wrapping this preset) and open it in the Prefab tab.
explorer.item.rename Rename R asset Start an in-place rename; then set explorer.rename.name to commit it.
explorer.menu.open Open R asset Item menu ▸ Open: open the item's editor tab.
explorer.menu.place Place on table W asset Item menu ▸ Place on table. Undoable.
explorer.menu.duplicate Duplicate W asset Item menu ▸ Duplicate: a copy in the same folder (a library item is duplicated INTO the project as a linked copy).
explorer.menu.copy-path Copy path R asset Item menu ▸ Copy path: put the item's path on the clipboard.
explorer.menu.copy-id Copy id R asset Item menu ▸ Copy id: put the item's id on the clipboard.
explorer.menu.rename Rename… R asset Item menu ▸ Rename…: start an in-place rename (then set explorer.rename.name).
explorer.menu.reveal-usage Reveal usage R asset Item menu: select the entities in the scene that reference this item.
explorer.menu.optimize-texture Optimize texture W asset Item menu: re-encode the texture to the web budget (the original is preserved as a hidden file).
explorer.menu.create-board Create board from image… R asset Item menu (a project image): open the New Board dialog with this image as the source. The board uses the existing file as its texture and inherits its credit; nothing is written until board.create.
explorer.menu.split-model Split into parts… R asset Item menu: open the Split into parts dialog.
explorer.menu.create-prefab Create prefab… W asset Item menu: write a .prefab.json for this model and open it.
explorer.menu.show-source Show source R asset Item menu (linked copy): open the Library pane at the item's source.
explorer.menu.reset-to-source Reset to source D asset Item menu (linked copy): overwrite the local copy with its library source, discarding local edits to it.
explorer.menu.detach Detach W asset Item menu (linked copy): stop following the library source; the copy becomes the project's own.
explorer.menu.delete Delete H asset Requires the user's confirmation in the DiceyTable tab. Delete the item (and, for a deck, its companion files) from the project through the explorer's file-op pipeline; the sync tombstone removes it upstream on the next publish. Same rule as the asset_delete tool.
explorer.menu.add-to-project Add to project W asset Library item menu: add a linked copy of the item (or the selection) to the project.
explorer.menu.show-credit Show credit R asset Library item menu: show the item's credit (work, creator, licence).
explorer.project.breadcrumb Breadcrumb R asset Navigate the Project pane to this breadcrumb folder (target id <source>:<folder>).
explorer.library.breadcrumb Breadcrumb R asset Navigate the Library pane to this breadcrumb folder (target id <source>:<folder>).
explorer.project.view-menu View menu R — Open the Project pane's View menu (the view itself is the explorer.project.view field).
explorer.library.view-menu View menu R — Open the Library pane's View menu (the view itself is the explorer.library.view field).
explorer.project.toggle-hidden-files Show hidden files R — Toggle listing the files the editor manages (preserved originals, link records, thumbnails…). They can be inspected and deleted, not edited. Editor view state.
explorer.project.collapse Collapse the Project pane R — Collapse the Project pane to a rail. Editor view state.
explorer.library.collapse Collapse the Library pane R — Collapse the Library pane to a rail. Editor view state.
explorer.project.expand Expand the Project pane R — Expand the collapsed Project pane. Editor view state.
explorer.library.expand Expand the Library pane R — Expand the collapsed Library pane. Editor view state.
explorer.library.source-menu Library source R — Open the Library source menu (the source itself is the explorer.library.source field).
explorer.library.manage-plugins Manage plugins… R — Open the Plugins panel (Manifest ▸ Plugins) from the Library source menu.
explorer.credit.close Close credit R — Close the credit card.
explorer.link-updates.review Review R — Open the linked-item updates review (dialog.link-update). Nothing is applied until that dialog does.
explorer.link-updates.dismiss Dismiss R — Dismiss the source-updates notice for this session.

editor.status-bar#

Status bar and problems · surface editor · singleton (no target)

How it opens: Always mounted; the problems list opens from the status bar.

Actions (6)

Action id Label Class Target Description
editor.status-bar.save-state Save state R — Open what is unsaved, or the Problems list.
editor.status-bar.validation Draft validation R — Toggle the Problems list (draft validation).
editor.status-bar.scene-validation Scene validation R — Toggle the Problems list (scene validation).
editor.status-bar.problems Errors and warnings R — Toggle the Problems list.
editor.status-bar.checkpoint GitHub checkpoint R — Toggle the Problems list (auto-checkpoint status).
editor.status-bar.sync GitHub sync R — Open the GitHub sync dialog. Prefer sync_status / sync_resolve.

snap-point.point#

Snap point · surface editor · target snap-point

How it opens: Select the snap point in the Hierarchy.

Fields (5)

Field id Label Kind Unit Target Class Range / options Description
snap-point.point.name Name text — snap-point W — The snap point's name; scripts read it with world.getSnapPointAt(). The only field a grid-generated point keeps.
snap-point.point.position Position length-vec3 length snap-point W — The point's position (read-only for a grid-generated point). [x, y, z] in world feet.
snap-point.point.rotation-y Rotation (°) angle degrees snap-point W step 5 The facing, in degrees, a piece is turned to when it snaps here (read-only for a grid-generated point).
snap-point.point.snap-radius Snap radius length length snap-point W ≥ 0.01, ≤ 2, step 0.01 How close a dropped piece has to land to be pulled in (read-only for a grid-generated point). World feet.
snap-point.point.owner Owner select — snap-point W ``, red, blue, green, yellow, purple, orange, pink, cyan, white, brown Seat that owns the point; "" = nobody (any player).

Actions (2)

Action id Label Class Target Description
snap-point.point.select-grid Select grid R snap-point Select the grid that generates this snap point.
snap-point.point.delete Delete snap point D snap-point Delete this (hand-placed) snap point. Undoable.

snap-point.grid#

Snap grid · surface editor · target snap-point

How it opens: Select the snap grid in the Hierarchy.

Fields (9)

Field id Label Kind Unit Target Class Range / options Description
snap-point.grid.name Name text — snap-point W — The grid's name (up to 80 characters).
snap-point.grid.rows Rows integer — snap-point W ≥ 1, ≤ 64, step 1 Ranks along the grid's Z axis.
snap-point.grid.cols Columns integer — snap-point W ≥ 1, ≤ 64, step 1 Files along the grid's X axis.
snap-point.grid.spacing-x Spacing X length length snap-point W ≥ 0.01, ≤ 48, step 0.05 Centre-to-centre distance between columns. World feet.
snap-point.grid.spacing-z Spacing Z length length snap-point W ≥ 0.01, ≤ 48, step 0.05 Centre-to-centre distance between rows. World feet.
snap-point.grid.center Centre length-vec3 length snap-point W — The point the grid is laid out symmetrically about. [x, y, z] in world feet.
snap-point.grid.rotation-y Rotation (°) angle degrees snap-point W step 5 Yaw of the whole block in degrees; every generated point takes it as its facing.
snap-point.grid.snap-radius Snap radius length length snap-point W ≥ 0.01, ≤ 2, step 0.01 Catchment of every point in the grid; keep it under half the spacing. World feet.
snap-point.grid.owner Owner select — snap-point W ``, red, blue, green, yellow, purple, orange, pink, cyan, white, brown Seat that owns every point in the grid; "" = nobody (any player).

Actions (1)

Action id Label Class Target Description
snap-point.grid.delete Delete grid D snap-point Delete the snap grid and every snap point it generates. Undoable.

snap-point.folder#

Snap Points folder · surface editor · singleton (no target)

How it opens: Select the Snap Points folder in the Hierarchy.

Actions (2)

Action id Label Class Target Description
snap-point.folder.toggle-visible Show/Hide snap points W — Toggle drawing every snap point's marker and snap-radius disc in the viewport. View state only.
snap-point.folder.new-folder New Folder W — Create an empty author folder in the Snap Points section. Undoable.

scene.scripts#

Scene scripts · surface editor · target script

How it opens: Select the Room row; the Scene scripts block.

Fields (1)

Field id Label Kind Unit Target Class Range / options Description
scene.scripts.add Add script select — — W — Attach an existing scene script (its id) to the scene. Setting "" does nothing.

Per-instance field families

Id pattern Materialised from
script.var.<name> One field per variable the attached script declares — on the attaching entity for an object script, per scene-script id for a scene script.

Actions (3)

Action id Label Class Target Description
scene.scripts.edit Edit R script Open the attached scene script in the Script editor.
scene.scripts.detach Remove W script Detach this script from the scene. The script itself stays in the project.
scene.scripts.new + New Script W — Create a new global (scene) script, attach it to the scene and open it. Prefer script_write to fill it.

material#

Material inspector · surface editor · target material

How it opens: Open the material in a Material tab, or select it in the explorer.

Fields (3)

Field id Label Kind Unit Target Class Range / options Description
inspector.material.name Name text — material W — The material's name.
item.material.name Name text — material W — The material's display name (1..80 characters). An empty name is ignored.
item.material.advanced Advanced boolean — — W — Show the Material inspector's advanced sections and fields. Editor view preference shared by every material inspector; nothing in the project changes.

Derived field families (15)

Id pattern Family Fields Keys Target
material.textureTransform.<key> textureTransform material section 4 tilingX, tilingY, offsetX, offsetY material
material.ambient.<key> ambient material section 3 ambient, aoMap, ambientTint material
material.diffuse.<key> diffuse material section 4 diffuse, diffuseMap, diffuseTint, diffuseVertexColor material
material.specular.<key> specular material section 11 useMetalness, metalness, metalnessMap, metalnessMapChannel, gloss, specular, specularMap, glossMap, glossMapChannel, glossInvert, specularityFactor material
material.emissive.<key> emissive material section 3 emissive, emissiveIntensity, emissiveMap material
material.opacity.<key> opacity material section 5 opacity, blendType, opacityMap, alphaTest, alphaToCoverage material
material.normals.<key> normals material section 2 normalMap, bumpiness material
material.parallax.<key> parallax material section 2 heightMap, heightMapFactor material
material.clearcoat.<key> clearcoat material section 3 clearCoat, clearCoatGloss, clearCoatBumpiness material
material.sheen.<key> sheen material section 3 useSheen, sheen, sheenGloss material
material.refraction.<key> refraction material section 3 refraction, refractionIndex, thickness material
material.iridescence.<key> iridescence material section 4 useIridescence, iridescence, iridescenceThicknessMin, iridescenceThicknessMax material
material.environment.<key> environment material section 2 cubeMap, reflectivity material
material.lightmap.<key> lightmap material section 1 lightMap material
material.other.<key> other material section 5 cull, depthTest, depthWrite, twoSidedLighting, opacityFadesSpecular material

Actions (4)

Action id Label Class Target Description
material.duplicate Duplicate W material Duplicate this material.
material.delete Delete D material Delete this (non-built-in) material.
material.section.toggle Expand / collapse section R material Expand or collapse one Material inspector section. The target is <material id>#<section key> (e.g. felt#normals); collapsed sections do not mount their fields. View state only; nothing is saved.
item.material.duplicate-to-project Duplicate to project W material Copy this built-in preset material into the project as an editable material (shown only on read-only presets).

manifest.details#

Manifest ▸ Details · surface editor · singleton (no target)

How it opens: Open diceytable.mod.json (Manifest tab) ▸ Details.

Fields (14)

Field id Label Kind Unit Target Class Range / options Description
manifest.details.name Title text — — W — The pack's public title (manifest.name), shown on its listing page and in the lobby.
manifest.details.mod-id Mod ID text — — W — The permanent mod id (manifest.id) other packs and games pin. Editable only until the first publish; the control is disabled once published.
manifest.details.version Version text — — W — Semver version (manifest.version, e.g. 1.0.0). A published version is immutable, so bump it before publishing changes.
manifest.details.slug Game URL text — — W — The public URL slug (manifest.slug). The box is shown after the URL's Edit action; "" returns to the slug derived from the title.
manifest.details.summary Summary multiline — — W — One-line plain-text tagline (manifest.summary, at most 200 characters).
manifest.details.description Description multiline — — W — The long description as Markdown (manifest.description). The WYSIWYG editor re-renders from it.
manifest.details.category Category select — — W — Browse category slug (manifest.category). The options depend on the pack type; fields_get lists them.
manifest.details.players-min Players (fewest) integer — — W ≥ 1, ≤ 64 Smallest supported player count (manifest.players.min). Shown for pack types that seat players.
manifest.details.players-max Players (most) integer — — W ≥ 1, ≤ 64 Largest supported player count (manifest.players.max); must not be below the fewest.
manifest.details.tags Tags tags — — W — The whole tag list (manifest.tags): up to 20 tags of letters, digits and dashes. Tags are lower-cased and de-duplicated.
manifest.details.video-url Video link text — — W — The gallery's video form (open it with Add a video, or a video tile's link action): a YouTube watch / youtu.be / Shorts link or id. Committed by the form's Add/Save action.
manifest.details.screenshot.title Screenshot title text — project W — A gallery entry's caption; "" removes it. Shown after the entry's details action. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.details.screenshot.alt Screenshot alt text text — project W — A gallery entry's alternative text for readers who cannot see it; "" removes it. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.details.screenshot.kind Screenshot type select — project W ``, marketing, gameplay, component What a gallery entry shows (marketing, gameplay or component art); "" clears it. Target: the row, {kind: "project", id: "<0-based index>"}.

Actions (20)

Action id Label Class Target Description
manifest.details.mod-id.use-suggestion Use suggested id W — Replace an invalid Mod ID with the valid id the form suggests.
manifest.details.version.bump Bump patch W — Increase the patch number of manifest.version (1.2.3 → 1.2.4).
manifest.details.slug.edit Edit URL R — Show (or hide) the Game URL box so manifest.details.slug can be set.
manifest.details.slug.reset Reset URL W — Clear the custom URL slug so the public URL follows the title again.
manifest.details.cover.recrop Re-crop cover R — Open the crop dialog on the current cover image; nothing changes until its Apply crop.
manifest.details.cover.remove Remove cover W — Stop using a cover image (manifest.coverImage). The file stays in the project.
manifest.details.screenshot.move-left Move left W project Move a gallery entry one place earlier. Target: the entry's 0-based index.
manifest.details.screenshot.move-right Move right W project Move a gallery entry one place later. Target: the entry's 0-based index.
manifest.details.screenshot.remove Remove W project Take an entry out of the gallery (the image file stays in the project). Target: the entry's 0-based index.
manifest.details.screenshot.recrop Re-crop R project Open the crop dialog on a gallery image; nothing changes until its Apply crop. Target: the entry's 0-based index.
manifest.details.screenshot.edit-link Change the YouTube link R project Open the video form for a video entry (then set manifest.details.video-url and Save). Target: the entry's 0-based index.
manifest.details.screenshot.details Details R project Open (or close) a gallery entry's title / alt text / type form. Target: the entry's 0-based index.
manifest.details.screenshot.details-done Done R — Close the gallery entry details form.
manifest.details.video.add Add a video R — Open the video form for a new gallery video.
manifest.details.video.submit Add / Save video W — Commit the video form's link as a new gallery video, or re-point the entry it was opened for.
manifest.details.video.cancel Cancel R — Close the video form without changing the gallery.
manifest.details.published.private-toggle Make private / Private H — Requires the user's confirmation in the DiceyTable tab. Owner: toggle the published mod between private (hidden from every listing but the owner's; tables hosted with it are always private) and public. Making it private needs a membership.
manifest.details.published.delete.ask Delete… R — Owner: open the delete-mod dialog. Nothing is deleted yet.
manifest.details.published.delete.cancel Cancel R — Close the delete-mod dialog without deleting.
manifest.details.published.delete.confirm Delete mod H — Requires the user's confirmation in the DiceyTable tab. Owner: retire the published mod for good. It leaves every listing, its page and the Projects rail; the GitHub repository is untouched.

manifest.gameplay#

Manifest ▸ Gameplay · surface editor · singleton (no target)

How it opens: Manifest tab ▸ Gameplay.

Fields (40)

Field id Label Kind Unit Target Class Range / options Description
manifest.gameplay.entry-setup Scene select — — W — The scene this pack loads (manifest.entry.setup), picked from the project's scene files; "" stops declaring one.
manifest.gameplay.entry-script Script select — — W — The mod script this pack runs (manifest.entry.script), picked from the project's .js/.ts files; "" stops declaring one. Room and table packs have no script.
manifest.gameplay.rules.title Rules title text — project W — A rules document's title. Target: {kind: "project", id: "<rules document id>"}.
manifest.gameplay.rules.url Rules link text — project W — A link-kind rules document's https URL (shown once the document is opened for editing). Target: the rules document id.
manifest.gameplay.rules.video-url Rules video link text — project W — A video-kind rules document's YouTube link; only a link that parses to a video id is committed. Target: the rules document id.
manifest.gameplay.rules.body Rules text multiline — project W — A written rules document's Markdown body, saved to rules/<id>.md in the draft. Target: the rules document id.
manifest.gameplay.lobby-requirement.kind Asks for select — project W deck What a lobby requirement asks each player for. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.id Requirement id text — project W — The key each player's answer is filed under (lowercase snake_case, unique). Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.label Requirement label text — project W — The caption players see above the lobby picker. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.help Requirement help text — project W — One line of help under the picker; "" removes it. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.applies-to Asked of select — project W players, owner Which seated members are asked. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.required Blocks Start boolean — project W — Whether an unanswered requirement stops the owner pressing Start. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.deck-sources Deck sources tags — project W — Which pools a deck requirement's picker offers (mine, community, database, game), in tab order. Never empty. game (the game's own decks, also the only pool a bot can be handed) needs manifest.gameplay.game-decks. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.database-plugin Database plugin text — project W — The plugin behind the database deck source; it must already be listed on the Plugins tab. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.database-function Listing function text — project W — The declared plugin function that lists decks for the database source. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.database-label Tab label text — project W — What the lobby picker calls the database tab; "" uses the plugin's name. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.format Format text — project W — A format id from the pack's card schema that an answer's deck must carry; "" accepts any. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.min-cards Fewest cards integer — project W ≥ 0, ≤ 100000 Smallest legal deck; 0 means no limit. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.max-cards Most cards integer — project W ≥ 0, ≤ 100000 Largest legal deck; 0 means no limit. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.icon-image Deck icon text — project W — deckIcon.image: the default icon shown beside every deck in the lobby — a repo-relative PNG/JPEG/WebP declared in assets (never a URL); "" removes it. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.icon-field Icon field text — project W — deckIcon.field: the key a per-deck icon value is read from (e.g. side on a database row or game deck, derived from the cards' own side for a saved deck; or formatId); "" removes it. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.icon-map Icon map text — project W — deckIcon.map as comma-separated value=path pairs (e.g. L=ui/side-light.png, D=ui/side-dark.png); at most 32, each path a declared repo raster image; "" removes it. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.distinct Decks must differ boolean — project W — distinctBy: no two decks at the table (players' and bots') may share a deck-icon value (e.g. both Light Side). Needs an icon field and map. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.distinct-except May repeat text — project W — distinctBy.except as comma-separated icon values that two decks MAY share (e.g. N for Neutral); "" for none. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.lobby-requirement.distinct-labels Value names text — project W — distinctBy.labels as comma-separated value=Name pairs used in refusals (e.g. L=Light Side, D=Dark Side); "" removes them. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.key Setup option key text — project W — The name a script reads the room owner's answer by (lowercase snake_case, unique in the pack): world.getSetupOptions()[key] in a table script, the third setup() argument in an entry script. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.label Setup option label text — project W — The caption the room owner sees beside the control under Game options in the lobby. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.help Setup option help text — project W — One line of help under the lobby control; "" removes it. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.control Control select — project W text, number, toggle, select Which lobby control the option is (text, number, toggle, select). Changing it drops the settings the new control does not use and resets the default to one it can hold (a select gets one starter choice). Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.default-toggle Default (on / off) boolean — project W — A toggle option's default: what the lobby shows, and what a script reads when the owner changes nothing. Mounted only when the control is toggle. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.default-number Default (number) number — project W — A number option's default; it must lie within the option's lowest and highest. Mounted only when the control is number. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.default-text Default (text) text — project W — A text option's default; no longer than its longest. Mounted only when the control is text. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.default-choice Default (choice) select — project W — A select option's default: the VALUE of one of its declared choices (the live control lists them). Mounted only when the control is select. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.choice-value Choice value text — project W — What a script reads when the owner picks this choice; unique within the option. Renaming the default choice's value renames the default with it. Target: {kind: "project", id: "<option index>/<0-based choice index>"}.
manifest.gameplay.setup-option.choice-label Choice label text — project W — What the lobby's list shows for this choice. Target: {kind: "project", id: "<option index>/<0-based choice index>"}.
manifest.gameplay.setup-option.min Lowest text — project W — A number option's min as text (e.g. "2"), or "" for no lower bound. Mounted only when the control is number. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.max Highest text — project W — A number option's max as text, or "" for no upper bound. Mounted only when the control is number. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.step Step text — project W — A number option's step as text (positive; "1" for whole numbers), or "" for none. Mounted only when the control is number. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.setup-option.max-length Longest integer — project W ≥ 0, ≤ 2000 A text option's maxLength in characters; 0 means no limit beyond the platform's 2000. Mounted only when the control is text. Target: the option's row, {kind: "project", id: "<0-based index>"}.
manifest.gameplay.game-decks Game decks file text — — W — gameDecks: the repo path of the pack's decklists file (a declared .json, e.g. decks/game-decks.json) offered in the lobby's Game decks tab and to bots; "" removes it.

Actions (15)

Action id Label Class Target Description
manifest.gameplay.remove-stranded-field Remove W project Delete a manifest key this pack type cannot use (it would refuse publish). Target: {kind: "project", id: "<manifest key>"}.
manifest.gameplay.rules.add-written Write rules W — Add a written (Markdown) rules document and open it for editing.
manifest.gameplay.rules.add-link Link to rules W — Add a rules document that is a link to rules hosted elsewhere.
manifest.gameplay.rules.add-video Add a video W — Add a YouTube how-to-play video as a rules document.
manifest.gameplay.rules.toggle Edit / Done R project Open (or close) a rules document's editor. Target: the rules document id.
manifest.gameplay.rules.move-up Move up W project Move a rules document one place earlier. Target: the rules document id.
manifest.gameplay.rules.move-down Move down W project Move a rules document one place later. Target: the rules document id.
manifest.gameplay.rules.remove Remove H project Requires the user's confirmation in the DiceyTable tab. Remove a rules document AND delete its files (Markdown body, rendered pages, cover) from the project. Target: the rules document id.
manifest.gameplay.rules.remove-cover Remove cover H project Requires the user's confirmation in the DiceyTable tab. Delete a video rules document's cover image file; YouTube's own still is used instead. Target: the rules document id.
manifest.gameplay.lobby-requirement.add Add a requirement W — Add a lobby requirement (one deck per player, blocking Start, by default).
manifest.gameplay.lobby-requirement.remove Remove D project Remove a lobby requirement and its settings. Target: the requirement's 0-based index.
manifest.gameplay.setup-option.add Add an option W — Add a setup option (an on/off toggle, default off, with a fresh key) to manifest.setupOptions; at most 12.
manifest.gameplay.setup-option.remove Remove D project Remove a setup option and all its settings. Target: the option's 0-based index.
manifest.gameplay.setup-option.choice-add Add a choice W project Add a choice to a select setup option (at most 32). Target: the option's 0-based index.
manifest.gameplay.setup-option.choice-remove Remove choice D project Remove one choice from a select setup option; if it was the default, the first remaining choice becomes the default. Target: <option index>/<0-based choice index>.

manifest.files#

Manifest ▸ Files · surface editor · singleton (no target)

How it opens: Manifest tab ▸ Files.

Fields (6)

Field id Label Kind Unit Target Class Range / options Description
manifest.files.view Show select — — W — Which files the Files tab lists (game files, on demand, editor-only, cleanup, all). View state only.
manifest.files.filter Filter by path text — — W — Filters the Files tab's list by path. View state only.
manifest.files.preload Pre-load boolean — asset W — Whether a game file is pre-loaded (listed in manifest.assets) or fetched on demand (manifest.excludedAssets). Target: {kind: "asset", id: "<repo-relative path>"}.
manifest.files.asset-repo.owner Art repository owner text — project W — GitHub account or organisation of an outside art repository (manifest.assetRepos). Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.files.asset-repo.repo Art repository name text — project W — Repository name of an outside art repository. Target: the row, {kind: "project", id: "<0-based index>"}.
manifest.files.asset-repo.ref Art repository ref text — project W — Branch, tag or commit sha to read the art from (a commit caches best). Target: the row, {kind: "project", id: "<0-based index>"}.

Actions (10)

Action id Label Class Target Description
manifest.files.help How does this work? R — Show or hide the Files tab's explanation of pre-loaded, on-demand, entry and editor-only files.
manifest.files.remove-missing Remove W asset Drop a declared asset path that no longer exists from manifest.assets. Target: the declared path.
manifest.files.folder.toggle Expand / collapse folder R asset Expand or collapse a folder in the Files tree. Target: the folder path.
manifest.files.delete.ask Delete… R asset Ask to delete a file (or a folder's listed files, target folder:<path>); shows the confirm row. Nothing is deleted yet.
manifest.files.delete.confirm Delete H asset Requires the user's confirmation in the DiceyTable tab. Delete the asked-about project file(s) through the editor's delete pipeline. Target: the path, folder:<path>, or view:leftovers.
manifest.files.delete.keep Keep R asset Dismiss a delete confirm row without deleting anything.
manifest.files.leftovers.ask Delete leftovers… R — Ask to delete every leftover file (Cleanup view); shows the confirm row.
manifest.files.scan-unused Scan for unused files R — Read the scene, decks, scripts and models and list game files none of them names (a best guess). Changes nothing.
manifest.files.asset-repo.add Add repository W — Add an outside art repository row to manifest.assetRepos (at most 4).
manifest.files.asset-repo.remove Remove repository D project Remove an outside art repository row. Target: the row's 0-based index.

manifest.plugins#

Manifest ▸ Plugins · surface editor · singleton (no target)

How it opens: Manifest tab ▸ Plugins (plugin settings render here).

Fields (2)

Field id Label Kind Unit Target Class Range / options Description
manifest.plugins.search Search the plugin registry text — — W — The plugin-registry search box; run it with the Search action. Plugin names and summaries in the results are third-party text.
manifest.plugins.function Function this game may call boolean — project H — Requires the user's confirmation in the DiceyTable tab. Whether this pack's script may call one declared function of an attached plugin. Turning one on can add the plugin-call capability, which players are shown before they join, so fields_set refuses it — use manifest_set. Target: {kind: "project", id: "<pluginId>/<function name>"}.

Per-instance field families

Id pattern Materialised from
plugin.setting.<key> · plugin.setting.<pluginId>.<key> One field per setting the mod's selected plugins declare. Use the <pluginId> form when two plugins declare the same key.

Actions (7)

Action id Label Class Target Description
manifest.plugins.search-submit Search R — Search the plugin registry for manifest.plugins.search. Results are third-party text.
manifest.plugins.details Details R project Show or hide a plugin's attribution, origins and call snippet. Target: {kind: "project", id: "<pluginId>"}.
manifest.plugins.add Add to game H project Requires the user's confirmation in the DiceyTable tab. Attach a registered plugin with all of its callable functions. This adds the plugin-call capability, which players are shown before they join. Target: the plugin id.
manifest.plugins.configure-only Configure only W project Answer a plugin's settings without letting this pack's script call it (a deck-source plugin). Target: the plugin id.
manifest.plugins.remove Remove D project Remove a plugin from the pack: its attachment, its functions and the pack's answers to its settings. Target: the plugin id.
manifest.plugins.setting.reset Reset W project Drop the pack's answer to one plugin setting so the plugin's default applies. Target: {kind: "project", id: "<pluginId>/<setting key>"}.
manifest.plugins.setting.remove-stale Remove W project Remove an answer to a setting the plugin no longer declares. Target: <pluginId>/<setting key>.

manifest.bots#

Manifest ▸ Bots · surface editor · singleton (no target)

How it opens: Manifest tab ▸ Bots (game bots: the AI models and the AI/scripted opponents a game pack declares). Game packs only.

Fields (20)

Field id Label Kind Unit Target Class Range / options Description
manifest.ai-models.label Label text — project W — An AI model's display name (manifest.aiModels[].label), 1-40 characters of plain text. Target: {kind: "project", id: "<model id>"}.
manifest.ai-models.min-tier Min tier select — project W cpu-basic, cpu-fast, gpu The weakest host device a game using this model may start on (aiModels[].minTier): cpu-basic, cpu-fast or gpu. Lower than the import's estimate means slow bot turns on weak hosts. Target: {kind: "project", id: "<model id>"}.
manifest.ai-models.difficulty.id Difficulty id text — project W — A model strength preset's id (lowercase letters, digits, hyphens; unique within the model). Target: {kind: "project", id: "<model id>/<0-based difficulty index>"}.
manifest.ai-models.difficulty.label Difficulty label text — project W — A model strength preset's display name. Target: {kind: "project", id: "<model id>/<0-based difficulty index>"}.
manifest.ai-models.difficulty.sims-per-move Sims per move integer — project W ≥ 0, ≤ 4096 Search simulations per move for this preset (simsPerMove, 1-4096); 0 leaves it unset. Target: {kind: "project", id: "<model id>/<0-based difficulty index>"}.
manifest.ai-models.difficulty.temperature Temperature text — project W — Move-sampling temperature for this preset as text: a number from 0 to 2 (e.g. "0.8"), or "" to leave it unset. Target: {kind: "project", id: "<model id>/<0-based difficulty index>"}.
manifest.bots.label Label text — project W — A game bot's display name in the lobby and at the table (manifest.bots[].label). Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.id Id text — project W — A game bot's id (lowercase letters, digits, hyphens; unique). Rooms and fallbacks refer to it. Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.kind Kind select — project W scripted, ai Whether the bot is scripted (script code only) or ai (its handler evaluates a declared AI model). Switching to scripted clears its model and fallback. Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.model Model select — project W — The AI model an ai bot evaluates (modelId, one of manifest.aiModels[].id) — its DEFAULT model, used by every difficulty that does not name its own (manifest.bots.difficulty.model). Shown for ai bots only; fields_get lists the options. Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.fallback Fallback bot select — project W — The scripted bot of this game a promoted host may swap an ai bot for when its device cannot run the model (fallbackBotId); "" for none. Shown for ai bots only. Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.handler Handler text — project W — The id the scene script passes to bots.register({ id }) for this bot (handler). Free text; publish refuses a handler no scene script registers. Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.handler-pick Registered handlers select — project W — Pick the handler from the ids the scene scripts' compiled bodies register with bots.register; writes the same handler value. fields_get lists the options. Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.default-difficulty Default difficulty select — project W — Which of the bot's own difficulties a room starts on (defaultDifficulty); "" uses the first. Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.seats-max Seats (most) integer — project W ≥ 0, ≤ 9 The most of this bot one table may seat (seats.max); 0 leaves it unset (up to the game's player limit). Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.description Description text — project W — One line about the bot shown where it is offered; "" removes it. Target: the bot's row, {kind: "project", id: "<0-based index>"}.
manifest.bots.difficulty.id Difficulty id text — project W — A bot difficulty's id — what the bot's script reads. Target: {kind: "project", id: "<bot index>/<0-based difficulty index>"}.
manifest.bots.difficulty.label Difficulty label text — project W — A bot difficulty's display name — what players pick. Target: {kind: "project", id: "<bot index>/<0-based difficulty index>"}.
manifest.bots.difficulty.description Difficulty description text — project W — One optional line about a bot difficulty; "" removes it. Target: {kind: "project", id: "<bot index>/<0-based difficulty index>"}.
manifest.bots.difficulty.model Difficulty model select — project W — The AI model this difficulty of an ai bot plays with (difficulties[].modelId, one of manifest.aiModels[].id) — e.g. a separate network per Easy / Medium / Hard; "" uses the bot's default model (manifest.bots.model). It is the model the table loads, gates the host's device on, reports as BotTurnContext.modelId and keys the bot's Rankings strength on for that difficulty. Shown for ai bots only; fields_get lists the options. Target: {kind: "project", id: "<bot index>/<0-based difficulty index>"}.

Actions (12)

Action id Label Class Target Description
manifest.ai-models.import Import model… R — Open the Import AI model dialog, where the human picks an .onnx file. Nothing is imported yet; an agent sends a file with the ai_model_import tool instead.
manifest.ai-models.revalidate Re-check files R — Validate every declared AI model's file in the draft again (the publish scanner's own ONNX check) and refresh each row's status. Changes nothing.
manifest.ai-models.remove Remove H project Requires the user's confirmation in the DiceyTable tab. Remove an AI model from manifest.aiModels AND delete its .onnx file from the project. Refused while a game bot still uses the model. Target: {kind: "project", id: "<model id>"}.
manifest.ai-models.trained-import Import… R project Open the Import AI model dialog on a model the training page exported for this project, already checked against its export. Nothing is added until the dialog's Add. Target: {kind: "project", id: "<exported model id>"}.
manifest.ai-models.trained-discard Discard H project Requires the user's confirmation in the DiceyTable tab. Delete a trained model's export (the .onnx and its description in the training page's storage on this device) without importing it. Target: the exported model id.
manifest.ai-models.difficulty.add Add difficulty W project Add a strength preset (id, label, simulations per move, temperature) to an AI model. Target: the model id.
manifest.ai-models.difficulty.remove Remove difficulty D project Remove one strength preset from an AI model. Target: {kind: "project", id: "<model id>/<0-based difficulty index>"}.
manifest.bots.add Add bot W — Add a game bot row to manifest.bots (a scripted bot with a fresh id; edit its fields afterwards). At most 8.
manifest.bots.remove Remove D project Remove a game bot from manifest.bots. AI bots that named it as their fallback lose that fallback. Target: the bot's 0-based index.
manifest.bots.difficulty.add Add difficulty W project Add a named difficulty (id, label, description) to a game bot. Target: the bot's 0-based index.
manifest.bots.difficulty.remove Remove difficulty D project Remove one difficulty from a game bot; a default difficulty that named it is cleared. Target: {kind: "project", id: "<bot index>/<0-based difficulty index>"}.
manifest.bots.train Train a model… W — Leave the editor for the training page (/editor/train) for this project, in this tab. Asks before discarding unsaved changes, so an agent must save first (project_save).

manifest.credits#

Manifest ▸ Credits · surface editor · singleton (no target)

How it opens: Manifest tab ▸ Credits.

No field or action is registered on this panel yet. panel_open can still open it, and describe_panel / screenshot_panel can read it.

manifest.file#

Manifest ▸ File · surface editor · singleton (no target)

How it opens: Manifest tab ▸ File (read-only JSON view).

No field or action is registered on this panel yet. panel_open can still open it, and describe_panel / screenshot_panel can read it.

agent.indicator#

AI agent indicator · surface editor · singleton (no target)

How it opens: Mounted while an agent is attached; its controls are the human's, never the agent's.

No field or action is registered on this panel yet. panel_open can still open it, and describe_panel / screenshot_panel can read it.

editor.scene-snap-points#

Snap point tools · surface editor · singleton (no target)

How it opens: Left rail ▸ Snap points; the flyout's Grid and Label sub-tools show their settings.

Fields (9)

Field id Label Kind Unit Target Class Range / options Description
editor.scene-snap-points.grid-rows Rows integer — — W ≥ 1, ≤ 20, step 1 Rows in the next snap grid the Grid sub-tool places.
editor.scene-snap-points.grid-columns Columns integer — — W ≥ 1, ≤ 20, step 1 Columns in the next snap grid the Grid sub-tool places.
editor.scene-snap-points.grid-spacing-x Spacing X length length — W ≥ 0.05, ≤ 5, step 0.05 Distance between grid columns, in feet.
editor.scene-snap-points.grid-spacing-z Spacing Z length length — W ≥ 0.05, ≤ 5, step 0.05 Distance between grid rows, in feet.
editor.scene-snap-points.label-text Label text — snap-point W — The name of the snap point the Label sub-tool highlighted (max 80 characters).
editor.scene-snap-points.label-scheme Scheme select — — W chess, rows-columns, numbered How Name all names a regular grid.
editor.scene-snap-points.label-flip-rows Flip rows boolean — — W — Name the grid rows from the other end.
editor.scene-snap-points.label-flip-columns Flip columns boolean — — W — Name the grid columns from the other end.
editor.scene-snap-points.label-swap Swap boolean — — W — Swap rows and columns when naming the grid.

Actions (8)

Action id Label Class Target Description
editor.scene-snap-points.radii Show/Hide radii W — Toggle the snap point markers and their catchment radii in the viewport. View state only.
editor.scene-snap-points.place Place W — Arm the Place sub-tool (click the table to add a snap point). Prefer snap_points_set for exact positions.
editor.scene-snap-points.move Move W — Arm the Move sub-tool (drag snap points in the viewport).
editor.scene-snap-points.delete Delete W — Arm the Delete sub-tool (click a snap point to remove it).
editor.scene-snap-points.grid Grid W — Arm the Grid sub-tool (click the table to place a rows × columns grid of snap points).
editor.scene-snap-points.label Label W — Arm the Label sub-tool (click a snap point to name it, or name a whole regular grid).
editor.scene-snap-points.name-all Name all W — Apply the chosen naming scheme to every snap point of the inferred grid. Undoable.
editor.scene-snap-points.lift Lift onto table W — Re-seat snap points (and grids) that sit below the play surface just above it. Undoable.

scene.ui-layouts#

Scene UI layouts · surface editor · singleton (no target)

How it opens: Select the Game / Room row (its Scene scripts & UI block) or the Hierarchy's UI Layouts folder.

Fields (2)

Field id Label Kind Unit Target Class Range / options Description
scene.ui-layouts.attach Attach UI layout select — — W — Attach a layout from the project's library to the scene (written to the current variant scope, like scene scripts). The game's scripts show its furniture widgets when they start.
scene.ui-layouts.attached Attached boolean — asset W — Whether this layout is attached to the scene in the variant being edited. The target is the layout id.

Actions (5)

Action id Label Class Target Description
scene.ui-layouts.new + New UI layout W — Create an empty UI layout in the project's library, attach it to the scene (current variant scope) and open it in the UI Layout tab.
scene.ui-layouts.edit Edit R asset Open a layout in the UI Layout tab. The target is the layout id.
scene.ui-layouts.detach Detach W asset Stop showing a layout in the variant being edited (the layout stays in the library). The target is the layout id.
scene.ui-layouts.duplicate Duplicate W asset Copy a layout under a fresh id (not attached). The target is the layout id.
scene.ui-layouts.delete Delete D asset Delete a layout from the library and detach it from every variant. The target is the layout id.

scene.highlights#

Highlight styles · surface editor · singleton (no target)

How it opens: Select the Game row (or the Room row in the pre-mode editor): its HIGHLIGHT STYLES block.

Fields (6)

Field id Label Kind Unit Target Class Range / options Description
scene.highlights.id Name text — asset W — The name scripts pass to world.setHighlight (lowercase letters, digits and -, up to 32). Naming a style target / active / playable overrides that built-in for this game. Renaming refuses a name another style already has. The target is the style id.
scene.highlights.label Label text — asset W — An editor-only description of what the style means in this game (e.g. "Exhausted"). Players never see it. The target is the style id.
scene.highlights.color Colour color — asset W — The outline colour as [r, g, b] in 0..1 (stored as #rrggbb). The target is the style id.
scene.highlights.width Width number — asset W ≥ 0.5, ≤ 4, step 0.25 Outline thickness as a multiple of the default (about 1/4 inch at 1). The target is the style id.
scene.highlights.intensity Intensity number — asset W ≥ 0.2, ≤ 1, step 0.05 How bright and opaque the outline is: 1 is fully bright. The target is the style id.
scene.highlights.pulse Pulse boolean — asset W — A slow breathing pulse (respects the player's reduced-motion setting in the hand drawer). The target is the style id.

Actions (3)

Action id Label Class Target Description
scene.highlights.add + Style W — Add a new highlight style (style-N, light blue) to the variant being edited. Rename it with scene.highlights.id.
scene.highlights.customise Customise W asset Override a built-in style for this game: adds a style named after it with the built-in look, ready to edit. The target is the built-in's id (target, active, playable).
scene.highlights.remove Remove W asset Remove a style from the variant being edited (a removed override falls back to the built-in look; scripts naming a removed custom style are refused with a diagnostic). The target is the style id.

editor.menu.file#

File menu · surface editor · singleton (no target)

How it opens: Menu bar ▸ File. Opening a menu mounts its items as menu.file.* actions.

No field or action is registered on this panel yet. panel_open can still open it, and describe_panel / screenshot_panel can read it.

editor.menu.edit#

Edit menu · surface editor · singleton (no target)

How it opens: Menu bar ▸ Edit. Opening a menu mounts its items as menu.edit.* actions.

No field or action is registered on this panel yet. panel_open can still open it, and describe_panel / screenshot_panel can read it.

editor.menu.view#

View menu · surface editor · singleton (no target)

How it opens: Menu bar ▸ View. Opening a menu mounts its items as menu.view.* actions.

No field or action is registered on this panel yet. panel_open can still open it, and describe_panel / screenshot_panel can read it.

editor.menu.mod#

Mod menu · surface editor · singleton (no target)

How it opens: Menu bar ▸ Mod. Opening a menu mounts its items as menu.mod.* actions.

No field or action is registered on this panel yet. panel_open can still open it, and describe_panel / screenshot_panel can read it.

editor.menu.help#

Help menu · surface editor · singleton (no target)

How it opens: Menu bar ▸ Help. Opening a menu mounts its items as menu.help.* actions.

No field or action is registered on this panel yet. panel_open can still open it, and describe_panel / screenshot_panel can read it.

editor.move-assists#

Move assists · surface editor · singleton (no target)

How it opens: Always mounted in the viewport's top-left corner in Edit Mode.

Fields (1)

Field id Label Kind Unit Target Class Range / options Description
editor.move-assists.grid-size Grid spacing select — — W — Grid spacing in feet for the Grid move assist (the live options, e.g. 0.25). Disabled while Grid is off. Editor-local; nothing is saved.

Actions (3)

Action id Label Class Target Description
editor.move-assists.snap-points Snap points W — Toggle pulling a moved entity onto nearby snap points and board squares. Editor-local; nothing is saved to the project.
editor.move-assists.grid Grid W — Toggle pulling a moved entity's centre onto nearby grid lines. Editor-local.
editor.move-assists.magnetism Magnetism W — Toggle lining a moved entity up with nearby entities' edges, centres and spacing. Editor-local.

game.dice#

DICE (Game) · surface editor · singleton (no target)

How it opens: Select the Game row in the Hierarchy; its DICE section (only for a game pack).

Fields (8)

Field id Label Kind Unit Target Class Range / options Description
game.dice.mode Dice offered select — — W standard, custom standard: the stock d4–d20 set. custom: the dice listed below. Disabled while dice rolling is off (the section header's checkbox).
game.dice.clear-after Clear rolled dice after (s) number — — W ≥ 0, ≤ 3600, step 1 Seconds after a roll settles before its dice clear themselves (manifest.diceClearAfterSeconds); 0 = never (the default). Applies to dice-dock, VR and script-requested rolls (a script's clearAfterSeconds overrides it). A die someone picked up is kept; one being held is never cleared. Disabled while dice rolling is off.
game.dice.entry.faces Faces select — project W — The die's face layout: face count, printed numbers and collider shape. Target game#<die key>.
game.dice.entry.model Model select — project W — What the die looks like, applied exactly as dropping that thing on the die's slot: "" = the stock die of its face layout; preset:<die preset id> = a stock die with the same face count (sets the layout, clears any custom model); a project die design's repo path (models/dice/<name>.die.json, labelled with the design's name; offered once its model is built) = that design's baked model, which also sets the face layout to the design's shape. A current model no design baked reads back as its own path. Live options come from fields_get. Target game#<die key>.
game.dice.entry.name Name text — project W — Label shown in the dice picker; empty uses the layout's name. Target game#<die key>.
game.dice.entry.start-count Start integer — project W ≥ 0, ≤ 40, step 1 How many of this die the picker starts at. Target game#<die key>.
game.dice.entry.tint Tint color — project W — Colour the die is tinted, as [r, g, b] in 0..1 (clear it with the clear-tint action). Target game#<die key>.
game.dice.add + Add die… select — — W — Write a face layout to append a die of that layout to the list. Reads back empty (it is a picker, not a stored value).

Actions (4)

Action id Label Class Target Description
game.dice.entry.clear-model Use the stock die model W project Drop this die's custom model so it renders as the stock die of its face layout. Target game#<die key>.
game.dice.entry.clear-tint Clear tint W project Remove this die's tint. Target game#<die key>.
game.dice.entry.clear-material Clear material W project Remove this die's material. Target game#<die key>.
game.dice.entry.remove Remove this die W project Remove this die from the game's dice list (the last one cannot be removed while custom dice are on). Target game#<die key>.

Did this page answer your question?