31 lines
1.5 KiB
Markdown
31 lines
1.5 KiB
Markdown
# Spritesheets
|
||
|
||
> Full art brief — every sheet with dimensions, frame maps, and drawing
|
||
> notes — lives in [`sprites.md`](../sprites.md) at the project root.
|
||
|
||
Art is optional: any sheet that is missing (or too small for a requested
|
||
frame) gets a procedurally generated placeholder baked in its entry's `color`
|
||
from the config JSON, so the game always runs.
|
||
|
||
## Layout
|
||
|
||
Every sheet is a **horizontal strip of square frames**, left to right. The
|
||
`frame` field in the config JSON is the 0-based index into the strip. Frames
|
||
are **192×192** (walls can override via `textureSize` in `walls.json`; baked
|
||
output is always 192×192).
|
||
|
||
Expected files (paths are what `src/config/*.json` references — change them
|
||
there if you prefer a different arrangement):
|
||
|
||
| File | Used by | Notes |
|
||
| ----------------------------- | --------------- | ----- |
|
||
| `assets/textures/walls.png` | `walls.json` | Opaque. Frame per wall id (frame 0 = Gray Brick, …) |
|
||
| `assets/textures/overlays.png`| `overlays.json` | **Transparent PNG** — composited over wall textures |
|
||
| `assets/sprites/items.png` | `items.json` | **Transparent PNG** — billboard props (plant, lamp, …) |
|
||
| `assets/sprites/enemies.png` | `enemies.json` | **Transparent PNG** — one frame per enemy type for now |
|
||
|
||
A 5-frame walls sheet is therefore 960×192; a 3-frame enemies sheet 576×192.
|
||
|
||
You can also point different entries at different files — each unique
|
||
`texture` path is loaded once and shared.
|