What is this
A hundred thousand doggies with roles, fights, trails, houses and a cat, simulated in plain C# with
Burst and Jobs and without an ECS framework. The point: for a game with a known set of unit kinds the
complexity moves one layer down and is written once, and the gameplay code stays simple. Built step
by step, each step a commit with a problem, a solution and a measurement; the code, the plan and the
numbers are on GitHub.
Controls
- Drag to pan, mouse wheel or pinch to zoom.
- Click a doggie, a corpse, a flower, a house or a cat to open its card; click empty ground to close it.
focus moves the camera to it, follow keeps it in view.
- Bottom bar: play and pause, a step back and forward, speed from x1 to x8, drag the timeline to rewind.
- Top left:
game is the score by team, dogs lists every doggie, bench runs
the measurement, debug holds the switches; config picks the scene and seed the
random seed, each rebuilds the world. Top right: fps shows where the frame goes.
- Keys: space pauses, arrows step, F focuses the selection, Esc clears it.
Scenes
- bosch
- The opening scene: blood, wars, hunger, and a cat that grows on what it crushes and goes off to
sleep after a rampage. The measurement runs here.
- anthill
- An ant farm: a few fat flower patches far from the houses, and trails that grow into highways across
the whole map. No cat, no match-3.
- light and dark
- Two factions with a hero each, the archangel and the demon, roles split by side, and a guardian cat
at each house: tough, fast to pounce, the dark one breathes fire. A pure battle: no flowers, no balls,
no match-3, and the side that bites the other out wins.
- woodstock
- Peace and harmony: nobody barks, hippies gift their flowers to anyone with an empty mouth, several
harmless cats sow patches wherever they nap, and the gardens stand away from the houses, where three
flowers of a colour merge into the next one.
- raid
- Doggies against a boss: a big fire-breathing cat kept to the top of the map on scorched earth, with
its kittens. The cat can be bitten, tanks kick balls into it; killed, it leaves and comes back a level
stronger.
- asylum
- Roles handed out at random, giant flowers hopping around and dropping kittens, flowers that poison,
enrage or turn the picker, a rain of balls that sends everyone berserk, and gardens where merged rows
spawn kittens.