8.4 KiB
| id | ticket | title | status | created | accepted | agenda | plans | tags | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| DEC-0026 | studio-scene-workspace | Scene Workspace Ownership and Wave-1 Tilemap Scope | abandoned | 2026-04-14 | 2026-04-14 | AGD-0029 |
|
|
Decision
The Studio SHALL introduce a dedicated Scene Workspace as a first-class shell workspace for scene authoring.
The Scene Workspace MUST own the authoring lifecycle of scenes as scenes, not as asset-detail forms.
The Studio SHALL treat the edited scene as an intermediate authoring artifact owned by the Scene Workspace.
The Scene Workspace MAY create a new scene and, as part of that flow, create the corresponding SCENE asset.
The Assets workspace MAY also create a SCENE asset, but it MUST NOT paint tilemaps, edit scene content, choose scene tilesets, or own other editorial scene configuration.
When a SCENE asset is created from Assets, authoring and subsequent editing MUST be delegated to the Scene Workspace.
The first implementation wave of the Scene Workspace SHALL expose only the Tilemap aspect.
The wave-1 Tilemap aspect MUST support:
- a left scene navigator;
- a central map editing surface;
- a right-side tilemap details area with dimensions and layer-relevant detail;
- a tile palette area for tile selection and painting;
- four canonical scene layers;
- independent layer dimensions;
- scene-first navigation;
- explicit tile presence semantics aligned with the runtime model;
- basic painting, erasing, tile selection, layer visibility, and layer focus.
The wave-1 Scene Workspace MUST NOT include:
- authoring for camera boundaries;
- authoring for lights;
- authoring for AABB data;
- placeholder tabs that imply those capabilities already exist;
- advanced paint tools such as marquee, bucket fill, flood fill, or equivalent higher-order tooling.
The Scene Workspace MUST use an explicit and stable binding between the intermediate scene artifact and the corresponding SCENE asset.
That binding MUST NOT rely on path inference as its primary semantic anchor.
The Scene Workspace MUST own editorial tileset selection for the scene.
Any technically valid glyph bank MAY be referenced as a tileset under the scene-authoring model.
Optional Studio-only curation such as tagging glyph banks for better discoverability MAY exist, but it MUST NOT redefine the underlying capability contract.
Rationale
This decision separates two different responsibilities that would otherwise collapse into one another:
- scene authoring as an editorial workspace concern;
- asset management as an asset-first Studio concern.
Keeping the Scene Workspace independent prevents the Assets workspace from becoming a generic container for heavy domain editors.
That separation also matches the user-facing intent:
- the
Assetsworkspace can create or surface aSCENEasset; - the
Scene Workspaceis where the user actually authors the scene.
Wave 1 is intentionally narrow.
The goal is to prove the canonical scene-authoring loop around tilemaps, layers, tileset selection, and save semantics before introducing additional aspect domains such as camera, lights, or collision-adjacent editing.
The decision also keeps the Studio aligned with the runtime model already present in ../runtime:
- four canonical layers;
- per-layer tilemaps with independent dimensions;
- explicit tile presence rather than magic empty glyph ids;
- no leakage of viewport-cache or transient renderer concerns into authoring ownership.
Technical Specification
1. Workspace Topology
- The Studio shell MUST mount
Scene Workspaceas its own workspace entry. - The
Scene WorkspaceMUST follow the same shell/workspace separation rules as other Studio workspaces. - The
Scene WorkspaceMUST own its operational detail locally rather than pushing it into shell-global surfaces.
2. Scene Ownership Model
- A scene edited in
Scene WorkspaceMUST be treated as a Studio-owned intermediate authoring artifact. - The scene authoring artifact MUST have its own stable identity.
- The scene authoring artifact MUST be the primary navigation unit inside the
Scene Workspace. - The related
SCENEasset MUST appear only as linked context, status, or action, not as the primary navigation unit of the workspace.
3. Relationship with Assets
AssetsMAY create aSCENEasset.Scene WorkspaceMAY create aSCENEasset as part of creating a new scene.AssetsMUST delegate scene-content authoring toScene Workspace.AssetsMUST NOT expose map painting or equivalent scene-editor interactions.- The Studio SHOULD support contextual handoff from
AssetstoScene WorkspaceafterSCENEasset creation.
4. Binding Contract
- The relationship between a scene authoring artifact and a
SCENEasset MUST be explicit. - The primary binding anchor MUST be Studio metadata or equivalent explicit identity linkage.
- Path MAY be retained as secondary location context.
- Rename or relocation MUST NOT silently break semantic linkage solely because paths changed.
5. Wave-1 UI Composition
- The left region MUST provide a scene navigator inspired by the custom-navigation discipline used in
Assets, but it MUST remain scene-first rather than asset-first. - The top region of the workspace MUST provide an aspect-tab structure.
- Wave 1 MUST expose only one visible tab:
Tilemap. - The central region of the
Tilemaptab MUST host the editable map canvas. - The right-side upper region MUST show tilemap dimensions and relevant details for the active scene/layer context.
- The right-side lower region MUST show the tile palette used for picking and painting.
6. Scene Model Expectations for Wave 1
- The workspace MUST model exactly four scene layers.
- Each layer MUST support independent dimensions.
- Each layer MUST be editable in a way compatible with the runtime-aligned canonical scene model.
- The workspace MUST NOT flatten all layers into one synthetic shared-size map contract.
7. Tileset Rules
- Tileset choice MUST be owned by
Scene Workspace. - The workspace MAY resolve tileset selection per scene or per layer, as long as the chosen model remains explicit and internally consistent.
- Any glyph bank that is technically valid for use as tileset data MAY be selected.
- Optional Studio editorial tagging MAY improve filtering and discoverability, but MUST remain non-normative to the base capability.
AssetsMUST NOT override editorial tileset selection from the scene workspace.
8. Editing and Save Rules
- The
Scene WorkspaceMUST save the intermediate scene authoring artifact through its own save flow. - Saving the scene authoring artifact MUST remain distinct from asset creation or asset-management flows.
- The workspace MUST support a normal save-oriented document/editing lifecycle for the scene artifact rather than an asset-form
apply/resetlifecycle.
9. Tooling Scope for Wave 1
- Wave 1 MUST support basic painting.
- Wave 1 MUST support erasing through explicit tile presence control.
- Wave 1 MUST support selecting a tile and palette for painting.
- Wave 1 MUST support layer visibility.
- Wave 1 MUST support layer focus.
- Wave 1 MUST NOT depend on bucket fill, marquee, flood fill, or equivalent advanced editing tools.
10. Tile Semantics
- Tile absence MUST be represented by explicit presence state.
glyph_id = 0MUST remain a valid glyph identifier.- Erasing a tile MUST clear presence state instead of writing a magic empty glyph value.
- Painting behavior MUST operate over explicit tile data such as active state, glyph id, palette id, and flip state.
Constraints
- This decision is limited to the
Scene Workspaceand its Studio-local boundary withAssets. - This decision MUST NOT be used to infer packer publication rules beyond the existence of a linked
SCENEasset. - This decision MUST NOT be treated as approval for camera, lighting, AABB, or other future aspect tabs.
- Any future change to the ownership boundary between
Scene WorkspaceandAssetsrequires an explicit revision or replacement decision. - Any future change to the stable binding contract between scene artifact and
SCENEasset requires an explicit revision or follow-up decision.
Revision Log
- 2026-04-14: Initial accepted decision from AGD-0029.
- 2026-04-15: Abandoned by explicit user request before implementation completion; follow-up work must proceed through a new discussion rather than this decision.