What is Terra Dominus?
“The strong will do what they can, and the weak will suffer what they must.”
Thucydides
THIS GAME IS STILL UNDER DEVELOPMENT.
JOIN THE DISCORD
Terra Dominus is:
- A multiplayer turn-based strategy game
- Up to 256 players in a single map
- Deep strategy with minimal grind
- Just a personal project for fun, free and no plans to monetise

Terra Dominus is a free, browser-based, multiplayer turn-based strategy game which remains under active development.
Inspired by the political, economic and strategic conditions of the bronze age, resources and space are limited; but the potential strategies are unlimited.
Up to 256 players can join a single game, conquer others and extract resources by force, rebel from a kingdom, or wander around the map inhabiting other lands without permission… which may get ugly…
How to get started
For detailed information on game mechanics, visit the player guide.
- Browse the game list to find a map with player slots available
- Select a land to claim as your capital
- Make your decisions – decide what to do with your units, land and resources
- Click “END TURN” to complete your turn. If all players end their turn, all decisions will be processed, the outcomes will be calculated and the next turn will start; otherwise, the same will happen if the time runs out
That’s basically it.
Updates
- Current to do list
Here is a list of things planned to do soon, and a list of other things that are being considered and designed for future updates.
Some of these will be done before the next update on the weekend.
Let me know in Discord if I forgot something that has been requested.
1) Bugs, Fixes, Improvements
User Interface
- Queued attack tooltip
- In land view, show the target unit in the queued attack tooltip instead of repeating land information already visible on-screen.
- Messaging usability improvements
- Default mail/message lists to newest first.
- Add user-selectable sorting options (e.g., newest, oldest, unread first).
- Restore unclaimed land stats access
- Only show trees and farmland stats
- Fix kingdom name/land name/user name issues
- Move button behaviour
- When a unit is carrying too much, grey out the move button instead of making it disappear, and once material is transferred away, ensure the button updates and begins working again so the user doesn’t have to refresh page.
- Join Kingdom confirmation
- Add a confirmation step for vassalage:
- “Join kingdom as vassal — are you sure?”
- Add a confirmation step for vassalage:
Unit Behavior and Rules
- Navy inventory capacity
- Make navy inventory behavior match fishers’ unlimited capacity model.
- Bronze production requests
- Ensure only bronze units request tin.
- Queued movement after split (capacity check bug)
- Fix false over-capacity errors when queuing movement after a future split – validation appears to use current inventory against future post-split capacity.
- defer carry-capacity validation until the relevant turn?
- Fix false over-capacity errors when queuing movement after a future split – validation appears to use current inventory against future post-split capacity.
- Ensure that default units spawn after population completely wiped out
- Envoy population should not grow.
- Envoy XP escape mechanic
- Envoy XP increases dodge/escape chance from attacks.
- Rule: 1 XP = 7% escape chance.
Resource Management and Visibility
- Farmland/Forest card: next-turn tree growth preview
- Add next-turn tree growth info on the Farmland/Forest card:
- e.g. “
Tree growth next turn: XX“
- e.g. “
- Add next-turn tree growth info on the Farmland/Forest card:
- Transfer warning for unclaimed land
- Before confirming resource transfer to unclaimed land, show:
- “The resources cannot be retrieved until a new player claims the land — are you sure?”
- Before confirming resource transfer to unclaimed land, show:
- Kingdom shared resource visibility
- Players should be able to view resource stores in lands owned by members of the same kingdom.
- Resource targets: per-population mode
- Add a checkbox/toggle for target mode:
- Absolute amount (existing behavior)
- Per population (e.g., 2 per pop)
- Add a checkbox/toggle for target mode:
Ranking and Leaderboard
- Gold source constraint for ranking
- When ranking players by gold, count only gold held in their capital/homeland.
- Tie handling
- Players with equal score must share the same rank, not sorting alphabetically
Naval Logistics Movement
- Allow boats to move along land tiles adjacent to water while retaining high/unlimited transport capacity to simulate coastline logistics for large shipments.
2) New Features (will come later)
Combat, Army, and Progression
- Battle simulator shortcut from unit UI
- Add a Simulate Battle button on army units.
- Route to
/battle-simulator/with relevant fields pre-filled.
- Military XP beyond single-skill cap
- After reaching normal XP limit, allow battle wins to continue granting +1 XP per victory up to max skill level (20).
- Follow unit action
- Add a follow behavior for all unit types:
- unit follows another unit to each new land,
- for armies, this is follow (not attack), with potential ambush risk,
- can reduce repetitive manual move queueing for support/productive units.
- Add a follow behavior for all unit types:
Map Generation and Resource Distribution
- Concentrated metal spawn option for new maps
- During map generation, add option to select concentration centers for tin and copper.
- Proposed distribution by rings from focal land:
- center: 100%
- first ring: 75%
- second ring: 25%
- all remaining lands: 10%
- Keep current fully random distribution as alternative mode.
Inactivity and Delegated Control
- Control over inactive players
- If a player is inactive/skipping turns (or opts in), transfer limited control of their lands/units to their lord.
- Exclude:
- military attack actions,
- movement control,
- diplomatic actions.
Notifications and Social Features
- Browser/PWA notifications
- Add browser notifications as an option (instead of or alongside email), including PWA-friendly behavior.
- Game invites
- Add invite flow for other members with in-game notification + email.
- Battle notification email formatting
- Reformat battle notification emails to use structured sections/line breaks instead of a single collapsed paragraph.
- Notification pagination contrast in dark theme
- Fix unreadable active page button styling on notification pagination in dark mode.
- Current issue:
.td-notifications-page-link.td-notifications-page-currentswitches to a white background while text remains white.
- Resource transfer notification persistence + email detail parity
- Resource transfers from other players should appear on the notifications page and remain visible like other notification events.
- Transfer emails should include key fields: land, turn, resource type, amount, source, and target.
- Hide redundant capital navigation link
- Do not show the “Go to capital of kingdom” link when the user is already on that capital page.
- Private games
- Add private game mode where only invited players can join.
Sandbox and Testing Mode
- Per-player sandbox mode
- Each player can create and save sandbox scenarios.
- Initial concept: two factions on 4 hexes, manual turn advancement button, reset button.
Roles and Access Control
- Restricted game creation role
- Introduce a dedicated role required to access the game creation page.
Turn Processing Safety
- Turn lock + refresh
- Before turn processing starts, lock the active user screen for 5 seconds.
- Keep locked until processing completes.
- Then refresh without unintended submits/actions.
3) Early-Stage Concepts (Need Design Before Implementation)
Improve notification page UI
- Page is busy and hard to read, figure out how to improve.
Fast-Game Experience
- Define a feature suite that supports very short turns (e.g., 5-minute turns).
Roads and Automated Trade Corridors
- Explore road systems between cities.
- Potential behavior:
- establish road once,
- enable reduced-action travel,
- allow optional automated trade routes once loaded,
- maintain interruption/raiding possibility when military units of foreign lands are in between trading destinations,
- include maintenance cost model.
Horse Logistics and Mobility
- Horse breeders
- Consume land space.
- Enable 2-tile movement for supported units.
- Revert to single-tile if enemy army blocks intermediary land.
- Horses require food in winter.
- Carts increase inventory capacity.
- 2-cell movement units (horse-enabled)
Kingdom Command Hierarchies (Vassal Tiers)
- Expand kingdom management to multi-tier vassal chains to allow large kingdoms to scale governance through delegation.
- player references to chain-of-command / top sovereign,
- permissions and visibility by level?
Water Unit Capacity Model Evolution
- Compare/choose between two models:
- High-capacity water carry model (e.g., 30 per population) with land-movement restriction when overloaded for land rules.
- Boat size build model where wood investment determines boat size/capacity (and potentially crew/food).
Land Grid Updates
- Map resource heatmap filters
- Add optional map filters for each resource that visualize relative density using a red/green heatmap (green = higher, red = lower).
- Include tree heatmap as a separate filter.
- Keep rainfall heatmap with current rainfall display logic.
- Add icons beside each filter option.
- Per-player mining icons on 10×10 land grid
- Show one icon per player per mined metal type on cleared land.
- Example: two different players mining tin => two tin icons.
- Land info grid layout rework
- Center city with walls, surrounded by farms, then mines, then horses, cleared land, then forest with wild animals for hunting displayed.
Hunter Unit Concept
- Add hunter unit that harvests wild animal stock, with ecology tied to land fertility/forest.
- Initial rules concept:
- wild animals regenerate at similar rate to trees,
- max animal population bounded by tree availability,
- food output per worker similar to farming,
- render animal icon in lower-left of tree cells.
- Values and formulas may be tuned during balancing.
Four Seasons concept
- 4 turns per season, total 16 turns per game year
- Farmers produce food in lower amounts throughout year, and a their main large harvest will be in summer.
- For a farm to produce the large harvest in summer, it must be established from at least the previous winter,
- The food will average out to be the same amount that is produced over the same number of turns currently (16),
- Each game will begin in spring, with the next turn being the first part of summer,
- Armies will suffer population losses when outside their kingdom in winter,
- Horses will need food throughout winter when being used (1 food per 1 horse population).
- 1-cell water will touching land on two sides will freeze and can be crossed by land units.
- Queued attack tooltip
- The philosophy behind work/combat calculations
In any enterprise, luck plays a part. Whether starting a business, buying stocks, growing vegetables, building a house, or starting a war, a large part of their fortune lies in unforeseeable events outside their control.
Weather, accidents, betrayal, technology which under-performed or failed, a shifting economy… there are countless unknowns. It’s difficult to predict the future when it’s impossibly to know every variable. If you’ve watched the show Grand Designs (home builders under-estimate cost and time about 90% of the time in the show) or leaders like Putin and Trump when they invade other countries, this should be obvious.
To reflect this, I’ve included an element of random chance in the calculations of not only combat, but all actions performed by all units.
Strength is based on population, tool upgrades and experience. Experience adds 1% per exp point. That means when maxed out, it can add up to 10% to the total strength of the unit.
Once base strength is calculated, by random chance your effective strength will be anything from 80% of that of that figure to 120%. It could go in either direction, for you and the opponent in a battle. Or when farming for example.
The intention is that you will need to look at the situation broadly and make a judgement – the odds might be in your favour, but will you take that chance? Have you planned for the worst and hope for the best, will you win even in the worst case scenario?
This is about pushing the player toward generalisation and leaning into strategy, rather than being able to crunch the numbers and win every battle to come out on top. I want the player to focus on the war (or whatever objective they have in mind) not the individual victories. For a more consistent outcome you will need to overwhelm the odds, and to do that you will almost always need the help of other players.
However, I accept that the current system isn’t fair. Completely random chance doesn’t make sense. Effective strength should be weighted toward the base strength.
At the moment, it works like the graph below – here are 300 random results in between 80%-120%:

