2.3 KiB
2.3 KiB
Asset Specification, Raw Assets, and Virtual Asset Contract Agenda
Status
Open
Purpose
Define the contract of asset.json, including the split between raw assets, virtual assets, and format-specific output specs.
Context
The draft already proposes:
asset.jsonas the anchor spec,- common fields for all assets,
- explicit pipeline declaration for virtual assets,
- future format families such as
TILES/indexed_v1andSOUNDS/pcm16le_v1.
This needs decomposition into a stable common contract plus future format-specific specs.
Source Sections
5.3 Asset Types (Bank Targets)5.4 Raw vs Virtual Assets7. Asset Specification: asset.json14. Virtual Assets (Deep Explanation)
Key Questions
- Which fields belong to every
asset.jsonregardless of type? - Which parts of the file are common packer contract versus format-specific contract?
- How explicit must virtual build steps be?
- Where should defaults live, and when must they be materialized?
- Is
typethe bank target, the user-facing kind, or both? - How should packer version output formats independently from registry and descriptor schemas?
Options
Option A
Keep a small common asset.json contract and push all output-specific rules into dedicated format specs.
Option B
Keep a richer monolithic asset.json contract in one central spec.
Tradeoffs
- Option A scales better as new asset formats are added.
- Option A keeps the core packer spec smaller and more stable.
- Option B looks simpler initially but becomes harder to evolve without coupling unrelated formats together.
Recommendation
Adopt Option A:
- a compact common
asset.jsoncontract, - format-specific normative specs for each output family,
- explicit virtual asset declarations with deterministic materialization rules.
Expected Decisions to Produce
- Common
asset.jsonschema boundary. - Raw versus virtual asset contract.
- Versioning strategy for asset format specs.
- Rules for defaults and explicit materialization.
Expected Spec Follow-up
- Common asset specification spec.
- Virtual asset contract spec.
- Format-specific specs such as
TILES/indexed_v1.
Non-Goals
- Final CLI UX for authoring these files.
- Incremental build internals.
- Cartridge builder consumption details.