16 KiB
| id | ticket | title | status | created | resolved | decision | tags | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| AGD-0029 | studio-scene-workspace | Scene Workspace for SCENE Authoring | abandoned | 2026-04-14 | 2026-04-14 | DEC-0026 |
|
Pain
O Studio ainda nao possui um workspace dedicado para autoria e inspecao de scenes.
Sem esse workspace:
- o Studio nao oferece uma experiencia autoral propria para scenes como dominio editorial;
- a equipe fica sem uma superficie visual para editar o artefato intermediario de scene que depois alimenta o asset
SCENE; - o Studio perde a chance de ensinar o modelo correto de scene como asset versionado, com quatro layers e contrato proprio;
- a futura expansao para camera bounds, lights, AABB e outros aspectos acaba sem composicao clara desde a primeira wave.
Context
Domain owner: studio
Owner documental esperado:
docs/specs/studio
Cross-domain impact:
../runtimepara o contrato canonico deSCENE,SceneBankeSceneLayer;Assetsworkspace apenas na fronteira de criacao/descoberta do assetSCENE.
Rastro relevante ja existente:
- o runtime ja convergiu para
SCENEcomo payload binario versionado; SceneBanke o modelo canonico carregado no runtime possuem exatamente4layers;- cada
SceneLayerpossui seu proprioTileMap, com dimensoes independentes; - viewport cache, camera movement e renderer nao fazem parte do modelo canonico de authoring do scene;
- o
Assetsworkspace ja define o padrao de navegador customizado, asset-first e path-aware, que deve inspirar a navegacao doScene Workspacesem virar um file explorer generico.
Escopo inicial solicitado pelo usuario:
- novo workspace chamado
Scene Workspace; - navegador de scenes na lateral esquerda, similar ao
Assetsworkspace; - o
Scene Workspacetrabalha com scenes como scenes, nao como assets; - a scene editada no workspace vira um artefato intermediario de autoria;
- o
Scene Workspacepode criar uma scene nova e, ao fazer isso, criar tambem o assetSCENEcorrespondente; - o
Assetsworkspace pode criar um assetSCENE, mas nao pinta mapa nem faz configuracoes editoriais da scene; - depois de criado, o trabalho de conteudo e configuracao da scene fica delegado ao
Scene Workspace; - cada scene como mapa de
4layers; - cada layer com largura e altura independentes, em estilo similar ao
Tiled; - faixa superior com abas de aspectos da ferramenta;
- primeira aba:
Tilemap; - aba
Tilemapcom mapa no centro; - painel superior direito com dimensoes e detalhes do tilemap;
- painel inferior direito com aquarela/paleta de tiles para selecao e pintura;
- tileset vindo de assets, com suporte a selecionar qualquer glyph bank ou marcar glyph banks como tileset apenas no Studio;
- outras abas futuras previstas: camera boundaries, lights, AABB, etc., mas fora da primeira wave.
Open Questions
- O
Scene Workspacedeve abrir scenes apenas por seu catalogo proprio, ou tambem aceitar handoff contextual quando um assetSCENEfor criado noAssets? - Qual identidade o navegador da esquerda deve priorizar: scene authoring artifact, path do projeto, ou algum catalogo editorial proprio do
Scene Workspace? - O Studio deve tratar a edicao de scene como staged editing com
apply/reset, ou como documento editavel com save integrado? - Como o Studio relaciona uma scene autoral com o asset
SCENEcorrespondente: referencia por path, UUID proprio do artefato intermediario, ou binding mediado por metadata do Studio? - Como o Studio seleciona o glyph bank usado como tileset em cada layer ou scene: referencia editorial na scene ou vinculacao resolvida pelo proprio
Scene Workspace? - O contrato do runtime ja determina metadados suficientes por layer para authoring inicial, ou o Studio precisara propor extensoes antes da implementacao do workspace?
- Como representar tiles vazios, brush, fill e selecao sem colidir com a semantica canonica de tile vazio ja aceita no runtime?
- A primeira wave deve permitir apenas pintura bruta por tile, ou ja precisa incluir ferramentais como marquee, bucket, eyedropper e multi-layer visibility/lock?
- As abas futuras devem ser somente placeholders estruturais agora, ou a wave inicial deve expor apenas a aba
Tilemappara nao sugerir suporte inexistente?
Options
Option A - Scene Workspace como workspace dedicado no shell
- Approach: Criar um workspace proprio de
Scene Workspace, com navegador de scenes na esquerda, header com tabs de aspecto e composicao interna especializada por aba. - Pro: Da visibilidade de primeira classe a
SCENE, cria uma arquitetura clara para expansao futura por aspectos e preserva a fronteira entre shell e detalhe operacional do workspace. - Con: Introduz mais uma entrada no shell e exige decidir como ele se relaciona com a descoberta de assets no fluxo ja existente.
- Maintainability: Strong, porque estabiliza ownership e composicao desde a primeira wave.
Option B - editor especializado dentro do Assets workspace
- Approach: Manter tanto o asset
SCENEquanto a edicao do artefato intermediario dentro doAssets, usando a selecao do asset como ponto de entrada do editor. - Pro: Reaproveita navegacao asset-first existente e concentra toda a historia de scene em um unico lugar.
- Con: Colapsa duas naturezas diferentes em uma mesma superficie: gerenciamento de asset packer-facing e authoring de scene como conteudo editorial.
- Maintainability: Weak, porque incentiva o
Assetsworkspace a absorver ownership que nao e dele.
Option C - workspace autoral proprio com integracao via asset
- Approach: O
Scene Workspaceedita e cria a scene como dominio proprio; oAssetsworkspace apenas pode criar/mostrar o assetSCENEe delega a autoria da scene para oScene Workspace. - Pro: Separa claramente authoring editorial de scene da gestao asset-first do
Assets, sem deixar oAssetsabsorver o editor. - Con: Exige fechar um contrato de binding entre scene autoral e asset
SCENE, alem de definir handoff entre os dois workspaces. - Maintainability: Strong, porque o
Scene Workspacepermanece owner do conteudo e oAssetsfica restrito a criacao/gestao do asset.
Discussion
O ponto mais importante desta discussao nao e apenas layout. O runtime ja tem um contrato canonico claro o bastante para impor restricoes no editor:
- o payload final
SCENEnao e um documento arbitrario; e um asset binario versionado com4layers fixos; - cada layer possui
TileMapproprio e, portanto, o editor nao deve assumir um canvas unificado com dimensoes compartilhadas; - viewport cache, camera drift e outras preocupacoes de renderizacao nao pertencem ao modelo canonico do scene workspace;
- o
Scene Workspacenao deve editar o payload final do asset diretamente; ele deve editar um material intermediario proprio; - o tileset precisa se alinhar aos glyph banks que ja existem como assets, sem criar um segundo sistema de tiles paralelo no Studio.
Tambem existe uma decisao estrutural de produto a ser tomada cedo:
- se o
Scene Workspacefor somente um modo interno doAssets, o Studio arrisca repetir o anti-pattern de transformar um workspace asset-first em container generico de editores; - se ele nascer como workspace proprio, a arquitetura de abas por aspecto e a expansao futura para boundaries/lights/AABB ficam mais honestas;
- como a scene autoral nao e o proprio asset, a costura correta passa por um contrato entre artefato intermediario e asset
SCENE, nao por subordinacao de um workspace ao outro; - o
Assetspode oferecer criacao de assetSCENE, mas a autoria e manutencao do conteudo da scene devem ser delegadas aoScene Workspace.
Outro ponto aberto e a semantica do tileset:
- permitir qualquer glyph bank maximiza flexibilidade e reaproveitamento;
- exigir uma tag editorial de "tileset" melhora discoverability e reduz selecao invalida;
- uma combinacao pode ser a melhor direcao: qualquer glyph bank tecnicamente valido, com tagging opcional no Studio para curadoria UX.
Por fim, a primeira wave precisa resistir a overreach:
- a aba
Tilemapja e um escopo suficientemente grande; - placeholders de abas futuras so fazem sentido se a shell structure realmente precisar reservar esse contrato agora;
- caso contrario, placeholders podem comunicar suporte inexistente e gerar pressao artificial sobre uma decision ainda nao tomada.
Convergence pass - recommended answers for the open questions
1. Workspace proprio ou extensao do Assets
Recomendacao: Scene Workspace deve existir como workspace shell-level proprio e nao deve ser subordinado ao Assets.
Motivo:
- o shell ja foi especificado para hospedar workspaces independentes;
- o
Assetsworkspace deve continuar asset-first e didatico, nao virar um host generico de editores; - a scene autoral tem natureza propria e vira um artefato intermediario, nao o payload final do asset.
- o
Scene Workspacedeve aceitar tanto abertura por seu proprio navegador quanto handoff contextual quando oAssetscriar um assetSCENE.
2. Identidade do navegador da esquerda
Recomendacao: a identidade primaria deve ser a scene autoral, nao o asset SCENE.
Contexto de apoio:
- path continua visivel como contexto secundario;
- o workspace pode precisar de um identificador editorial proprio para a scene intermediaria;
- o asset
SCENEcorrespondente pertence aoAssetsworkspace e deve aparecer apenas como vinculacao ou estado derivado.
Direcao adicional:
- o navegador deve ser scene-first;
- path de projeto entra como contexto secundario;
- o asset vinculado pode aparecer como badge, status ou acao contextual, mas nao como unidade primaria de navegacao.
3. Modelo de edicao e persistencia
Recomendacao: a primeira wave deve tratar a scene como documento/artefato autoral com save proprio, separado de qualquer fluxo de criacao ou gestao do asset no Assets.
Motivo:
- o usuario deixou explicito que o
Scene Managertrabalha sobre um artefato intermediario proprio; - o
Scene Workspacee owner do conteudo da scene; - o
Assetspode continuar com fluxos proprios para criacao/gestao de asset, mas sem absorver a autoria da scene; - misturar save do conteudo autoral com
applydo asset apagaria a fronteira entre autoria e empacotamento.
Direcao adicional:
- o
Scene Workspacesalva o artefato intermediario; - criar ou vincular o asset
SCENEe um passo de integracao entre workspaces, nao a mesma operacao de salvar a scene.
4. Binding entre scene autoral e asset SCENE
Recomendacao: o binding deve ser mediado por metadata do Studio, nao por inferencia de path como regra primaria.
Motivo:
- path pode mudar por rename ou reorganizacao de projeto;
- a scene autoral precisa de identidade mais estavel do que localizacao fisica;
- o
Assetse oScene Workspaceprecisam compartilhar um vinculo explicito sem colapsar um no outro.
Direcao adicional:
- a scene autoral deve ter um identificador proprio;
- o asset
SCENEcorrespondente deve referenciar esse identificador, ou vice-versa, por um contrato editorial do Studio; - path continua relevante como localizacao de arquivo, nao como ancora semantica principal do binding.
5. Selecao de glyph bank como tileset
Recomendacao: a scene autoral deve poder referenciar glyph banks como tilesets em nivel editorial, e essa escolha deve ser owned pelo Scene Workspace.
Motivo:
- o runtime ja referencia
glyph_bank_idpor layer, nao um tipo separado de tileset; - criar um subtipo obrigatorio de asset agora inventaria uma regra de produto nao exigida pelo contrato canonico;
- uma tag editorial ainda pode melhorar descoberta sem restringir um contrato que hoje e genericamente
GLYPH.
Direcao adicional:
- a escolha de glyph bank por layer ou por scene deve ser resolvida no
Scene Workspace; - o
Assetsnao deve redefinir tileset da scene; - tags editoriais opcionais no Studio podem melhorar filtragem e discoverability.
6. Metadados por layer
Recomendacao: para a primeira wave, o contrato do runtime parece suficiente para authoring inicial de tilemap.
Rastro observado no runtime:
SceneLayerja possuiactive;glyph_bank_id;tile_size;motion_factor;tilemapcomwidth,heighte tiles.
Conclusao:
- isso e suficiente para uma aba
Tilemapcom visibilidade por layer, dimensoes independentes, tileset por layer e pintura; - camera bounds, lights e AABB ficam corretamente fora dessa wave e devem motivar metadados adicionais apenas quando virarem tema de nova decision.
7. Tile vazio, brush e pintura
Recomendacao: o Studio deve respeitar a semantica canonica de presenca explicita por tile.
Consequencias:
glyph_id = 0deve permanecer valido;- apagar um tile deve atuar sobre o bit/estado de presenca (
active = false), nao sobre um glyph magico; - brush, eyedropper e futuras ferramentas devem operar sobre
active,glyph_id,palette_id,flip_xeflip_y.
8. Ferramentas da primeira wave
Recomendacao: limitar a primeira wave a pintura basica, apagador, seletor de tile e controles de layer como visibilidade/foco.
Excluir agora:
- marquee complexo;
- bucket fill;
- multi-select estrutural;
- automacoes de brush avancadas.
Motivo:
- o objetivo da wave 1 e provar o fluxo canonico de scene authoring;
- ferramentas mais ricas multiplicam edge cases antes de estabilizar modelo, persistencia e UX base.
Direcao adicional:
multi-layer visibilityelayer focusentram na wave 1;lock,marquee,bucket,flood fille automacoes avancadas ficam explicitamente fora.
9. Abas futuras agora ou depois
Recomendacao: o workspace deve nascer com uma faixa superior de tabs, mas expor apenas a aba Tilemap na primeira wave.
Motivo:
- a estrutura de tabs faz parte da composicao arquitetural pedida;
- tabs placeholder para
Camera,LightsouAABBsugeririam suporte que ainda nao existe; - reservar o componente estrutural agora facilita expansao futura sem mentir sobre cobertura funcional.
Resolution
Abandoned on 2026-04-15 by explicit user request.
The accepted direction captured here was superseded before implementation.
Follow-up direction:
- abandon the dedicated
Scene Workspaceapproach; - open a new discussion for a
Tiledparser; - manage the resulting authoring flow from
Assetsthrough a new asset type.
Direcao recomendada: convergir para Option C, em que o Scene Workspace e um workspace autoral de primeira classe no shell e o Assets workspace permanece apenas como superficie asset-first capaz de criar ou exibir o asset SCENE, sem editar o conteudo da scene.
Essa recomendacao parte de quatro principios:
- a scene autoral e um artefato intermediario proprio do dominio
Scene Workspace; - o asset
SCENEpode ser criado tanto peloScene Workspacequanto peloAssets, mas o conteudo da scene e owner doScene Workspace; - o
Assetsnao pinta mapa nem faz configuracoes editoriais da scene; - o binding entre scene autoral e asset
SCENEdeve ser explicito e estavel; - a primeira wave deve fechar apenas o aspecto
Tilemap, sem fingir maturidade para camera bounds, lights ou AABB.
Proximo passo sugerido: transformar esta agenda em uma decision que feche:
Scene Workspacecomo workspace shell-level proprio e owner do artefato intermediario de scene;- identidade primaria do workspace pela scene autoral, nao pelo asset;
- save proprio da scene autoral no
Scene Workspace, separado da criacao/gestao do asset noAssets; - contrato de binding entre scene intermediaria e asset
SCENE; - glyph banks como tilesets validos por contrato, com eventual curadoria editorial no Studio;
- aba unica
Tilemapna primeira wave, preservando a shell de tabs para expansao futura; - propagacao necessaria para specs do
studio, incluindo a pequena extensao doAssetspara criacao de scene asset e o ownership doScene Workspacesobre a autoria da scene.