Game review

Tile Collector

7 / 10

Developer
Dimitri Masson
Publisher
Dimitri Masson (open source)
Released
1 January 2025
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

Tile Collector's one idea is a good one: instead of separate controls for placing a tile and choosing its colour, a single drag does both — where you release relative to the cell's centre picks the colour, and releasing at all places the tile. It's a genuinely inventive piece of interaction design for a 48-hour jam game, and it survives contact with a touchscreen: a real drag gesture, tested through actual touch events rather than a simple tap, correctly placed and coloured a tile and advanced the tutorial. The build around that idea is rougher. Reading the source turned up a set of hardcoded private API keys for the developer's online leaderboard, which this copy disables rather than silently exposes to every visitor, and testing surfaced five distinct non-blocking JavaScript errors that are present on the developer's own official build too, not introduced by hosting it here. None of them stopped a level from being played, but they're a fair reflection of a jam game that hasn't had much chance to be hardened since the deadline.

Biggest strengths

  • A real, tested design idea rather than a reskin — one drag gesture both places a tile and sets its colour by direction, confirmed working through an actual touch drag on a simulated phone that correctly completed a tutorial step
  • Genuine content breadth for a jam entry: seven tutorial levels, three daily-challenge modes (1D and two 2D variants), and a configurable sandbox mode
  • MIT-licensed with a real LICENSE file, and the install scan found no analytics or hidden tracking beyond the leaderboard issue addressed below

Biggest weaknesses

  • The source hardcoded three private Dreamlo leaderboard write-keys directly in client-side JavaScript — anyone viewing this game's page source could extract them and submit or spam scores to the developer's own leaderboard using credentials never meant to be public; disabled on this copy rather than exposed to a wider audience
  • Five distinct non-blocking JavaScript errors surfaced during testing (a p5.sound version mismatch, an undefined `colorPalettes` reference, a null `onclick` assignment, a failed `removeChild`, and an undefined value passed to `.split()`) — confirmed present on the developer's own official build too, so nothing introduced by this hosting, but a real reflection of the game's post-jam polish level
  • The place-and-colour-by-drag-direction mechanic, while genuinely inventive, isn't the most discoverable control scheme on a first attempt; it depends on the in-game tutorial actually being read rather than being learnable by touch alone

Who it's for: Puzzle players who want something with a genuinely different control idea, and who don't mind a few rough edges under the hood

Our recommendation: Worth a look for the core mechanic alone — a clever idea, imperfectly finished

7 / 10

Most tile-placement puzzles split the work into two separate actions: pick a piece, then place it. Tile Collector, built for Ludum Dare 58, collapses that into one motion — press on an empty cell and drag outward, and the direction you release in selects the tile's colour from a small radial palette while the release itself commits the placement. It's a small piece of interaction design, but it's a genuinely considered one, and reading cell.js confirms it's deliberate: the colour is computed from the angle between the press point and the cell's centre, not bolted on as an afterthought.

A drag, not a tap, and it works

This shelf tests touch by driving it, not by reading a touchstart listener and assuming the best, and that mattered here: a plain tap on the target cell did nothing observable in testing, because the mechanic isn't a tap at all — it's a drag. Once that became clear, a genuine touch-and-drag gesture, dispatched through real touch events on a simulated 390×844 phone, correctly placed a tile, coloured it, and triggered the tutorial's "Great! You placed your first tile!" confirmation. A mouse-driven click-and-drag on desktop produced the same result. The underlying input code in game.js routes mouse and touch through the same mousePressed / mouseReleased callbacks p5.js provides, so this isn't two implementations that happen to agree — it's one implementation used by both.

What needed fixing, and what didn't

One issue needed a real fix rather than a note: src/highscore.js hardcoded three private Dreamlo API keys — the write credentials for the developer's own online leaderboards — directly into client-side JavaScript shipped to every visitor. Anyone who opened the browser's developer tools on this page could have extracted those keys and used them to submit or corrupt the developer's leaderboard from anywhere, using credentials that were never meant to leave their own build. That functionality is disabled on this copy; the tutorial, daily challenges, and sandbox mode don't depend on it to work.

Several other issues turned up during testing and needed recording rather than fixing: a p5.prototype.registerMethod is not a function error from what looks like a p5.sound version mismatch, an undefined colorPalettes reference, a null-element onclick assignment, a failed removeChild call when closing the tutorial dialog, and an undefined value reaching .split() somewhere in the leaderboard display code. All five were confirmed present on the developer's own official GitHub Pages build as well, tested directly rather than assumed, so none of it is a consequence of hosting the game here. None of them prevented a level from loading or a tile from being placed in testing, but five distinct console errors in a small game is a fair signal of how much polish a 48-hour jam entry has had time to receive.

Where that leaves it

A 7.0 sits this right at the line: the core idea is smart, tested, and works properly with a finger, which is exactly what this shelf asks for, but the code around that idea shows real signs of being exactly what it is — a jam game that hasn't been hardened much past its submission deadline. Worth playing for the mechanic; don't expect a fully polished experience around it.

Pros and cons

Pros

  • A real, tested design idea rather than a reskin — one drag gesture both places a tile and sets its colour by direction, confirmed working through an actual touch drag on a simulated phone that correctly completed a tutorial step
  • Genuine content breadth for a jam entry: seven tutorial levels, three daily-challenge modes (1D and two 2D variants), and a configurable sandbox mode
  • MIT-licensed with a real LICENSE file, and the install scan found no analytics or hidden tracking beyond the leaderboard issue addressed below
  • The core p5.js touch/mouse input path is shared code, not a separate mobile-only implementation, so the fundamental interaction is identical across devices by construction

Cons

  • The source hardcoded three private Dreamlo leaderboard write-keys directly in client-side JavaScript — anyone viewing this game's page source could extract them and submit or spam scores to the developer's own leaderboard using credentials never meant to be public; disabled on this copy rather than exposed to a wider audience
  • Five distinct non-blocking JavaScript errors surfaced during testing (a p5.sound version mismatch, an undefined `colorPalettes` reference, a null `onclick` assignment, a failed `removeChild`, and an undefined value passed to `.split()`) — confirmed present on the developer's own official build too, so nothing introduced by this hosting, but a real reflection of the game's post-jam polish level
  • The place-and-colour-by-drag-direction mechanic, while genuinely inventive, isn't the most discoverable control scheme on a first attempt; it depends on the in-game tutorial actually being read rather than being learnable by touch alone
  • Visually utilitarian — the game is embedded in an academic-paper-style Quarto page (complete with a DOI and citation block) rather than presented as a standalone game page, which is an unusual first impression for a puzzle game
  • A Google Fonts request fails to load on every run (unrelated to this hosting — the same failure occurs on the developer's own site); the page falls back to a system font without visibly breaking

Category scores

Category scores are the reviewer's read on each area. They inform the overall score but do not average into it — the number at the top of the page is a judgement, not a calculation.

  • Gameplay 7 / 10
  • Visuals 6 / 10
  • Originality 7.5 / 10
  • Replayability 6.5 / 10