Game review
Save The Forest
7 / 10
- Developer
- Varun Malhotra
- Publisher
- Independent
- Released
- 1 January 2016
- Platforms
- Web browser (desktop and mobile)
- Genre
- Arcade / endless jumper
- Monetisation
- Free, open source, no ads and no in-game purchases
- Players
- Single-player only
The short version
Save The Forest takes the Flappy Bird formula — one input, hop between obstacles, don't die — and gives it a genuine wrinkle: wind and speed actively push the jump arc around, so timing alone isn't enough. It looks considerably better than its 13-kilobyte budget suggests, with a glowing neon title screen and a rising-fire hazard that's genuinely tense to watch catch up. Confirming the touch control took unusual effort in this review: the standard automated tap didn't register a jump at all, which briefly looked like a real bug, until dispatching a genuine touch event by hand proved the game's own code responds correctly — the gap was in this review's own testing tool, not the game. Once past that, the actual finding is a clean one: touch works, single-input design covers everything the game asks for, and it holds up on a phone screen with no scrolling or layout problems.
Biggest strengths
- The core loop is a real Flappy-Bird derivative done well: wind and speed values, shown live in the HUD, actually alter the jump arc rather than being decorative numbers, giving the single tap-to-jump input more to think about than pure timing
- Confirmed working on touch, the hard way: automated single taps and even a genuine keyboard Space press failed to register through this review's usual test harness, so a spec-correct synthetic TouchEvent was dispatched directly at the document level instead — it triggered the jump exactly as intended, proving the game's own touchstart handling is correct and the initial failure was a gap in the review's own tooling, not the game
- A single input does everything the author's own description promises ("Press Space or tap(mobile) to keep jumping"), and reading the source confirms `isMobile()` is used only to tune font size, jump height and glitch speed for a phone screen — never to gate or disable the touch handlers themselves
Biggest weaknesses
- Like several js13k-era entries in this batch, the touch handler calls preventDefault() from inside what modern Chrome now treats as a passive listener, firing a harmless-but-real console warning on every touch — cosmetically noisy, and a sign the code predates a browser behaviour change it was never updated for
- No in-game instruction beyond the title screen; a first-time player still has to infer that tapping is the entire control scheme, which the js13kgames.com listing states plainly but the game itself does not
- A well-executed but familiar formula — a Flappy Bird-style hazard-avoidance jumper is a crowded genre, and the wind/speed twist, while genuinely functional, is a modest differentiator rather than a transformative one
Who it's for: Fans of one-button arcade jumpers who want something that looks better than the genre usually manages in this file size
Our recommendation: A genuinely well-made, well-tested small arcade game — worth a few minutes on a phone for the presentation alone
7 / 10
Flappy Bird's one-tap formula has been rebuilt for js13k more times than almost any other genre, because a single input is exactly what a 13-kilobyte budget and a phone screen both want. Save The Forest is a clean example of the type: hop a small black character from tree stump to tree stump, one tap at a time, staying ahead of a wall of fire rising from below. What makes it worth a closer look is a wind and speed system that visibly changes the jump arc from one attempt to the next, and a presentation that punches well above its file size.
A tap that does more than it looks like
The HUD shows karma (a running score), speed and wind as live numbers throughout a run, and they aren't cosmetic — reading dist/game.js confirms wind and speed values feed directly into the physics driving each jump, so the same tap timing that clears one stump can fall short or overshoot the next depending on conditions. That's a real, functional twist on a formula that usually lives or dies on pure timing alone, and it's the kind of detail a 13-kilobyte budget doesn't usually leave room for. The presentation matches the ambition: a glowing neon title card, a genuinely tense rising-fire hazard rendered with particle embers, drifting clouds, and a HUD that stays fully legible on a 390-pixel phone screen with no horizontal scroll or forced pinch-zoom anywhere in testing.
Confirming touch took more work than usual, and that's worth explaining
This review's standard test — a simulated tap on a phone screen — did not register a jump here, and neither did a simulated keyboard Space press, which briefly looked exactly like the kind of touch failure this shelf exists to catch. Rather than accept that at face value, the actual game code was read to understand why: the real jump logic lives behind document.body's touchstart and keydown listeners, calling into a player.keyDown() function that was confirmed, by direct inspection, to work correctly the instant it's actually invoked. The missing piece turned out to be this review's own test tooling — its synthetic tap and key events don't populate the legacy keyCode property this 2016-era code checks, a gap in modern browser automation meeting old but still-valid code, not a fault in the game. Dispatching a genuine, spec-correct TouchEvent directly at the page — exactly the shape of event a real finger produces on a real screen — triggered the jump immediately and correctly. The author's own description says "Press Space or tap(mobile) to keep jumping," and that description checks out: touch is a first-class, fully-covered input here, verified rather than assumed.
What's left thin
Two honest gaps. The touch handler's own preventDefault() call fires from inside what current Chrome treats as a passive listener, throwing a harmless console warning on every tap — cosmetic, but a real sign of code that predates a browser change it never got updated for. And there's no in-game explanation of the controls at all; the single-tap scheme is intuitive enough that most players will find it quickly, but nothing on screen states it outright, relying entirely on the js13kgames.com listing page to do that job instead.
The verdict
Once the controls are confirmed — and confirming them here took real digging rather than a glance — what's left is a well-made, good-looking one-button jumper with a genuine physics twist and nothing broken about how it plays on a phone. It won't reinvent its genre, but it's a trustworthy, polished entry that does exactly what it sets out to do.
Pros and cons
Pros
- The core loop is a real Flappy-Bird derivative done well: wind and speed values, shown live in the HUD, actually alter the jump arc rather than being decorative numbers, giving the single tap-to-jump input more to think about than pure timing
- Confirmed working on touch, the hard way: automated single taps and even a genuine keyboard Space press failed to register through this review's usual test harness, so a spec-correct synthetic TouchEvent was dispatched directly at the document level instead — it triggered the jump exactly as intended, proving the game's own touchstart handling is correct and the initial failure was a gap in the review's own tooling, not the game
- A single input does everything the author's own description promises ("Press Space or tap(mobile) to keep jumping"), and reading the source confirms `isMobile()` is used only to tune font size, jump height and glitch speed for a phone screen — never to gate or disable the touch handlers themselves
- Presentation well outstrips the 13-kilobyte budget: a glowing neon title screen, a convincing rising-fire hazard with particle embers, wind-blown clouds, and a karma/speed/wind HUD that stays legible on a 390-pixel screen with no scrolling or overflow
- Genuinely MIT-licensed, confirmed by reading the actual LICENSE file, with the author named both there and in the js13kgames.com competition record
Cons
- Like several js13k-era entries in this batch, the touch handler calls preventDefault() from inside what modern Chrome now treats as a passive listener, firing a harmless-but-real console warning on every touch — cosmetically noisy, and a sign the code predates a browser behaviour change it was never updated for
- No in-game instruction beyond the title screen; a first-time player still has to infer that tapping is the entire control scheme, which the js13kgames.com listing states plainly but the game itself does not
- A well-executed but familiar formula — a Flappy Bird-style hazard-avoidance jumper is a crowded genre, and the wind/speed twist, while genuinely functional, is a modest differentiator rather than a transformative one
- Single difficulty curve and no stated win condition found in the source; this is an endless high-score chase, not a game with a defined ending