Out-of-tree Bunnyland plugin that adds an expansion-pack-sized wilderness survival pack. It layers four cohesive mechanics onto the core Relics ECS, reusing the server's light, weather, needs/meter, and health systems:
- Scent & trails — creatures leave a decaying scent in each room they pass through; carried tracking gear points down the exit toward the strongest-scented neighbour.
- Cold & warmth — a body-warmth meter drains in cold rooms (weather, night, biome, exposure) and is restored by fire or shelter; freezing bleeds health.
- Campfires — a lightable, fuel-burning fire that raises its room's light and warms
everyone in it, with
build-fireandstoke-fireverbs. - Foraging — biome-seeded resource nodes yield items on a per-node cooldown via a
forageverb.
This repo intentionally keeps all wildsim work outside the main bunnyland-server repo.
server/- Python Bunnyland plugin package with the survival components, the passive consequences (scent, warmth, campfire), prompt fragments, a worldgen enrichment hook, the player/AI verbs, and tests.
The plugin exposes bunnyland_wildsim.bunnyland_plugins() and contributes:
ScentComponent,ScentTrailComponent,TrackerComponent- scent & tracking.WarmthComponent- body warmth (reuses the shared needs/meter primitive).CampfireComponent- a lightable fire;ResourceNodeComponent- a forageable source.ScentConsequence,WarmthConsequence,CampfireConsequence- the per-tick passive sim.wildsim_fragments- renders survival state into both human and AI prompts.WildWorldgenHook- scents generated predators/prey and seeds resource nodes per biome.build-fire,stoke-fire, andforage- verbs for humans and AI.
This package builds no containers. It is loaded into the stock server via --module:
bunnyland serve --module bunnyland_wildsimdefault_enabled=True, so no --plugin flag is required once the module is imported. The
bunnyland_wildsim package must be importable by the server (installed into the server's
environment, or on PYTHONPATH).
Run server tests against a sibling bunnyland-server checkout (no install required —
server/tests/conftest.py puts both packages on sys.path). From server/:
uv run --project ../../bunnyland-server -m pytest
uv run --project ../../bunnyland-server ruff check src testsSee server/README.md for more detail.
This plugin follows the Bunnyland project's
contribution guidelines and code of conduct,
which point back to the bunnyland-server repository.
Licensed under the GNU Affero General Public License v3.0. See LICENSE.