Repository navigation
Microbiome 0.1.0
Pre-release0.1.0
This release turns Microbiome into a much richer simulation. Microorganisms now reproduce by binary fission, leave biomatter behind when they die, and drift toward food. There is a new Linux download, mb_strata, which is a 3D Winogradsky-style chamber built on the Strata engine. In it, aerobes, fermenters and cross-feeders compete over nutrient, waste and oxygen fields, with a live statistics overlay. You can also play in your browser, watch a live web viewer, and record runs as replays. The console app now runs each simulation until every organism dies, as fast as possible, instead of stopping after 120 one-second ticks. It also sends a single anonymous startup event, which you can turn off.
Changes
Simulation
- Organisms split in two once they have enough energy. Dead organisms become biomatter that others can forage, and movement is biased toward nearby biomatter (#26).
- The console grid shows biomatter as
.. The console app writes activity logs (log.microbiome.txt,log.simulation.txt) to the working directory (#12, #26). - The console app's defaults changed: simulations run until extinction with no delay between ticks (#26).
- Fixed compilation warnings (#16).
Strata micro-environment (mb_strata, Linux x64)
- A new, separate build of the simulation, rendered with the Strata engine. It is deterministic per seed and supports
--seed,--size,--view(composite, nutrient, waste, oxygen),--zoom,--yaw,--tps, window size options, and--headless/--screenshotfor single images (#60). - Live statistics overlay. Tab toggles it,
--no-hudhides it and--hud-scaleresizes it. R starts a new chamber, H shows help and Esc quits (#61). --record run.usdasaves the run as a usd-replay/1 replay, with--record-everyand--record-fieldto control detail (#62).--benchreports ticks per second and the run's state hash (#60).
Play in a browser
- The simulation runs entirely in your browser. The Strata micro-environment uses WebGL 2, and the original 2D grid is still available under /classic/ (#48, #63).
Web viewer
- A new
mb_webappserves a continuously running simulation that you can watch live in a browser (port 8080 by default, set withMICROBIOME_WEB_PORT) (#25). - Link previews: a description, Open Graph tags, and a preview card rendered with Strata (#51, #52, #70). Added a footer link (#43).
Replays from the console app
mb_app --record <path.usda>records the first simulation of a run as a time-sampled OpenUSD file (#59).
Usage reporting
mb_appsends one startup event when it launches. The event contains the program name, its version and a random installation ID, and nothing about you, your machine or the simulation (#41, #45, #50, #53).- The first run prints a notice and creates
usage-reporting.confin your config directory (for example~/.config/microbiome). Setenabled=falsethere, or setTRACE_USAGE_REPORTING=offorDO_NOT_TRACK=1in your environment, to turn it off. - The installation ID is kept in
trace-install-idin your data directory (for example~/.local/share/microbiome). Delete that file to reset the ID. mb_strataand the browser versions report no usage.
Version
0.0.1 → 0.1.0 — MINOR. Mechanical floor from the save format, the released save fixtures, the command-line flags, the save code and new files: MINOR.
Judgment: The release adds a new Strata micro-environment build (mb_strata) with many new flags, a browser version, a live web viewer, optional .usda replay recording, and new simulation mechanics, all of which are minor-level additions. Nothing a 0.0.1 player relied on stops working: the classic console app still runs the same way with no arguments, and 0.0.1 wrote no save or replay files that could fail to load. The default run length did change: the console app now runs each simulation until extinction, as fast as possible, instead of 120 ticks at one second per tick. That is a change to compiled-in defaults, not to a documented setting or file location, so I kept the floor of minor. Several new files were truncated from the diff (strata/app/main.cpp, src/webServer.cpp, the strata replay and HUD sources, trace_client.hpp), so their contents are unknown; because they are all new, they cannot change how anything from 0.0.1 is read.
- minor: command-line flag added: --bench
- minor: command-line flag added: --cascades
- minor: command-line flag added: --frame-every
- minor: command-line flag added: --frames
- minor: command-line flag added: --headless
- minor: command-line flag added: --height
- minor: command-line flag added: --hud-scale
- minor: command-line flag added: --max-population
- minor: command-line flag added: --no-hud
- minor: command-line flag added: --per-species
- minor: command-line flag added: --record
- minor: command-line flag added: --record-every
- minor: command-line flag added: --record-field
- minor: command-line flag added: --screenshot
- minor: command-line flag added: --seed
- minor: command-line flag added: --shadow-map
- minor: command-line flag added: --size
- minor: command-line flag added: --ticks
- minor: command-line flag added: --tps
- minor: command-line flag added: --view
- minor: command-line flag added: --width
- minor: command-line flag added: --window-height
- minor: command-line flag added: --window-width
- minor: command-line flag added: --yaw
- minor: command-line flag added: --zoom
- minor: new source file: src/biomatter.cpp
- minor: new source file: src/browser.cpp
- minor: new source file: src/header/biomatter.h
- minor: new source file: src/header/logger.h
- minor: new source file: src/header/microorganismFactory.h
Verification
Verified before publication; this tag points at the exact commit that was verified, and the downloads below were built from it.
- CI checks on this exact commit, all green: mb_strata (build, tests, headless smoke), Web build and smoke test (headless Chromium), docker-build.
- Packaging dry run: every download was built from this commit and checked before the tag was made.
drafted by Claude on behalf of Daniel Stephenson
What's Changed
- Logger & MicroorganismFactory classes by @dmccoystephenson in #12
- Create LICENSE by @dmccoystephenson in #15
- Fixed compilation warnings. by @dmccoystephenson in #16
- Refactored the tests and made some other modifications. by @dmccoystephenson in #17
- Update license by @dmccoystephenson in #21
- Add RESEARCH.md: microbiology concepts for a more realistic simulation by @dmccoystephenson in #23
- Align mechanics with RESEARCH.md: reproduction, biomatter, chemotaxis by @dmccoystephenson in #26
- Expose the simulation as a live webapp (closes #19) by @dmccoystephenson in #25
- Add curl to the Docker image for healthchecks by @dmccoystephenson in #27
- Fix Docker build on ubuntu:18.04: pin real Ulfius transitive deps by @dmccoystephenson in #28
- Fix Docker build: EOL ubuntu:18.04 → 24.04, add docker-build CI by @dmccoystephenson in #29
- Transition testing framework from custom assert-based tests to Catch2 by @dmccoystephenson with @Copilot in #22
- Fix the Catch2 test suite and wire it into the build by @dmccoystephenson in #31
- Assert simulation construction state instead of a guard that never runs by @dmccoystephenson in #34
- Run both test suites in CI and stop make from running a stale binary by @dmccoystephenson in #36
- Bring RESEARCH.md's description of the current model up to date by @dmccoystephenson in #37
- Keep every legacy test verdict on the line that names its test by @dmccoystephenson in #40
- Report usage to trace by @dmccoystephenson in #41
- Cover biomatter foraging, depletion and the energy clamp in Catch2 by @dmccoystephenson in #42
- Add a danielstephenson.dev backlink to the web viewer footer by @dmccoystephenson in #43
- Name both legacy-only web server tests in the README by @dmccoystephenson in #44
- Tag every trace event with the program version (trace-client-cpp 0.2.0) by @dmccoystephenson in #45
- Cover Logger and Result::print in Catch2 by @dmccoystephenson in #46
- Cover binary fission and the console representation in Catch2 by @dmccoystephenson in #47
- Run the simulation in the browser via Emscripten by @dmccoystephenson in #48
- README: add a Play in your browser link to the arcade portal by @dmccoystephenson in #49
- Send a random installation ID with the startup event (trace-client-cpp 0.3.0) by @dmccoystephenson in #50
- Add meta description and Open Graph tags to the viewer page by @dmccoystephenson in #51
- Add a link-preview image (og:image) to the viewer page, served at /og.png by @dmccoystephenson in #52
- Point the usage-reporting link at danielstephenson.dev/usage-reporting by @dmccoystephenson in #53
- Add Catch2 tests for microorganism movement and chemotaxis by @dmccoystephenson in #54
- Add Catch2 tests for microorganism death and spawn ranges by @dmccoystephenson in #55
- Add Catch2 tests for simulation stopping and stats output by @dmccoystephenson in #56
- Add Catch2 tests for microbiome population bookkeeping by @dmccoystephenson in #57
- Add Catch2 tests for AppConfig defaults and initial microbiome population by @dmccoystephenson in #58
- Add an optional --record flag that writes a replay to .usda by @dmccoystephenson in #59
- Simulate and render the micro-environment with Strata (opt-in mb_strata) by @dmccoystephenson in #60
- Show live statistics in mb_strata with Strata's overlays (ABI 1.5) by @dmccoystephenson in #61
- Record mb_strata runs as usd-replay/1 replays (--record) by @dmccoystephenson in #62
- Run the Strata micro-environment in the browser (WebGL 2) as the arcade build by @dmccoystephenson in #63
- Remove the unused MicrobiomeApplication::printResults() by @dmccoystephenson in #65
- Make run_tests.sh fail when either test suite fails by @dmccoystephenson in #66
- Move the web server tests to Catch2 and retire the legacy suite by @dmccoystephenson in #67
- Add a release workflow for the Strata build (mb_strata, Linux x64) by @dmccoystephenson in #68
- Note in RESEARCH.md which proposals the Strata build implements by @dmccoystephenson in #69
- Redraw the viewer's link-preview card as a Strata-rendered scene by @dmccoystephenson in #70
New Contributors
- @dmccoystephenson with @Copilot made their first contribution in #22
Full Changelog: 0.0.1...0.1.0