What it does
The settlement sits on the jobs pack's work yard, whose workers fetch, make and haul. Here those workers are
villagers with three needs. Hunger rises, and at a threshold a villager eats from the storehouse. In a cold season
every occupied house burns fuel at intervals, and a villager without a warm home grows colder. Fatigue rises at work
and falls at rest, and a worn-out villager stands down until rested. Kept at the limit of hunger or cold for too long,
a villager leaves, and the event says why.
Growth and the calendar make it a game. A house stands once its store holds the materials, villagers keep their beds and the homeless take free ones, and while a bed is free and there is food to spare, a newcomer arrives. Seasons set the cold and can close jobs, so the fields lie fallow in winter and the storehouse must carry the village through. At the end of the last season the year is won with the goal's villagers, and any stock asked for; it is lost earlier if everyone leaves.
planVillage lays a village out from a seed: a green with a storehouse, a longhouse, house plots, a bakery, a sawmill,
a chopping block, fields and a fishing spot, and across a river with its bridges, the woods and a quarry. Its jobs fell
trees, split firewood, quarry stone, farm wheat, fish, bake bread, saw planks and build houses. A steward can run the
village by itself, wanting food, fuel and houses as the seasons ahead demand, so you have an autopilot for an attract
mode and a yardstick for balancing.
Features
- Three needs — hunger, cold and fatigue from 0 to 100, with every rate and threshold in the definition.
- Houses and warmth — houses built by jobs, beds for their villagers, and fuel burnt through the cold seasons.
- Population — newcomers while beds and food allow, departures for hunger or cold.
- Seasons — each with a length and a cold, and the jobs it closes.
- A year's goal — a population, and optionally stock in the storehouse, at the end of the last season.
- Villages from a seed — size, villagers, house plots, beds per house, river, bridges, seasons, goal and arrivals, with every site reachable.
- Three presets —
hearthguardby its river,frostmerewith one bridge and a long hard winter that closes the fishing too, andmeadowendwith no river and a mild year but more mouths to feed. - A steward —
createStewardsets job priorities through the year on its own and brings each preset through it. - Events and saves —
season,ate,cold-house,built,arrive,leave,won,lostand more, with plain-JSON snapshots of the settlement and its yard.
Good for
- Survival city builders in the style of Banished, where the first winter decides who stays.
- Colony and settler sims where needs and housing drive the economy, in the style of Kingdoms and Castles.
- Winter-survival games with one long, hard season to stock up for.
- Management puzzles with a fixed year and a population target.
- Attract modes and balance tests, with the steward playing a village through its year.
Make it yours
A settlement is its definition: the yard (a jobs yard), the storehouse, the food items in the order they are
eaten, the fuel, the houses with their stores and beds, the item that stands a house, the seasons, and the rates
for hunger, warmth, fatigue, leave and arrivals, with the goal. planVillage writes one for you from
seed, width and height (28 by 16, at least 18 by 12), villagers, plots (up to 9), beds, river, bridges,
seasons, goal, stock and arrivals, and town.priority lets the player steer the work.
Two different uses: the frostmere preset with six villagers, where a long winter closes both the fields and the
fishing and the player must stockpile bread and firewood in time; and a settlement of your own on a yard of your own
design, with a different food chain, a two-season year, no newcomers and a stock goal to meet.
A quick look
A village planned from a preset, a job raised, a villager given a role, and the events read:
const town = game.settlement.create(game.settlement.plan({ ...game.settlement.presets.frostmere, villagers: 6 }));
town.priority('build1', 3);
town.yard.role('v2', 'wood');
town.step(dt);
for (const e of town.drain()) if (e.kind === 'leave') warn(e.villager, e.why); // 'hunger' or 'cold'
Works with
jobs— the work yard underneath, its workers, roles and stores; use it alone for workers without needs.nav— composed first, since thejobsyard needs it.
Good to know
- One storehouse feeds and heats everyone, and villagers do not walk home: a house's warmth is all that matters.
- Houses cannot be lost once built.
- Needs are three numbers each; there is no health, age or happiness.
- It draws nothing, and its event list keeps the latest 512.






