Game review

Dwarfs: There and Back Again

7 / 10

Developer
Mark Vasilkov, with additional development credited in-game to yutyo
Publisher
Mark Vasilkov
Released
1 January 2019
Platforms
Web browser (desktop and mobile)
Genre
Incremental / Idle
Monetisation
Free, open source, no ads and no in-game purchases
Players
Single-player only

The short version

Dwarfs: There and Back Again looks, for its first sixty seconds, like every other "click a button, watch a number go up" idle clicker on the web. It doesn't stay that way. Draft dwarfs, send them into the Black Forest for gold, and the tech tree you're buying through eventually detonates the game's own premise — a keg party escalates into an orbital strike that torches the forest into a wasteland, and the ending loops you back to the start with a Tolkien-referencing wink. It's a genuinely well-told thirteen-kilobyte story, and js13k's own judges ranked it 8th out of 200 entries the year it shipped. The one real cost of that ambition is a viewport meta tag that never got a mobile pass: on a phone the whole game renders at roughly 40% scale, so text and the smaller upgrade buttons arrive uncomfortably small until you think to pinch-zoom in.

Biggest strengths

  • The tech tree isn't just bigger numbers — each purchase visibly changes the forest's palette and layout (lit forest, ale-soaked celebration, scorched wasteland, a literal portal), which is more art direction than most jam clickers bother with
  • The story escalates from "harmless clicker" to "orbital strike that ends the world you were building" without a single line of dialogue forcing the tone, and reading the source confirms it's a real scripted sequence (`btn-orbital` to `btn-continue2` to a hard wasteland palette swap), not a random event
  • js13kgames.com's own competition results rank it 8th out of 200 entries in 2019, and the one public judge comment singles out the music and the "excellent phone idle game" feel once automation unlocks — both of which hold up on replay

Biggest weaknesses

  • "The page ships `<meta name=\"viewport\" content=\"width=990\">` with no `initial-scale`, so every phone browser auto-zooms the entire 990px-wide layout down to fit — on a 390-wide phone that's roughly 40% scale, making the smaller upgrade buttons a genuinely fiddly tap target until the player thinks to pinch-zoom in, which nothing in the game suggests doing"
  • A leftover title-screen menu ("About", "Quit") is commented out of the shipped HTML but the script still tries to attach click handlers to it on every load, throwing an uncaught error in the console on the very first frame; harmless to play, but not a clean bill of health
  • The in-game "About" text claims a GPLv3 licence while the repository's actual LICENSE file (and GitHub's own detection) says MIT — the file governs what's hosted here, but it's a real inconsistency a reader deserves to know about

Who it's for: Idle-game fans who want a short, authored arc rather than an infinite number-go-up treadmill, and anyone curious what a 10KB jam entry can do with a joke premise

Our recommendation: Worth the twenty-minute run on desktop; on a phone, pinch-zoom in once you load it and the rest works fine

7 / 10

Every idle game starts the same way: one button, one resource, one number that goes up. Dwarfs: There and Back Again opens exactly like that — "We have 1 dwarf," a single "Send on Adventure" link, a tiny pixel dwarf standing in a tiny pixel fortress — and gives no early sign that it's going to end somewhere else entirely. Mark Vasilkov built it for js13k 2019 in just over 10 kilobytes, and that year's judges placed it 8th out of 200 entries, which is a real, verifiable result rather than a claim to take on faith.

A tech tree that tells a story instead of just multiplying a number

The core loop is standard-issue incremental design: click Adventure, a dwarf walks into the Black Forest, gold comes back, spend the gold on upgrades that make dwarfs faster or let you draft more of them. What's unusual is what the upgrades actually do to the game world. Reading the source confirms this isn't decoration bolted onto a spreadsheet — "Illuminate The Forest" swaps in a lit-forest sprite sheet and speeds up pathing, and ten seconds after the celebratory "Hot Coffee" and "Red Goes Fasta!" purchases stack up, the dwarfs throw a keg party that the game frames as the beginning of the end: a modal interrupts play, the forest's palette swaps to a scorched wasteland, and an "orbital strike" (the button is literally labelled "Make DwarfsWork Again") burns down everything you were building. The wasteland arc that follows — rebuilding with a new, grimmer tech tree, eventually reaching a time-portal and a "Go Back in Time" ending that resets the page — reads like a compact, sincere little fable about escalation and consequences, wrapped in a joke about mobile-game ad copy. It's genuinely more narrative ambition than the vast majority of idle clickers attempt, jam-sized or otherwise.

Controls work, but the game was never resized for the phone it's proud of supporting

Every action in Dwarfs is a single tap or click on a button — no drag, no hold, no gesture more complex than that. Testing this with a real emulated touchscreen confirms it works exactly as intended: a genuine tap on the "Draft Another Dwarf" button spent exactly one unit of gold and added exactly one dwarf, with no double-firing despite the page's own script manually re-invoking target.click() on every touchend (a workaround, it appears, for double-tap-to-zoom rather than a tap-speed hack, and it didn't misfire once in testing).