Wouldn’t it make more sense to have most results closer to the base strength calculation? So it would be largely more predictable, but leaves room for random events.
Here’s how it will probably work in the future – generate two random numbers, and choose the closest to the base strength:

This creates a sort of flat-sided pyramid of results, which I think is more sensible. We could even make it the best of 3, squeezing everything to the centre even more:

Let me know what you think.
- Fixes and adjustments
Some of the fixes over the last few days:
- “Wait” action created so you can queue any number of turns where the unit remains in place and continues doing their job before taking another action
- Fisher population can now grow while they’re on water
- Fisher and navy can switch to each other while on water
- Fog issue not allowing members of the same kingdom to see the same area fixed
- Added separate military unit population icons to map so it’s easier to identify where armies are building at a glance
- Text on map chips/icons automatically chooses high contrast text depending on the colour of the background – this stops, for example, white text on light background becoming impossible to read
- Fixed issue where players could control resources of a deceased unit even though the player had no local units in the same land
- Adjusted map elements so they’re not obscuring each other when kingdom filter is on
- Probably several other small things I forgot about
- Resource management update
Some updates after issues were identified which resulted in players accidentally starving their populations to death, and quality of life suggestions to manage all resources.
If you choose, it should hopefully be possible to just stick with defaults and the units will mostly manage themselves.
Food now works more safely:
- Units eat before excess redistribution.
- Same-owner units on the same land share carried food for survival.
- If food is short, it is split proportionally so population losses are consistent.
- Any surplus above carry targets (see below) can still redistribute normally.
Added two unit resource controls:
Request materials for work
This controls what materials a unit is allowed to automatically request and spend for work/tools. If wood, copper, tin, or bronze is unchecked, that unit will not ask distribution for it and will not auto-spend it for production or tools.Carry targets
This sets how much food/material a unit should try to keep after eating. Distribution can fill these targets when resources are available, and it will not take resources below the target unless the unit spends/eats them. - Fog of war implemented, several fixes
Please report any issues after this update, the Discord is probably the best place to do that.
- Fog of war has been implemented, let me know what you think.
- Fisher’s population can now grow while they are on water. It didn’t make any sense that a fishing community would suddenly become sterile when they are working…
- Turn summary emails should be working again.
- Kingdom names and land names are now separate fields. If no Kingdom name is set, it will default to the land name.
- Battle casualties fixed – results were swapped by accident and you would get wiped out when attacking with a superior force! Should be working correctly now.
- “Select all lands in my kingdom” when sending messages was broken, should be working now.
- Unit type change no longer gives magical extra XP.
- Inactive users get notified when they are being skipped.
- Resource transfer dropdown includes unit id/type/name/owner when transferring between units, still need to add this to the land-unit transfer.
- Game-scoped general/message/resource notifications should now display in the normal turn notification view.
- Skip My Turns / Resume Turns added. It looks like crap though, will improve it later.
