← BACK TO LEVEL SELECT

🎮 Game Dev Origin

EMBERVALE — A Tiny Living Town

A cozy pixel-voxel god-game. Place lots, and the roads find each other, villagers move in, and dusk lights the windows amber. The pleasure is observation, not management.

Overview

EMBERVALE is a cozy, MiniTown-school god-game: you place lots and roads, and a pixel-crisp voxel town quietly comes alive around them. There’s no fail state and nothing to lose — the pleasure is observation. You nudge, then you watch. Day fades to a dusk where every window glows ember-orange, and that mood is the whole point.

It runs entirely in the browser — vanilla JS ES modules, no build step, no dependencies, no external art. Every voxel is drawn to a logical 640×400 offscreen canvas and blitted at integer scale with smoothing off, so the pixels stay chunky and crisp.

How it works

You place a lot; the road network solves itself to reach it; the sim ticks forward and villagers, props, and light respond. Because there’s no resource pressure or timer, the loop is a gentle one — place a thing, watch the town absorb it, place the next thing when you feel like it.

Architecture

flowchart LR
    PLACE["Player places<br/>lot / road"]
    ROADS["Road solver<br/>tiles auto-connect"]
    SIM["Sim tick<br/>villagers · props · day↔dusk"]
    subgraph R["Render pipeline"]
        OFF["640×400 offscreen<br/>2:1 iso, seeded props"]
        BLIT["Integer blit<br/>imageSmoothing = off"]
    end
    OBS["You watch"]
    PLACE --> ROADS --> SIM --> OFF --> BLIT --> OBS --> PLACE

What makes it interesting

  • Roads that find each other — you place lots, not paths; the network solves connectivity so the town always reads as coherent.
  • Dusk is the identity — a day/night cycle repaints the palette from soft sage-green to ember-orange windows and warm streetlamps.
  • Pixel-crisp voxels, zero assets — everything is canvas-drawn to a fixed logical resolution and integer-scaled, so it stays sharp at any size.
  • No fail state — a watch-don’t-manage loop; the reward is the town breathing, not a score.

Highlights

  • Vanilla JS ES modules — no build, no CDN, no dependencies, no external assets
  • Logical 640×400 render target, 2:1 isometric, seeded outskirt props for a hand-placed feel
  • Self-solving road network and a tick-driven sim you shape by placement alone