Game review
LD48 Chess Puzzle (Deeper and Deeper)
5.8 / 10
- Developer
- Dmitry Bezverkhiy (GitHub: dickclaus)
- Publisher
- Independent (Ludum Dare 48 Compo entry)
- Released
- 1 January 2021
- Platforms
- Web browser (desktop and mobile)
- Genre
- Puzzle
- Monetisation
- Free, open source, no ads and no in-game purchases
- Players
- Single-player only
The short version
The idea here is genuinely clever: rather than solving someone else's "mate in X" puzzle, you drag pieces onto an empty board yourself and press "Go deeper," and a client-side Stockfish tells you whether the position you built is actually forced mate in exactly that many moves — succeed and the target climbs by one. That's a real, distinctive twist on the chess-puzzle app and it works end to end, confirmed by loading a test position and watching the engine correctly call "Mate in 1." What keeps it off this shelf is the one thing the shelf exists to check: the drag-and-drop that the entire game is built around throws "unable to preventDefault inside passive event listener" errors on every touch drag, visibly lets the page scroll under your finger mid-gesture, and dropped a test piece one square away from where it was dragged — on a board so wide it doesn't fit a phone screen even after we added the viewport tag it shipped without.
Biggest strengths
- "Compose a mate-in-N puzzle and let an engine verify it" is a genuinely different way to interact with chess puzzle software, not a reskin of the usual solve-a-premade-puzzle format
- The core loop works: loading a test position and pressing "Go deeper" correctly ran Stockfish.wasm client-side, evaluated the position, displayed "Congratulations: Mate in 1," and advanced the target depth, confirmed by reading the live engine status output
- MIT licensed, properly credited, no ads, no third-party analytics anywhere in the code
Biggest weaknesses
- Every dragged touch move on a phone throws a console error ("Unable to preventDefault inside passive event listener") because the shipped chessboard.js library predates browsers making touch listeners passive by default; the practical effect, confirmed by testing, is the page scrolling underneath your finger mid-drag and a piece landing on the wrong square — a knight dragged to e4 came to rest on e3
- The board is a fixed 400 CSS pixels wide with no responsive layout anywhere in the page, and the page shipped with no viewport meta tag at all, meaning a real phone would have rendered it at desktop scale and required pinch-zooming just to see the pieces; we added the missing tag ourselves to test it fairly, which is what exposed the overflow and scroll problems above
- Even after that fix, the white spare-piece tray sits at the very bottom of the page with only a couple of pixels of scrollable room to reach it inside a typical phone's visible height
Who it's for: Chess players curious about a novel spin on puzzle composition, played on a desktop or laptop rather than a phone
Our recommendation: Worth a look on desktop for the Stockfish-verified composition idea; not recommended on a phone, where the exact interaction the game is built around is unreliable
5.8 / 10
Most browser chess puzzles hand you a position and ask you to find the winning line. LD48 Deeper and Deeper, built for Ludum Dare 48 around the theme "deeper and deeper," runs that in reverse: you get an empty board, a full tray of spare pieces for both colours, and a single instruction — build a position that is forced mate in exactly one move, then two, then three, climbing as high as you can construct. Press "Go deeper" and a Stockfish engine running entirely in your browser tells you whether what you built actually works. It's a small idea, executed in what the README admits was 48 hours, and reading js/game.js confirms there's nothing hiding behind it: no scoring beyond an incrementing depth counter, no saved gallery of your best puzzles, just you, an empty board, and an engine keeping you honest.
The idea is real, and it works
Skepticism about a claim like "verified by Stockfish" is fair, so this was tested rather than taken on faith: loading the developer's own bundled test position and clicking "Go deeper" produced a live, readable engine status line ("Depth: 1 Nps: 16800 Score: 8.43"), and the page's own "Congratulations: Mate in 1" banner fired and faded exactly as the source code says it should, with the level counter advancing to 2 afterward. chess.js handles legality, chessboard.js handles the drag-and-drop, and Stockfish.wasm does the actual analysis, all running client-side with no server round-trip. As a piece of jam engineering, wiring those three libraries together into a working composition-verifier in a weekend is a genuinely neat trick.
Where the shelf's own test breaks it
Chessboard.js binds real touchstart/touchmove/touchend handlers alongside its mouse events, unconditionally — there's no navigator.userAgent check hiding them, which is normally a good sign. But that library dates to a time before Chrome made touch-move listeners passive by default, and it never opts back out. The result, confirmed on a simulated touchscreen rather than assumed from the code: dragging a piece throws "Unable to preventDefault inside passive event listener" on every move, the browser's own scroll gesture takes over mid-drag because the library's attempt to block it silently fails, and a knight dragged toward e4 landed on e3 instead — a full square of drift from a single gesture. For a game whose entire interaction model is "place a piece exactly where you mean to," that's not a cosmetic bug.
It compounds with a second, unrelated problem: the shipped page has no viewport meta tag at all, so a real phone browser would render it at desktop width and force you to pinch-zoom before anything is usable. This review added the missing tag to give the touch test a fair run, and doing so revealed the board's fixed 400-pixel width doesn't comfortably fit a 390-pixel-wide phone screen, and the white spare-piece tray — which you need to actually build a puzzle as White — sits close enough to the bottom of the page that even scrolling as far down as the page allows leaves only a couple of pixels of it inside a typical phone's visible height.
Should you play it
On a desktop or laptop, where a mouse drag doesn't trip the passive-listener bug and the full board fits without scrolling, this is a genuinely interesting few minutes for anyone who likes chess puzzles from the composing side rather than the solving side. On a phone — the exact audience this shelf is built to serve — the core interaction is unreliable enough that we can't recommend it here, and the layout needs real, ongoing work rather than the one-line fix this review applied just to test it fairly.
Pros and cons
Pros
- "Compose a mate-in-N puzzle and let an engine verify it" is a genuinely different way to interact with chess puzzle software, not a reskin of the usual solve-a-premade-puzzle format
- The core loop works: loading a test position and pressing "Go deeper" correctly ran Stockfish.wasm client-side, evaluated the position, displayed "Congratulations: Mate in 1," and advanced the target depth, confirmed by reading the live engine status output
- MIT licensed, properly credited, no ads, no third-party analytics anywhere in the code
- Chessboard.js's own touchstart/touchmove/touchend handlers are real, unconditional, and not hidden behind any platform or user-agent check
Cons
- Every dragged touch move on a phone throws a console error ("Unable to preventDefault inside passive event listener") because the shipped chessboard.js library predates browsers making touch listeners passive by default; the practical effect, confirmed by testing, is the page scrolling underneath your finger mid-drag and a piece landing on the wrong square — a knight dragged to e4 came to rest on e3
- The board is a fixed 400 CSS pixels wide with no responsive layout anywhere in the page, and the page shipped with no viewport meta tag at all, meaning a real phone would have rendered it at desktop scale and required pinch-zooming just to see the pieces; we added the missing tag ourselves to test it fairly, which is what exposed the overflow and scroll problems above
- Even after that fix, the white spare-piece tray sits at the very bottom of the page with only a couple of pixels of scrollable room to reach it inside a typical phone's visible height
- No progression, scoring, saving, or sharing of the puzzles you build — once you know a couple of reliable "trap the king, pile on material" patterns, escalating the depth counter stops being an interesting problem and becomes a repetitive one