Building an Idle City on Water: The Systems Behind AquiTect

Every building in AquiTect sits on a tile that used to be ocean. That’s the whole premise — you’re not filling in empty land, you’re claiming it, tile by tile, from water that’s still there underneath you, still rising and falling with the tide. It sounds like a small detail. It ends up touching almost every system in the game.

I want to walk through how the city actually runs under the hood — not the pitch, the architecture.

The loop, in one screenshot

Open the game at any point and you’ll see something like this: a Small House sitting at Tier 1, a 15% bonus glowing green above its roof, gold ticking up in the corner at just under 88 gold a second, population climbing. That green 15% isn’t decoration — it’s an adjacency bonus, recalculated live, and it’s the clearest window into how the whole economy actually works.

Every building has a base gold-per-second value. Every building also checks its cardinal neighbors — north, south, east, west — for bonus-granting structures nearby, and stacks whatever it finds: gold percentage, power efficiency, pollution reduction. Place a Farm next to a Farm Park and both light up. Move a building, and every neighbor recalculates. It’s a small rule, but it’s the reason city layout in AquiTect is a real decision and not just a checklist of “place everything you can afford.”

One manager, one job

The whole simulation runs on singleton managers, each one responsible for exactly one slice of the world: resources, grid state, adjacency, ambient life, quests, prestige, combat. Buildings don’t reach across the codebase to talk to each other directly — they report state changes, and the relevant manager reacts.

ResourceManager is the one everything else eventually feeds into. It doesn’t recalculate the entire city’s income every tick — that would get expensive fast once you’ve got dozens of buildings on the board. Instead it runs a dirty-flag pass: only buildings that changed since the last tick get recomputed, and everything else just contributes its cached value. Gold per second, population, power draw, happiness, pollution, research — seven resource types, one source of truth, updated incrementally instead of brute-force.

GridManager is the biggest file in the project by a wide margin, and it’s doing the most visibly interactive job: tracking a ghost building as it follows your cursor, validating tile availability and power capacity and cost before you’re allowed to place anything, then handing off to every other system once placement is confirmed. One click on a building icon in that bottom toolbar kicks off a chain — spend resources, instantiate the prefab, mark tiles occupied, recalculate every adjacency bonus in range, register the new building with the resource, traffic, and aura systems, and only then fire the event that lets quests and pirates react to what you just built.

Buildings that grow instead of getting replaced

A building in AquiTect can level up to 500 times. The gold-per-second curve isn’t linear — early levels scale at one rate, later levels at a slower one, so the payoff curve bends the way idle-game economies need to bend to stay interesting past the first hour. Along the way, buildings get visual milestones: model swaps at level thresholds, so a Small House at level 100 doesn’t look like the Small House you placed. Demolish a building and you get 75% of everything you sank into it back — enough to make redesigning your layout a real option, not a punishment.

Buildings also radiate. Every one of them implements an aura interface — happiness, efficiency, pollution — that spreads outward by distance and gets aggregated per tile. Pirates use the same interface to project a negative aura onto the coastline they’re blockading. It’s the same system doing double duty as both a city-building mechanic and a combat mechanic, which is the kind of reuse that only shows up in hindsight, after you’ve already built the thing twice separately and then realized you didn’t need to.

The water isn’t just scenery

Tides move on a real cycle — DOTween-animated, low to high and back — and they’re not cosmetic. When the tide comes in, low tiles flood, citizens panic and take shelter, vehicle traffic reroutes, and if the city crosses a threshold, you switch from a police truck and boat to a submarine to get around at all. Four vehicles, four controllers, and a camera manager built on Cinemachine that blends between god-view and whichever vehicle you’ve dropped into — helicopter, boat, truck, submarine — depending on what the map and the tide are currently allowing.

Two threats, two counters

Pirates blockade coastal buildings and drop a −50% efficiency, −5 happiness aura on everything nearby until you chase them off with the boat’s water cannon. Robbers target commercial buildings and drain gold until you ram them three times with the police truck to make an arrest. Both run as small state machines — approach, engage, flee for pirates; travel, rob, flee, stun, arrest for robbers — and both exist for the same reason: an idle economy with no friction stops being a game. The threats are the only thing forcing you to leave the build menu and actually drive somewhere.

Prestige and starting over on purpose

Eventually you hit a wall where the smart move is to reset. Prestige tears the city down — cinematic fade, destroy everything, rebuild from an empty grid — and hands you a permanent multiplier in exchange: +100% gold or +100% happiness, depending on what you pick. It’s the mechanic that turns “I’ve maxed this out” into “I get to do it again, faster,” which is the whole point of the genre.

Save/load has to account for all of it. A save captures every manager’s state plus every building instance on the board, and loading has to rebuild the world in the right order — terrain, then tiles, then buildings, then a full bonus recalculation, then a NavMesh bake, then offline earnings capped at an hour so stepping away doesn’t turn into a stat-padding exploit.

What’s actually running underneath

Roughly 83 C# scripts, organized flat rather than nested — managers, UI, buildings, grid, player, combat, and a handful of smaller supporting folders. Cinemachine handles cameras, DOTween handles nearly every animation in the game, NavMeshAgent drives pathfinding for both vehicles and robbers, and Stylized Water 3 does the actual ocean rendering and wave-height queries the tide system leans on.

None of it is exotic. It’s a lot of small, single-purpose systems that report state instead of commanding each other, which is the same pattern that keeps showing up whenever a simulation needs to stay legible as it grows. The interesting part was never any one manager — it was making sure the boundary between “this is a city-building game” and “this is a combat game” and “this is a tide simulation” stayed thin enough that they could all lean on the same aura and event systems without turning into three separate games glued together.

Share: LinkedIn

Leave a Comment

Your email address will not be published. Required fields are marked *