mirror of
https://github.com/tiennm99/sokoban.git
synced 2026-10-14 06:18:03 +00:00
b8db78542296b5e3c3a3cbe65fdb748482f1d60e
Tighten everything that fights the board for pixels in landscape: - #app top padding 12 -> 6 (saves 6px vertical). - .game gap 10 -> 6 (saves 4px between HUD and board). - D-pad arrows 48 -> 44px and action button height 48 -> 44px (still above the 44pt HIG minimum). Dock width shrinks 160 -> 150px and internal d-pad height 102 -> 94px. - Dock now justify-content: flex-end so the action stack and d-pad cluster at the bottom of the column (natural thumb arc), leaving empty space above instead of mid-column. computeTileSize landscape branch: chromeY 76 -> 64, chromeX 240 -> 186 to match the slimmer chrome reservation. Net board win on 800x360 phones: ~47 -> 50 tile (+6%); on Pixel 7 landscape Microban 1 already hits the 56px cap and stays there. Tall puzzles still bound by viewport height — no CSS-only path past that without scroll. All changes gated behind @media (pointer: coarse) and (orientation: landscape). Portrait and desktop untouched.
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/
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/Zto undo,Rto restart,Escfor 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
npm install
npm run dev # dev server on http://localhost:8080
npm run build # production build
Project layout
Documentation
docs/project-overview-pdr.md— product scope.docs/system-architecture.md— how the pieces fit together.docs/code-standards.md— conventions.docs/development-roadmap.md— past and planned phases.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 on top of Vite.
License
- Source code: see
LICENSE. - Puzzle layouts (Microban): see
LICENSE-LEVELS.md— Skinner's free-distribution-with-credit terms, not the main project license.
Description
From-scratch Sokoban puzzle game — Svelte 5 + Vite, all 155 Microban levels, undo, progress tracking
Readme
Apache-2.0
1.4 MiB
0 Stars
1 Watchers
0 Forks
Languages
Svelte
56.5%
JavaScript
38%
CSS
4.8%
HTML
0.7%