← Back to DevTalk

First Steps With Provincia

April 28, 2026Provincia Dev Team

#architecture#simulation#grid

We started Provincia with a boring decision: everything lives on a fixed grid.

Not because grids are romantic. Because the moment you let players paint freeform shapes, you need a second hidden model for simulation anyway — occupancy, paths, water cells, haul routes. We wanted one model. The renderer, the placement tools, and the water sim all read the same Vector2i coordinates on a 200×200 map with 1 m terrace steps.

Early colony layout from the dev build

The grant in our dev save: curia, starter housing, ponds along low ground, work sites creeping outward.

Why Roman, why colony

The fantasy is small and specific. You are the curator of a colonia at the edge of the province — a strip of granted land with a hall, eight beds, ponds that were already wet when you arrived, and families waiting for orders. More people show up from the road when word spreads. Rome gave you the outline. You fill it in.

That tone pushed us toward systemic city-building (think logistics-heavy builders) in a Roman skin, not a strategy map with abstract provinces.

Grid occupancy before polish

GridOccupancy tracks more than “is there a building here”. We keep separate layers for occupied cells, paths, sewage underlays, and construction reserves. When a footprint lands, we batch cells_changed so water, housing checks, and visuals do not each scan the full map.

Buildings themselves are rows in data/buildings.csv — display name, footprint profile, costs, worker slots, scene path. Adding a hut means adding a row, not another elif chain in the placer. Custom L-shapes and aqueduct inlets go in building_footprints.csv with per-cell offsets.

ColonyServices instead of scavenger hunts

Early on, every system reached into main with get_node and has_method. That broke the moment we added a second playthrough mode. ColonyServices is a small locator: ask for the water sim, haul board, or footprint view by name. Tutorial and dev colony share the same wiring.

Housing you can see grow

Roman housing is not one mesh swap. Stages upgrade in place — rough timber, better walls, stone — and the district solver has to respect door paths and terrace height while packing clusters.

Stage 1 housing

Stage 3 housing

Stage 4 housing

We are still pre-alpha. Visuals will move. The grid will not — every interesting system we have added (water CA, sewage underlays, aqueduct permeability) assumed it from day one.

Next up: making water behave like water, not like blue paint.

Provincia

Provincia is in active pre-alpha. Core placement, water, housing layout, colonist logistics, and battles are playable in the Godot build. Download a build below — expect bugs. No Steam page yet.

Status

  • Pre-alpha — free download
  • Steam — coming later
© 2026 Provincia