tiennm99 34eaf1b2a7 fix(ui): make buttons reliably clickable
Remove the scale-on-press animation from the shared button factory. Scaling
the container also scaled its hit rectangle, so any small pointer drift
between pointerdown and pointerup landed outside the shrunken hitbox and
the click was silently dropped. Releasing off the button also left it
visually stuck at 0.96 scale.

Fire the callback on pointerdown instead — snappy, no release tracking,
identical behaviour for mouse, touch, and fast clicks. Hover colour change
still provides press feedback.
2026-04-11 22:55:02 +07:00
2025-04-26 23:07:35 +07:00
2025-04-26 22:44:57 +07:00
2025-04-26 23:07:35 +07:00

Sokoban

A browser-based Sokoban game built with Phaser 3 and Vite, shipping 100 Microban levels by David W. Skinner.

Play: https://tiennm99.github.io/sokoban/

Features

  • 100 solvable puzzles from the Microban set (beginner-friendly, concept-focused).
  • Paginated level select with progress tracking and best-move record per level.
  • Controls: arrow keys or WASD. U / Z to undo, R to restart, Esc for menu.
  • Undo history, live move counter, animated moves.
  • Progress saved locally in localStorage.
  • Responsive tile sizing so small and large levels both look right.

Development

npm install
npm run dev          # dev server on http://localhost:8080
npm run build        # production build
npm run dev-nolog    # dev without the analytics ping
npm run build-nolog  # build without the analytics ping

Project layout

See docs/codebase-summary.md.

Documentation

Credits

License

MIT — see LICENSE.

S
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%