43138159b2
horizon-telemetry, shared by the launcher, the game and the ingest server: - consent.json in the game folder: four switches, all off until the player answers, a consent version that re-asks when what is collected changes, the answer's time, and a random install ID made at the first yes. - Payloads: perf summaries (percentiles + 14 frame-time buckets from a fixed-size Timings recorder), crash and bug reports, and benchmark reports carried as docs/benchmark-report.md defines them; size caps per kind. - A scrubber for user folders, user names, e-mail and IP addresses, UUIDs and caller-known private terms. - The outbox: only allowed kinds get in, daily caps, 200 items / 2 MiB. - zstd batches with bounded decoding; the uploader re-reads the consent and drops withdrawn items before connecting, backs off and caps batches a day. - tests/consent_gating.rs: a local mock server sees zero connections with the consent missing, outdated or withdrawn. No server is set (DEFAULT_ENDPOINT is None): nothing is sent yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Horizon documentation
To play, use the launcher; the project site is playhorizon.dev. These pages are for developers.
Build and run
- Build from source: your own copy of the game, resource preparation,
cargo run. - Native client: options, controls, the dedicated server,
horizon-ctlscripting, packaging, architecture. - Graphics: the Simple and Advanced graphics settings, the graphics benchmark and what it measured.
- Extras: optional zoom, minimap, FPS and keystroke overlays and auto-reconnect, all off by default.
- Launcher: installs, updates and starts builds; its CLI and MCP server; releasing it.
- Opt-in data collection: the consent, exactly what is sent, how it is stored and sent.
- Menus: the title, world list, create world, multiplayer, options and pause screens share the launcher's design tokens and fonts (
crates/horizon-theme), drawn byui_themeover a live frozen backdrop (game/backdrop.rs, blurred and graded bypost.rs). Options → Interface → Menu style switches to vanilla's screens (Classic, kept inhorizon.txt;HORIZON_MENU_STYLE=horizon|classicoverrides it, and scripted runs default to Classic). Title (webm), worlds, options, pause.
Parity
- Rust rewrite status: completion criteria, how to reproduce the validation, and per-area scope.
- Parity workflow:
tools/parity.py, the gate, other machines, merging. - Area notes: block behaviours and ticking, section meshing.
- Decompilation and research lab and decompilation status: the local game inspection workspace the harnesses build on.
Architecture: world generation
- World generation: the pipeline from noise to features.
- Noise generation, compiled density functions, structure density, terrain filling.
- Biomes: lookup, temperatures.
- Surfaces: material surfaces, material conditions, rule libraries, vertical anchors, value providers.
- Carving, heightmaps, feature placement.
Architecture: world data and simulation
- World data: chunk storage, palettes, region files.
- Block-state codecs, scheduled ticks.
- Collision geometry: shapes, collision, movement and fluids.
- Face visibility: which model faces the mesher emits.