softmax
open on your phone
A Softmax Coworld

Sugarscape

The classic artificial society — now playable on Softmax.

After Growing Artificial Societies (Epstein & Axtell, 1996), by way of the Digital Terraria Lab engine.

Starting replay...
Ranked episode · 3d ago · Open episode →Watch the league live →

Gnomish citizens; their hats grow with their wealth!

The world

A society from simple rules

In Sugarscape, gnomish citizens roam a grid of sugar — and sometimes spice — harvesting, eating, and sometimes even trading, mating, or fighting, based solely on simple rules. Through the individual actions of these citizens emerge population-level phenomena and distributions: a window into how simple rulesets and random initial conditions lead to emergent social outcomes.

Softmax is excited to host this classic ALife environment in a whole new way: as a multiplayer online arena in which anyone from first-time ALifers to Sugarscape devotees can try their hand at designing agent update rules and seeing what happens. In this prototype version, we ask player-scientists two questions: can you produce a robustly capable ruleset generator, and can you hand-design a well-balanced ruleset for the benefit and well-being of your Sugarscape gnomes?

How it’s played

Submit a ruleset, run a simulation, see what happens

We offer two ways to play: submit a ruleset generator which aims to hit any given target distribution, or submit a single ruleset which aims at the general welfare. In the first, your generator receives the game configuration — is spice enabled? what about combat? what do starting endowment ranges look like? — and a target distribution it has to hit — an egalitarian Gini, perhaps, or convergence of tribes — and it has to tailor a ruleset for that game and that target. In the latter, you craft and submit a ruleset yourself, aimed at a fixed configuration — everything enabled with standard values per DTL — and your goal is to produce the highest overall happiness in your society.

A generator
Targeted generation: the policy you submit reads the drawn world and its target, then writes the law itself.
A human
Commonwealth: you write the constitution by hand, once.
One law
A single declarative ruleset: four traits, one movement rule list.
1,000 ticks
The world runs itself. Citizens harvest, trade, mate, and fight under your law.
Match the target
Targeted generation: how closely does the grown distribution fit the one you were assigned?
Raise the common weal
Commonwealth: how much wellness do your surviving citizens add up to?
The leagues

Two ways to be a good legislator

Targeted generation

Live

You’re handed a target distribution — of wealth, lifespan, trade price, population, or tribal balance — and your score is how closely the society you grow matches it. Every episode draws one of 80 curated worlds — twelve base societies crossed with mechanic packs like disease, seasons, and combat — so a competitive ruleset generator has to read the world it’s given and adapt. You can’t memorize a map, and if your citizens die out, you score zero.

Solo · 1 scientist
One drawn world, one target, one law. The purest form of the game.
Join Solo →
Duos · 2 scientists
Two scientists share a single world while pursuing different global targets — sometimes compatible, sometimes squarely in tension. Each is scored independently against their own.
Join Duos →

The seven targets

Six are grown by the reference engine itself under the book’s classic configurations — so the shape is honestly reachable, not hand-drawn. One is real human data.

Skewed wealth
wealth.skewed-gini-0.5
0wealth1000
The book's classic result: wealth piles up, Gini ≈ 0.5.
Egalitarian wealth
wealth.egalitarian
0wealth1000
The counterfactual: compress the same variable to Gini ≈ 0.30 — flatter than any real economy.
Carrying capacity
population.carrying-capacity
0citizens2000
Population settles at what the land can bear — ≈ 224 citizens, tick after tick.
Survivorship
age-at-death.survivorship
0age at death120
Real human data: the 2019 US mortality curve (HMD life table). Most deaths in old age.
Price equilibrium
price.equilibrium
0mean trade price2.5
Bilateral sugar–spice trade converges: mean price ≈ 1, as the book predicts.
Tribal convergence
tribe.convergence
0majority share1
Cultural tags mix until one tribe dominates — a ~80% majority share.
Tribal diversity
tribe.diversity
0majority share1
The opposite ask: keep the split stable — majority share around 0.6.

Commonwealth

Live

The handcrafted league. No drawn worlds and no assigned targets: every episode presents the same canonical world, and your submission is one fixed constitution — the exact same ruleset, every time. The ruleset is a constitution; the score is the common good.

That score is the summed wellness of every citizen still alive at the final tick — health, peace, friendship, family, and wealth, averaged over each citizen’s final days and added up across the whole surviving population. It has no ceiling: a thriving crowd beats a blissful few, growth and welfare pull on the same rope, and extinction scores zero. Write one law your gnomes can live well under, forever.

Join Commonwealth →
The law itself

Small enough to read whole

Rulesets are written in SugarLang — a tiny declarative language with strict budgets (256 expression nodes, depth 16, 32 KB). This is a complete competitive submission:

1whenagent.ttl<3scorecell.welfare
↓ no match falls through
2otherwise scorecell.welfare0.4×cell.distance2.0×cell.pollution
aggression0.0trade1.0lendingfertility1.0

Read: stay peaceful, trade freely — prefer welfare, discount distance, avoid pollution. Unless a citizen is about to starve, in which case it takes the richest cell in sight. For every candidate cell, the first matching rule supplies the score; the citizen takes the highest-scoring cell.

Getting started

Enter the arena

The fastest path is a coding agent: point it at the participation guide and it will set up the optimizer starter kit, interview you about how you want to play, teach you SugarLang, and take you from a fresh clone to a first scored ruleset — including co-editing laws with you in a visual studio.

Prefer to drive yourself? A player is a small Docker image: it connects, reads its observation, submits one ruleset, and exits. The bundled target-aware baseline is a working starting point — beating it is the game.

# set up a project
mkdir sugarscape-player && cd sugarscape-player
uv init --bare && uv add "coworld[auth]"

# download the coworld (manifest, docs, protocols, baseline player)
uv run coworld download cow_049e7dc0-f4b5-49f8-81df-59ea73493b6a

# optional: run a local episode against the baseline
uv run coworld run-episode \
  ./coworld/cow_049e7dc0-f4b5-49f8-81df-59ea73493b6a/coworld_manifest.json \
  --timeout-seconds 120

# build your player image, then upload and enter a league
uv run softmax login
uv run coworld upload-policy my-player:latest --name my-player
uv run coworld submit my-player \
  --league league_620a74a7-eb1f-4386-b386-0e7246be4eb6   # Solo
# Duos:         --league league_d5b48dfe-5e08-499f-80f1-63f14720c50c
# Commonwealth: --league league_dac00450-027a-45e6-9f6b-c9bda7ddd61d

Sugarscape engine: DTL Sugarscape (Unlicense) · after Epstein & Axtell, 1996