58 lines
3 KiB
Markdown
58 lines
3 KiB
Markdown
# Pixel Island Summoner
|
|
|
|
Browser-only prototype for a shared pixel-art island.
|
|
|
|
## Run
|
|
|
|
Open `index.html` in a modern browser. No build step or third-party dependency is required.
|
|
|
|
## Current prototype scope
|
|
|
|
- Draw pixel assets in the in-browser editor.
|
|
- Save assets to the local library.
|
|
- Place static assets and summon dynamic assets onto the island.
|
|
- Dynamic assets default to right-facing on spawn; left-facing is rendered by mirroring during movement only.
|
|
- Local voting, hiding, remix/copy edit, and import/export tools are included.
|
|
|
|
## Phase 1 changes
|
|
|
|
- Asset data is normalized to schema 2+ compatible shape.
|
|
- Dynamic left-facing pixels are not stored; `faces.left` is represented as `mirror`.
|
|
- Empty depth/light metadata is omitted or normalized.
|
|
- Editor tools include Draw, Erase, Fill, Pick, Undo, and Redo.
|
|
|
|
## Phase 2 changes
|
|
|
|
- Local save uses a compact Phase 2 envelope in `localStorage`.
|
|
- Pixel planes are bbox-cropped and RLE-compressed when this is smaller than raw cropped data.
|
|
- Compact asset bundles can be exported separately from world snapshots.
|
|
- World snapshots contain placements, dynamic summons, and an asset manifest rather than full asset blobs.
|
|
- Local object/asset mutations append small sync events to `eventLog`.
|
|
- IndexedDB asset/snapshot cache helpers are included for future server-backed missing-asset fetches.
|
|
|
|
## Phase 3 changes
|
|
|
|
- Terrain rendering is chunk-cached instead of using one large terrain canvas.
|
|
- Only terrain chunks intersecting the current viewport are drawn.
|
|
- Static and dynamic objects outside the viewport margin are culled before sprite generation/sorting.
|
|
- Dynamic runtime updates are stepped at 15 Hz and capped per frame to avoid spiral-of-death on slow devices.
|
|
- Rendering pauses while the browser tab is hidden and resumes on visibility change.
|
|
- Tile/object lookups use a small spatial index for inspect, erase, and nearby-target searches.
|
|
- Data tab reports visible terrain chunks for quick performance inspection.
|
|
|
|
## Phase 4 changes
|
|
|
|
- Editor schema is now 5.
|
|
- Added Line and Rect tools. Rect supports filled rectangles with Shift; right-click erases line/rect cells.
|
|
- Added Select tool. Drag to select a rectangular area, then drag the selection or use arrow keys/buttons to move it.
|
|
- Nudge buttons move the active selection; without a selection they shift the whole drawing.
|
|
- Added horizontal/vertical flip, palette-colored outline generation, and clear selection.
|
|
- Added editor PNG export/import. PNG import quantizes the image to the current island palette and current canvas size.
|
|
- Added keyboard shortcuts: B/E/F/I/L/R/S for tools, Ctrl/Cmd+Z/Y for history, arrows for moving selected pixels, Escape to clear selection.
|
|
|
|
## Export formats
|
|
|
|
- **Export full JSON**: human-readable full local state.
|
|
- **Export compact**: compact local state suitable for saving/transferring.
|
|
- **Export snapshot**: placement state plus asset manifest; requires asset bundles or cache to render fully.
|
|
- **Export asset bundle**: compact asset blob list for missing-asset transfer.
|