docs: client-perf analysis, bench harness and work journal
Everything the next agent needs to run the Phase 2 optimisation loop on a machine that can launch the client: - analysis/client-perf/: LEVERS (ranked levers + corrections), BENCH-MATRIX (world, scenes, config IDs, blocks B0-B14 with decision rules), PLAYER-TUNING, SPAWN-TUNING, research briefs, the jar scanner and its output, observed default configs, and proposed-configs/ (build.py generates tiers and bench variants and fails on unknown keys; apply_variant.py applies a variant and merges options.txt). - analysis/client-perf/bench/onion-bench/: bench-world datapack (scene teleports, Create grid, mob pen, sound storm, 120 s teleport tour). - analysis/audit/: the static recipe/dependency audit, including gen_fixes.py, which generates the shipped Paxi datapack and was never tracked. - phase0/: per-machine measurement harness (Steam Deck, 7700K/1060, 6700K/1080 Ti). - .pi/journal.md: running work log; read it first. All of it is packwizignored, so nothing here ships to players.
This commit is contained in:
1 parent
d80f85b3f6
commit
611a1a5952
102 files changed
+25853
No files matched your search
@@ -0,0 +1,134 @@
|
||||
# Onion MC: performance settings for players
|
||||
|
||||
These are things the pack can't set for you, plus the settings to change for your machine.
|
||||
Values marked *(provisional)* are waiting on Phase 2 benchmarks and may change.
|
||||
|
||||
## 1. Which tier are you?
|
||||
|
||||
| Tier | Typical machine | Examples |
|
||||
| --- | --- | --- |
|
||||
| **Deck** | handheld or integrated graphics, shared RAM | Steam Deck, laptop iGPU |
|
||||
| **Mid** (pack default) | 4–6 core CPU, ~6 GB VRAM graphics card | GTX 1060 6 GB, RX 580 |
|
||||
| **High** | 8 GB+ VRAM card | GTX 1080 Ti, RTX 3060+ |
|
||||
|
||||
The pack's defaults are the **mid** tier. They're applied only when the config file doesn't
|
||||
exist yet. **If you played before the defaults shipped**, close the game and delete these
|
||||
files from the instance folder to pick them up on the next launch. This resets those mods'
|
||||
settings.
|
||||
|
||||
```
|
||||
config/DistantHorizons.toml
|
||||
config/sodium-options.json
|
||||
config/entity_model_features.json
|
||||
config/flywheel-client.toml
|
||||
config/lambdynlights.toml
|
||||
config/ssrd-common.toml
|
||||
config/sound_physics_remastered/soundphysics.properties
|
||||
```
|
||||
|
||||
Don't delete `options.txt`: that resets all your video, audio and control settings,
|
||||
keybinds included. Set the video values in the table below by hand instead.
|
||||
|
||||
Then change these for your tier *(provisional)*:
|
||||
|
||||
| Setting | Where | Deck | Mid | High |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| LOD render distance | Options → Distant Horizons button | 64 | 128 | 128 (192–256 if you have ≥16 GB free RAM and 6+ cores) |
|
||||
| DH ambient occlusion (SSAO) | DH → Advanced → Graphics | off | off | on |
|
||||
| DH quality preset | DH quick options | Low | Medium | Medium |
|
||||
| Biome blend | Video Settings | off | 3×3 | 5×5 |
|
||||
| Mipmap levels | Video Settings | 2 | 2 | 4 |
|
||||
| Particles / entity shadows | Video Settings | Decreased / off | All / on | All / on |
|
||||
| Leaves & weather quality | Sodium → Quality | Fast | Default | Default |
|
||||
| Sub-level (airship) render distance | Sodium video settings slider | 16 | 16 | 32 |
|
||||
| Dynamic lights | LambDynamicLights settings | Fastest, entities off | Fast | Fast, entities off |
|
||||
|
||||
Leave **render distance at 8**. The server sends 8 chunks, so anything higher loads nothing
|
||||
extra in multiplayer. Distant Horizons draws everything beyond that.
|
||||
|
||||
## 2. Java memory and garbage collector (Prism → Edit Instance → Settings → Java)
|
||||
|
||||
Use **Java 21** (Temurin 21 recommended). More memory is *not* faster: a bigger heap makes
|
||||
each GC pause longer.
|
||||
|
||||
| Your machine | Max memory (`-Xmx`) | Min memory |
|
||||
| --- | --- | --- |
|
||||
| Steam Deck (16 GB shared with the GPU) | **5 GB**, never above 6 | leave low (512 MB) |
|
||||
| 16 GB PC | **6 GB** | leave low |
|
||||
| 32 GB PC | **6–8 GB** | may equal max |
|
||||
| PC with little free RAM (other apps/containers running) | min(6 GB, free RAM − 2 GB) | leave low |
|
||||
|
||||
**JVM arguments** *(provisional; Phase 2 block B4 picks the winner)*. Paste one line into
|
||||
*Java arguments* (Prism adds `-Xmx` itself from the memory box):
|
||||
|
||||
- **Default (all machines):** client-tuned G1
|
||||
```
|
||||
-XX:+UseG1GC -XX:MaxGCPauseMillis=37 -XX:G1HeapRegionSize=16M -XX:+UnlockExperimentalVMOptions -XX:G1NewSizePercent=23 -XX:G1ReservePercent=20 -XX:G1MixedGCCountTarget=3 -XX:G1HeapWastePercent=20 -XX:InitiatingHeapOccupancyPercent=10 -XX:G1RSetUpdatingPauseTimePercent=0 -XX:MaxTenuringThreshold=1 -XX:GCTimeRatio=99 -XX:+DisableExplicitGC -XX:+PerfDisableSharedMem
|
||||
```
|
||||
- **32 GB machines, if you still get stutter:** Generational ZGC. Distant Horizons
|
||||
recommends it in its log warning about G1.
|
||||
```
|
||||
-XX:+UseZGC -XX:+ZGenerational -XX:+DisableExplicitGC -XX:+PerfDisableSharedMem
|
||||
```
|
||||
`-XX:+ZGenerational` is required: on Java 21, `-XX:+UseZGC` alone selects the older
|
||||
non-generational ZGC. Avoid ZGC on the Deck or on low-RAM PCs. It needs spare memory and
|
||||
CPU those machines don't have.
|
||||
|
||||
Don't add `-XX:+AlwaysPreTouch` on the Deck or on low-RAM PCs. Don't copy
|
||||
`-XX:ShenandoahGCMode=iu` from older guides: Java 21 refuses to start with it.
|
||||
|
||||
## 3. Shaders
|
||||
|
||||
*Pending the owner's shader policy. Interim advice:* **shaders off** is the pack default.
|
||||
They cost more in this pack than usual:
|
||||
|
||||
- With any shaderpack on, **Create's GPU renderer (Flywheel) switches off**, so every
|
||||
rotating shaft and machine is drawn the slow way, and drawn again for shadows.
|
||||
- Shader **shadows corrupt airships** (Sable sub-levels; Iris issue #3164).
|
||||
- Distant Horizons adds a shadow pass over all its terrain.
|
||||
|
||||
If you want shaders anyway:
|
||||
|
||||
| Tier | Pack | Profile (shader settings screen) |
|
||||
| --- | --- | --- |
|
||||
| Deck | MakeUp – Ultra Fast | `shadowless_low` or `shadowless_medium`. These have no shadows, so no airship corruption. |
|
||||
| Mid | MakeUp – Ultra Fast | `shadowless_medium`, or `low` if you accept shadow artefacts on airships |
|
||||
| High | Complementary Reimagined | `LOW` or `MEDIUM` (MEDIUM = 8-chunk shadows). Avoid `HIGH` and above near Create builds. |
|
||||
|
||||
## 4. Resource packs
|
||||
|
||||
The pack downloads these but doesn't enable them:
|
||||
|
||||
- **Fresh Animations** (+ **FA: Extensions**): re-models and animates every vanilla mob. It's
|
||||
the most expensive optional visual in the pack, especially with shaders and near villages
|
||||
or farms. **Deck: don't use it.** Mid: Fresh Animations alone is OK, but skip Extensions.
|
||||
High: fine.
|
||||
- **Better Leaves**: much denser leaves. The pack has no leaf-culling mod for it yet, so
|
||||
**avoid it on Deck and mid** until one is added.
|
||||
|
||||
## 5. Steam Deck
|
||||
|
||||
- Run Prism in **Desktop Mode** (flatpak from prismlauncher.org).
|
||||
- Prism → Edit Instance → Settings → **Environment variables**: `mesa_glthread=true`.
|
||||
Minecraft uses Mesa's OpenGL driver (radeonsi), and glthread helps the Deck's CPU-bound
|
||||
draw path.
|
||||
- Prism → Custom Commands → **Wrapper command**: `gamemoderun` (the flatpak reaches GameMode
|
||||
through the desktop portal).
|
||||
- Native 1280×800. Cap FPS at the panel rate (60 LCD / 90 OLED) **after** tuning.
|
||||
Uncapped only matters for benchmarks.
|
||||
|
||||
## 6. Other platforms
|
||||
|
||||
- **Windows + NVIDIA**: NVIDIA Control Panel → Manage 3D settings → Program settings → your
|
||||
Java `javaw.exe` → *Power management mode: Prefer maximum performance*. Leave *Threaded
|
||||
optimization* alone: the driver ignores it for Minecraft, and Sodium handles it.
|
||||
- **Linux + NVIDIA**: use the proprietary driver, not nouveau. Sodium already sets
|
||||
`__GL_THREADED_OPTIMIZATIONS=0`, so you don't need to.
|
||||
|
||||
## 7. Still slow? Change these first
|
||||
|
||||
1. Turn shaders off.
|
||||
2. Lower the Distant Horizons LOD distance (biggest always-on cost).
|
||||
3. Disable Fresh Animations.
|
||||
4. Lower the airship render distance (Sodium video settings).
|
||||
5. Lower biome blend (helps stutter while flying, not steady FPS).
|
||||
Reference in new issue
Block a user