The problem is what the player has to tap on a phone in the first place. The page declares <meta name="viewport" content="width=990"> and nothing else — no initial-scale, so every mobile browser does exactly what that tag asks and renders the entire 990-pixel-wide desktop layout, shrunk to fit. On a 390-CSS-pixel phone that works out to roughly 40% scale: readable text becomes genuinely small, and the "Send on Adventure" button — one of the larger touch targets in the game — renders at well under half its designed size. Later in the tech tree, when several similarly-sized upgrade buttons are visible in the same column at once, that shrinkage turns tapping the right one into something that wants a deliberate pinch-zoom first. Nothing in the game hints that zooming in is an option, even though the page permits it (there's no user-scalable=no lock), so a phone player who doesn't already know that trick is stuck squinting rather than blocked outright. It's a real, avoidable rough edge on a shelf whose entire premise is phone playability, not a broken control scheme — but it's the difference between "works on a phone" and "was actually built for one."

Presentation, and two small honesty notes

The pixel art is confident for a project this size — a custom bitmap font, hand-tuned palettes per zone, and canvas-drawn sprites that recolour cleanly across the fortress, forest, treasure room and eventual wasteland. The music, praised by name in the game's own (single, but detailed) js13k community comment, is a genuine highlight rather than jam-entry filler.

Two things are worth flagging plainly rather than glossing over. First, the shipped page still tries to wire up an "About" and "Quit" button from an earlier title-menu design that's now commented out of the HTML; the resulting getElementById(...).addEventListener call on a null element throws on every single page load. It doesn't affect play — the dead code sits after everything that matters has already initialised — but it's an uncaught error on the very first frame, which isn't nothing. Second, the game's own in-game "About" alert describes the licence as GPLv3, while the repository's actual LICENSE file — the thing that legally governs what's hosted here, and what GitHub's own licence detector independently confirms — is plain MIT. We're publishing under MIT because that's what the licence file actually grants, but a reader deserves to know the game's own text disagrees with its own repository.

Final verdict

This is a jam entry that used its budget on the right things: a tech tree that changes what you're looking at rather than just what number you're staring at, and an ending that actually commits to an idea instead of fading out. The js13k 2019 judges' 8th-place finish out of 200 entries isn't a fluke — the writing, the music and the palette work all earn it. What keeps this at a 7.0 rather than higher is squarely the phone experience this shelf is built to test: the controls themselves never fail, but the viewport never got resized for the screen it's being played on here, and a first-time phone visitor has no way to know that pinching the screen fixes it. Play it on desktop if you can, and don't be afraid to zoom in if you play it on a phone.

Pros and cons

Pros

  • The tech tree isn't just bigger numbers — each purchase visibly changes the forest's palette and layout (lit forest, ale-soaked celebration, scorched wasteland, a literal portal), which is more art direction than most jam clickers bother with
  • The story escalates from "harmless clicker" to "orbital strike that ends the world you were building" without a single line of dialogue forcing the tone, and reading the source confirms it's a real scripted sequence (`btn-orbital` to `btn-continue2` to a hard wasteland palette swap), not a random event
  • js13kgames.com's own competition results rank it 8th out of 200 entries in 2019, and the one public judge comment singles out the music and the "excellent phone idle game" feel once automation unlocks — both of which hold up on replay
  • Fully open source under MIT, confirmed against the actual licence file (not just the repo's GitHub-reported tag), no build step needed to host, and no analytics of any kind
  • Every interactive element is a single tap or click with no drag or multi-touch requirement, and a real touchscreen tap in testing reliably drafted exactly one dwarf per tap with no double-fire, despite the page's own script manually re-invoking `.click()` on every touchend

Cons

  • "The page ships `<meta name=\"viewport\" content=\"width=990\">` with no `initial-scale`, so every phone browser auto-zooms the entire 990px-wide layout down to fit — on a 390-wide phone that's roughly 40% scale, making the smaller upgrade buttons a genuinely fiddly tap target until the player thinks to pinch-zoom in, which nothing in the game suggests doing"
  • A leftover title-screen menu ("About", "Quit") is commented out of the shipped HTML but the script still tries to attach click handlers to it on every load, throwing an uncaught error in the console on the very first frame; harmless to play, but not a clean bill of health
  • The in-game "About" text claims a GPLv3 licence while the repository's actual LICENSE file (and GitHub's own detection) says MIT — the file governs what's hosted here, but it's a real inconsistency a reader deserves to know about
  • It's a short, single authored arc rather than an open-ended idle game; once you've seen the ending there isn't a deeper number-go-up layer underneath to keep grinding

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.5 / 10
  • Visuals 7.5 / 10
  • Performance 8 / 10
  • Value 8.5 / 10
  • Originality 7.5 / 10
  • Replayability 6 / 10
  • Interface 6.5 / 10