# Assets, media, metadata, and scene composition

## Asset library lifecycle

- List, paginate, search, sort, and filter assets by type, scene, scene type, platform, tags, and active state.
- Upload a file, create asset metadata, generate a thumbnail, record size/MIME/dimensions, and store in Google Cloud Storage.
- Retrieve an asset with metadata/knowledge; retrieve animation data.
- Edit name, display name, type, description, tags, active state, and version.
- Delete the record plus cloud file; retrieve a signed URL; inspect audit history.
- Bulk upload/seed and backfill dimensions/platform assignment.

## Supported asset kinds

- tile, sprite, object, NPC, avatar, UI, audio, tilemap, and animation.

## Physics and interaction metadata

- AOE shape/radius/rectangle/polygon/unit.
- Hitbox dimensions and offsets.
- Interaction type, range, cooldown, and facing requirement.
- State list and animations (file, frames, FPS, loop).
- Sprite-sheet frame size, rows/columns, anchors, padding, direction mapping, and per-state frame ranges.
- Spawn position, layer, z-index, and facing.
- Rules: required item, maximum users, movable/destructible, level requirement, and description.
- Custom properties for engine-specific extension.

## Environment/media metadata

- Tile walkability, terrain cost/type, auto-tile group, and edge status.
- Audio volume, loop, fade, spatialization, trigger, radius, and category.
- Tilemap grid, tile size, layers, and orientation.
- Movement speed/type, wander radius, patrol path, obstacle avoidance, and movement personality.
- HEARTS primary/secondary facet, base delta, and explanation.

## Asset knowledge and semantic behavior

- Generate or manually update visual description, color palette, mood, art style, scene role, placement hint, pair-with/avoid-near lists, composition notes, suitable scenes/facets, therapeutic use, and narrative hook.
- Record player affordances such as collect, push, open, attack, talk, trade, craft, plant, ride, or teleport.
- Record object capabilities such as block paths, bridge gaps, trigger events, store/dispense, grow/spawn, provide light/shelter, show UI, play sound, damage, or heal.
- Configure placement type, nearby requirements, attachment points, and context-dependent functions.
- Generate one/all asset knowledge records, synchronize to asset storage/vector index, inspect coverage, regenerate design knowledge, and test semantic retrieval.

## Scene composition

- Create/update/delete scenes and configure scene name/type, tile map, description, system prompt, active/version state, and creator.
- Configure player/NPC/object spawn points.
- Configure music, lighting, weather, and background color.
- Add/remove assets; store placements and assemble the scene manifest.
- Include actors, challenges, routes, and game/player-avatar information in the manifest.
- Preview runtime output and react to asset-changed webhooks.

## New UI requirements

- Keep file, asset record, engine metadata, semantic knowledge, scene placement, and vector-index status as related but distinct panels.
- Offer type-specific editors instead of one enormous metadata form.
- Show downstream usage and require impact confirmation before deactivate/delete/version replacement.
- Provide sprite-sheet/animation preview, hitbox/AOE overlay, audio preview, tile walkability preview, and placement-rule preview.
- Make bulk operations, generation status, coverage, audit, and failed synchronization discoverable.

