The short version
Mirror Puzzle takes the oldest sliding-tile puzzle format there is and adds exactly one idea: the picture being solved is a live feed of your own face, not a stock image. The entire game — video capture, tile shuffling, click-to-move logic, and win detection — fits in under 1024 bytes of HTML, and js1024.fun's own 2022 results confirm it as that year's HTML-category winner with a perfect 100/100 score. This review had to build a custom test harness to verify it properly, because the standard testing setup has no camera and the game (correctly) refuses to run without one — once a synthetic test camera feed was supplied, both a real touchscreen tap and a real mouse click were confirmed, at the DOM level rather than by eye, to shuffle the board and correctly slide a tile into an adjacent empty space.
Biggest strengths
- Genuinely verified rather than assumed: shuffling and tile-sliding were tested with a real touchscreen tap and a real mouse click against the actual DOM state (not just a screenshot comparison), and both correctly triggered the puzzle to reshuffle and slide tiles into the empty space
- js1024.fun's own archived 2022 results are unambiguous: HTML-category winner with a perfect 100/100 score, for a complete camera-capture sliding puzzle that fits under 1024 bytes total
- The "solve a puzzle of your own live face" idea is a small but genuine twist that a static stock-photo sliding puzzle couldn't offer, and it's the kind of thing a size-limited jam format specifically rewards inventing
Biggest weaknesses
- The standard test harness used for every other game this cycle has no camera device, and this game correctly refuses to start without one, showing "Loading camera..." forever; testing it properly required writing a one-off script with Chromium's fake-camera flags, which won't be available to an ordinary visitor if the game is embedded somewhere that doesn't grant real camera access
- The developer's own README documents two known bugs: rotating the device mid-game can leave grey bars in the video feed that only a full page refresh fixes (which also resets your tile positions), and the video isn't centred in its frame, so the picture may need an extra tilt on both mobile and desktop to line up
- There is no progression, no levels, and — beyond re-shuffling your own face — very little reason to return once the one trick has been seen; this is a demo of a clever idea more than a game with content
Who it's for: Anyone who wants a thirty-second novelty rather than a game with real staying power, and developers curious what fits in a kilobyte
Our recommendation: Worth trying once for the neat trick it is; don't expect a reason to come back
7 / 10
Mirror Puzzle answers a question nobody else in a 1-kilobyte coding competition seems to have asked: what if the classic 8-puzzle used your own face, live, instead of a stock photo of a kitten? The entire thing — camera capture, a 3x3 tile grid, shuffle logic, click-to-slide movement, and (per the source) a win-detection message — fits in under 1024 bytes of HTML, and js1024.fun's own archived 2022 results confirm it as that year's HTML-category winner with a perfect 100/100 score.
A review that had to build its own test rig
This is worth explaining plainly, because it's the most important thing this review learned. Every other game tested this cycle could be checked with this shelf's standard phone-and-desktop testing setup. Mirror Puzzle can't, because it needs a real camera, and the standard setup — like most automated testing environments — doesn't have one. The very first test attempt confirmed this exactly as expected: the game threw a "Requested device not found" error and sat on "Loading camera..." indefinitely, never reaching a testable state.
Rather than leave that as an inconclusive shrug, this review built a small standalone test script using Chromium's fake-camera flags (a standard technique for testing camera-dependent web apps), which makes the browser present a synthetic looping video pattern as if a webcam were attached. With that in place, the game came alive immediately, and its controls could be tested properly — not by eye, but by comparing the actual DOM state of the puzzle tiles before and after each input. A real touchscreen tap on the shuffle button rearranged the tiles, confirmed at the DOM level. A real touchscreen tap on a tile positioned next to the empty grid space correctly slid it into place, also confirmed at the DOM level, and the same held true for a real mouse click on the desktop profile. Both control schemes work exactly as the classic 8-puzzle format requires.
That success comes with an important caveat for anyone hosting this rather than just reviewing it: the reason testing needed a workaround is that camera access has to be explicitly granted to a page (or, if embedded, to the specific iframe showing it) before getUserMedia will return anything at all. A page or embed that doesn't grant that access will show real visitors exactly the same "Loading camera..." freeze this review's first, unmodified attempt hit — not a bug in the game, but a real deployment requirement it can't function without.
A clever trick, honestly limited in scope
Reading the developer's own README turns up two specific, candidly documented issues: rotating the device mid-puzzle can leave grey bars in the captured video that only a full refresh clears (and that refresh also resets the board), and the video feed isn't centred in its frame, which can mean tilting a phone or leaning toward a webcam slightly to get your face fully in shot. Both are believable trade-offs for something built under a 1-kilobyte size ceiling, and neither prevented the puzzle from working correctly once a camera feed was present.
What's harder to get past is how little there is here once the initial "oh, that's clever" reaction passes. There's one puzzle type, no levels, no difficulty progression, and nothing to come back for beyond shuffling your own face again. That's a completely reasonable scope for a 1024-byte competition entry judged on technical achievement, but it means this plays more like a neat demo than something with staying power as a game.
Final verdict
Mirror Puzzle is a genuine technical achievement — a complete, working, camera-driven puzzle in under a kilobyte, with a perfect competition score to back that up — and its touch and mouse controls check out cleanly once you can actually get a camera feed into it. The score here reflects that real, confirmed functionality balanced against very thin lasting content and a privacy consideration (a live camera feed) that some players will reasonably want to opt out of even for thirty seconds of novelty.
Pros and cons
Pros
- Genuinely verified rather than assumed: shuffling and tile-sliding were tested with a real touchscreen tap and a real mouse click against the actual DOM state (not just a screenshot comparison), and both correctly triggered the puzzle to reshuffle and slide tiles into the empty space
- js1024.fun's own archived 2022 results are unambiguous: HTML-category winner with a perfect 100/100 score, for a complete camera-capture sliding puzzle that fits under 1024 bytes total
- The "solve a puzzle of your own live face" idea is a small but genuine twist that a static stock-photo sliding puzzle couldn't offer, and it's the kind of thing a size-limited jam format specifically rewards inventing
- Fully open source under a permissive MIT licence, with the author's own README candidly listing known limitations rather than hiding them
- Loads instantly and ran without a single console or page error across every test performed, once a camera feed was actually present for it to use
Cons
- The standard test harness used for every other game this cycle has no camera device, and this game correctly refuses to start without one, showing "Loading camera..." forever; testing it properly required writing a one-off script with Chromium's fake-camera flags, which won't be available to an ordinary visitor if the game is embedded somewhere that doesn't grant real camera access
- The developer's own README documents two known bugs: rotating the device mid-game can leave grey bars in the video feed that only a full page refresh fixes (which also resets your tile positions), and the video isn't centred in its frame, so the picture may need an extra tilt on both mobile and desktop to line up
- There is no progression, no levels, and — beyond re-shuffling your own face — very little reason to return once the one trick has been seen; this is a demo of a clever idea more than a game with content
- A live camera feed is a real privacy consideration for some players regardless of how the footage is used, and the game offers no way to play with a static image instead