# 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.