b691b5ebaa
tools/perf_bench.py runs Horizon, the vanilla 26.3 client and vanilla with Sodium, Lithium, FerriteCore and ImmediatelyFast through the same steps: fresh world (seed 1234, creative) per render distance, start to title, start to in-world, then per scene teleport, chunk load, settle and a fixed 192-block flight. Every frame time is kept and one function computes average FPS, 1% and 0.1% lows, p50/p95/p99/p99.9 and a frame-time histogram for every game; RSS is sampled from outside the process for every game. One options.txt (vanilla's keys, Fancy preset values with a Custom preset so the render distance holds) is written for all of them. Vanilla is driven by a dev-only Fabric mod (mods/horizon/src/bench) compiled against the user's own client jar: it creates the world with WorldOpenFlows.createFreshLevel, teleports with /tp and places the player on the path every frame as horizon-ctl fly does. Nothing of the game is redistributed and the performance mods are fetched from Modrinth with the hashes pinned in packs/mods.lock.json. Horizon side: `fly ... PITCH raw` also replies with every frame time, and --offscreen drives frames from the event loop, so a window nobody sees (a locked macOS session) still renders. docs/benchmark.md describes what is measured, how fairness is kept, the caveats and how to reproduce it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
41 lines
3.5 KiB
Markdown
41 lines
3.5 KiB
Markdown
# Horizon documentation
|
|
|
|
To play, use [the launcher](../launcher/README.md); the project site is [playhorizon.dev](https://playhorizon.dev). These pages are for developers.
|
|
|
|
## Build and run
|
|
|
|
- [Build from source](../README.md#build-from-source): your own copy of the game, resource preparation, `cargo run`.
|
|
- [Native client](native-client.md): options, controls, the dedicated server, `horizon-ctl` scripting, packaging, architecture.
|
|
- [Graphics](graphics.md): the Simple and Advanced graphics settings, the graphics benchmark and what it measured.
|
|
- [Benchmark](benchmark.md): Horizon against vanilla 26.3 and vanilla with performance mods, on the same machine, world, path and settings: what is measured, how it is kept fair, how to reproduce it.
|
|
- [Extras](extras.md): optional zoom, minimap, FPS and keystroke overlays and auto-reconnect, all off by default.
|
|
- [Launcher](../launcher/README.md): installs, updates and starts builds; its CLI and MCP server; releasing it.
|
|
- [Opt-in data collection](telemetry.md): 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 by `ui_theme` over a live frozen backdrop (`game/backdrop.rs`, blurred and graded by `post.rs`). Options → Interface → Menu style switches to vanilla's screens (Classic, kept in `horizon.txt`; `HORIZON_MENU_STYLE=horizon|classic` overrides it, and scripted runs default to Classic). [Title](media/menu-title.png) ([webm](media/menu-title.webm)), [worlds](media/menu-worlds.png), [options](media/menu-options.png), [pause](media/menu-pause.png).
|
|
|
|
## Parity
|
|
|
|
- [Rust rewrite status](rust-parity.md): completion criteria, how to reproduce the validation, and per-area scope.
|
|
- [Parity workflow](parity-workflow.md): `tools/parity.py`, the gate, other machines, merging.
|
|
- Area notes: [block behaviours and ticking](parity/blocks.md), [section meshing](parity/meshing.md).
|
|
- [Decompilation and research lab](research-lab.md) and [decompilation status](decompilation-status.md): the local game inspection workspace the harnesses build on.
|
|
|
|
## Architecture: world generation
|
|
|
|
- [World generation](world-generation.md): the pipeline from noise to features.
|
|
- [Noise generation](noise-generation.md), [compiled density functions](density-functions.md), [structure density](structure-density.md), [terrain filling](terrain-filling.md).
|
|
- Biomes: [lookup](biome-lookup.md), [temperatures](biome-temperatures.md).
|
|
- Surfaces: [material surfaces](material-surfaces.md), [material conditions](material-conditions.md), [rule libraries](material-rule-libraries.md), [vertical anchors](vertical-anchors.md), [value providers](value-providers.md).
|
|
- [Carving](carving.md), [heightmaps](heightmaps.md), [feature placement](feature-placement.md).
|
|
|
|
## Architecture: world data and simulation
|
|
|
|
- [World data](world-data.md): chunk storage, palettes, region files.
|
|
- [Block-state codecs](block-state-codecs.md), [scheduled ticks](scheduled-ticks.md).
|
|
- [Collision geometry](collision-geometry.md): shapes, collision, movement and fluids.
|
|
- [Face visibility](face-visibility.md): which model faces the mesher emits.
|
|
|
|
## The earlier Java track (no longer developed)
|
|
|
|
- [Java performance packs](java-packs.md), with [Vulkan on your Mac](vulkan.md), [collector comparisons](collectors.md), [profiling](profiling.md), [process memory](process-memory.md) and [tick state](tick-state.md); [server quickstart](server-quickstart.txt).
|