Emergent life simulation system in C# (.NET 8) with terminal rendering.
DinoLife simulates ecosystems with 4 entity types and real-time interaction rules. It supports:
- Legacy terminal renderer and TUI renderer (
--renderer=legacy|tui) - Save/load state
- Performance overlay
- In-game help overlay (
H) - In-game parameter tuning with live updates, presets, and import/export
- JSON configuration files with schema validation and hot-reload
| Aspect | Specification |
|---|---|
| Language | C# .NET8 |
| Architecture | Data-Oriented Hybrid |
| Tick Rate | 60 updates/second |
| Target Entities | 5000 simultaneous |
| Persistence | JSON serialization |
| Rendering | Terminal (legacy + TUI) |
- Herbivore: Eats plants, flees carnivores
- Carnivore: Hunts herbivores (and scavengers when very hungry)
- Plant: Regrows and respawns after being consumed
- Scavenger: Consumes corpses and avoids carnivores
dotnet restore
dotnet build -c Releasedotnet run --project src/DinoLife.Console -- --renderer=legacydotnet run --project src/DinoLife.Console -- --renderer=tuiSpace: Play/PauseRightArrow: Step one tick (paused)+/-: Simulation speedW/A/S/Dor arrows: Camera panHome: Reset cameraTab/[/]: Entity selectionF: Follow selected entityG: Toggle gridPorO: Performance panelH: Help screenM: Command menu (TUI)S: SaveL: Load selected saveJ/K: Previous/next save in browserR: Reset simulationQ/Esc: Quit
In M menu, open Parameter tuning... to:
- Edit movement/metabolism/reproduction/detection/growth values live
- Apply presets:
Balanced,Chaotic,Stable - Export tuning profiles to
tuning/*.json - Import latest tuning profile from
tuning/
appsettings.json: global app configworld-config.json: world seed, initial populations, tuning profileappsettings.schema.jsonandworld-config.schema.json: validation schemas
Hot-reload is enabled by default (hotReloadEnabled: true in appsettings.json).
dotnet test -c Releasedotnet run --project tests/DinoLife.Benchmarks/DinoLife.Benchmarks.csproj -c Release