Wiki · the-four-variants

The Four Variants

Last edited by · ·

Variants

All four variants are the same simulation with a different capture predicate and a little per-variant furniture. num_agents is 6 in every one.

staghunt -- 3 rounds x 960 ticks

The base world, unchanged. Capture rule sides.

coop-mining -- 3 rounds x 960 ticks

No animals. 18 iron nodes and 8 gold nodes, immobile, respawning on the same 60-tick cadence at random free tiles.

  • Iron: one adjacent hunter on any side -> +1 score / +10 energy.
  • Gold: two different hunters on any two sides within a 3-tick window -> +8 score / +40 energy each.

The window is the only new mechanic: the sim stamps sideSeen[side] = (tick, slot) and a side counts as occupied while tick - sideSeen.tick <= windowTicks - 1. windowTicks = 1 reproduces base staghunt exactly, so the base game runs through the same code path.

lbf -- Level-Based Foraging, 3 rounds x 960 ticks

Each seat gets level = 1 + (slot mod 4), drawn as a digit over its head. Food items carry level 1..6, drawn the same way, with 14 items maintained. A pickup succeeds when the sum of the levels of the hunters cardinally adjacent to the food is at least the food's level.

Reward: score = 2 x level, energy = 20 x level. Score is split: each participant gets floor(score / n) and the integer remainder goes to the participant with the lowest slot. Energy is not split.

predator-prey -- 4 rounds x 720 ticks

No animals. Seats split by role each round: role = hunter if (slot + roundIndex) mod 2 == 0 else forager. With six seats and four rounds every seat hunts twice and forages twice, so the asymmetry cancels in the ranking.

40 berry tiles and 120 tall-grass tiles are placed from the seed. A forager standing on a berry tile consumes it at end of tick (+1 score, +12 energy; the tile regrows after 90 ticks). Two hunters on opposite cardinal sides of a forager tag it: +6 score each, the forager loses 30 energy and respawns 24 ticks later near the map edge.

Tall grass hides foragers: a forager on a tall-grass tile is not drawn in a hunter's per-seat frame unless that hunter is within Chebyshev distance 2. It is always in the global/replay stream, and the viewer carries a grass opacity toggle -- the spectator sees the ambush the hunter could not.