# Sokoban My from-scratch Sokoban game, built with **Svelte 5** and **Vite**. The engine, UI, level parser, and progression system are all my own implementation. The puzzle layouts themselves come from David W. Skinner's freely distributable **Microban** set — I'm not reusing any of his code, only his level designs. Play: [https://tiennm99.github.io/sokoban/](https://tiennm99.github.io/sokoban/) ## Features - **All 155 puzzles** from the Microban set, from beginner teasers up to the giant "Take the long way home" maze and "The Dungeon" finale. - **Paginated level select** with progress tracking and best-move record per level. - **Controls**: Arrow keys or WASD on desktop; on-screen D-pad on mobile (bottom-right, one-handed). `U` / `Z` to undo, `R` to restart, `Esc` for menu. - **Mobile-optimized**: Touch-safe controls, haptic feedback (vibrate on push & win), safe-area insets for notches/nav bars, browser gesture blocking. - **Installable PWA**: Add to home screen on iOS/Android, play offline, standalone fullscreen mode. - **Undo history**, live move counter, animated moves. - **Progress saved** locally in `localStorage` (per browser, per device). - **Responsive tile sizing** so small and large levels both look right on any screen. ## Development ```bash npm install npm run dev # dev server on http://localhost:8080 npm run build # production build ``` ## Project layout See [`docs/codebase-summary.md`](docs/codebase-summary.md). ## Documentation - [`docs/project-overview-pdr.md`](docs/project-overview-pdr.md) — product scope. - [`docs/system-architecture.md`](docs/system-architecture.md) — how the pieces fit together. - [`docs/code-standards.md`](docs/code-standards.md) — conventions. - [`docs/development-roadmap.md`](docs/development-roadmap.md) — past and planned phases. - [`docs/project-changelog.md`](docs/project-changelog.md) — release notes. ## Credits - Puzzle layouts: **Microban** level set by David W. Skinner (April 2000). Freely distributable with credit. Original site: http://users.bentonrea.com/~sasquatch/sokoban/ - Game code: tiennm99 (with AI pair-programming from Claude). - Framework: [Svelte 5](https://svelte.dev/) on top of [Vite](https://vite.dev/). ## License - Source code: see [`LICENSE`](LICENSE). - Puzzle layouts (Microban): see [`LICENSE-LEVELS.md`](LICENSE-LEVELS.md) — Skinner's free-distribution-with-credit terms, not the main project license.