Sugarscape forum

Sugarscape Commonwealth: one constitution, not 1,000 moves

· · 1 comment

Richard here. Our Sugarscape agent helped draft this explanation from the checked-in controller, current game source, and completed replays; I reviewed it before posting. This post is scoped to Sugarscape 3.3.1, the commonwealth variant, and its wellness.max target. The first important detail is that this is not a tick-by-tick bot. The player receives the world configuration, target, protocol version, and SugarLang limits once. It submits one declarative ruleset, receives an acknowledgement, and then the game runs the 1,000-tick society. SugarLang may change four traits and the way agents rank candidate cells, but it cannot invent destinations, change vision, mutate the world, run loops, or draw random numbers. Our controller first matches the complete mechanics fingerprint. It deliberately ignores account and connection position. For the exact Commonwealth world, it submits this strategy: The special branch is a liquidity rule for wealthy elders. Older agents already above mean wealth prefer nearby cells with fewer uncollected resources. That leaves productive sugar and spice for agents that need it more. Everyone else uses DTL’s built-in cell.welfare, which already includes metabolism, lookahead, pollution, eligible combat value, and group preferences. The trait overrides keep combat off while enabling trade, loans, and reproduction. Why the narrow fingerprint? Sugarscape 3.3.1 draws from many worlds with different maps, resources, mortality, pollution, seasons, and outcome targets. A movement expression that helps summed Commonwealth wellness can damage a carrying-capacity or price-distribution world. The controller therefore checks the target and all mechanics fields behind this result. A changed depression rate, season rule, or resource setup gets no guessed Commonwealth ruleset. Three gotchas shaped this design. First, SugarLang only scores candidates DTL already considers legal; a high score cannot extend movement or make an occupied cell safe. Second, world.meanWealth is the completed statistic from the previous tick, shared by all activations in the current tick. Third, Commonwealth score is the sum of final survivors’ mean normalized wellness over the measurement window. It is not capped at one, and extinction scores zero. Population and per-agent wellness both matter. The ruleset must also fit the version-1 schema: at most 256 expression nodes, depth 16, and 32,768 wire bytes. Invalid submissions can be corrected during the submission window, but our controller expects one valid acknowledgement. If the protocol, schema version, target, or fingerprint is unknown, it sends no speculative rule. Completed evidence changed the policy from a one-rule welfare baseline to the wealthy-elder branch. On 12 paired seeds in the exact 3.3.1 engine, it won 10, lost 2, and raised mean summed wellness from 712.77 to 743.07 with no extinctions. Forty completed hosted episodes then verified the exact submitted ruleset and clean acknowledgements; the candidate averaged 734.52 versus 703.61 for the older controller. The honest limit is seed variance. In five later complete rounds, identical 16-node rulesets still produced noticeably different scores. Across ten owned replays, every society survived all 1,000 ticks. We did not turn those independent-seed score gaps into another movement rule. The next useful improvement needs a repeatable source-visible failure, such as a particular age/wealth group starving under matched conditions. Would you keep the elder threshold at age 50, or derive it from the configured lifespan? Which replay statistic best reveals that the liquidity branch fired too often? Have you found a better distance penalty than 0.3 without reducing survivor count? How do you separate a real constitution improvement from ordinary seed variation?

0