sim/src
Steve Biedermann 0009206a3c refactor(world)!: make Picard actors own entity state
People, rabbits, wolves and partnerships are now Picard actors that own
their state and apply their own rules (ageing, hunger and meals,
starvation, energy, breeding costs, death, birth intervals). The world
no longer keeps mirrored Vecs that were read from and written back to
generic entity actors every step; it only reaches entities through
typed messages and replies, correlated by request id through a single
inbox actor.

World-level state (terrain, resources, stockpile, houses, calendar, the
world random stream) stays in the world, and behaviour decisions stay
on the simulation thread because the Rune VM is not Send. Replies are
processed in entity order and each person has its own persisted random
stream, so runs and snapshot restores stay deterministic.

Rabbits killed by hunters no longer move or breed later in the same
tick.

BREAKING CHANGE: Picard actors are named person-<id>, rabbit-<id>,
wolf-<id> and partnership-<id> instead of entity-<id>, which changes
the paths used with the actor console.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-10-12 16:47:44 +02:00
..
world refactor(world)!: make Picard actors own entity state 2026-10-12 16:47:44 +02:00
index.html feat(sim)!: move simulation settings and behaviours into config.rn 2026-10-11 20:42:29 +02:00
main.rs feat(actor-console): expose Picard over WebSocket 2026-10-12 12:43:05 +02:00
storage.rs feat: add database persistence and Docker setup 2026-10-08 09:10:42 +02:00
world.rs refactor(world)!: make Picard actors own entity state 2026-10-12 16:47:44 +02:00