QuantumHy
In DevelopmentHytale • Version 0.2.1
QuantumHy makes your client run smoother in Hytale by cutting how much the server tells it to draw, and it adjusts that per player depending on where you are. Out in the open you keep your full view; in a crowded, expensive spot it pulls things in so your FPS does not tank.
The Hytale client is native, so no mod can touch the renderer. What a server mod can do is decide how much each client has to render, and that is the whole trick: fewer chunks and entities in view means fewer things to draw, which means more frames.
Two honest limits. It only helps where it is installed (your solo world, your own server, or a server that runs it), not on a server you merely join. And it never pushes your view past what you asked for: your own view radius is the cap, QuantumHy only ever pulls it down.
Performance
Client frametime capture on Hytale Client. Same test PC for every run below.
Test PC
| Component | Spec |
|---|---|
| CPU | AMD Ryzen 5 3600 |
| GPU | NVIDIA GeForce GTX 1650 4GB |
| RAM | 16 GB (2×8 GB) |
Stress route
Solo world, same stress route (birds and mobs on screen). Mod off vs QuantumHy default (~205s off, ~233s on).
| Metric | Mod off | Mod on | Change |
|---|---|---|---|
| Average FPS | 102 | 146 | +43% |
| P5 | 51.6 | 91.1 | +76% |
| P1 | 36.2 | 64.4 | +78% |
| 1% low average | 14.0 | 19.8 | +41% |
| Time under 60 FPS | 25.3% | 6.9% | −73% of that slice |
Stress route — mod off
Stress route — mod on
Normal gameplay (0.2.1)
Solo world, normal session (~5 min each). No intentional stress route, just regular play. QuantumHy disabled vs 0.2.1 default config enabled.
| Metric | Mod off | Mod on | Change |
|---|---|---|---|
| Average FPS | 159.6 | 226.9 | +42% |
| P5 | 111.1 | 178.1 | +60% |
| P1 | 77.2 | 139.1 | +80% |
| 1% low average | 43.7 | 111.7 | +155% |
| Time under 60 FPS | 2.2% | 0.1% | −95% of that slice |
How it works
Every few seconds QuantumHy counts the entities in the chunks around each player as a stand-in for render cost, smooths that signal, and turns it into a single shrink factor. That one factor drives two levers at once:
- The chunk view radius, so distant terrain stops streaming when it is busy.
- The entity stream radius in blocks, so the server stops sending far-off mobs. This is independent of chunks and is where most of the gain comes from when you are looking at a crowd.
In the open both ramp back up to where you started. While you are still loading chunks (just joined, or sprinting), cuts are held so the client is not told to drop chunks it is busy loading.
Features
- Adaptive chunk view radius driven by local entity density, capped at your own view radius
- Adaptive entity stream radius in blocks, the big lever in mob-heavy areas
- Global entity LOD culling that drops small and distant entities sooner
- Density smoothing so a moving player’s view does not flip-flop
- Automatic LeanCore takeover so the two mods never fight over the view radius
- Verbose server log that explains every decision per player per pass
Installation
- Download QuantumHy-0.2.1.jar from the CurseForge Files tab
- Place the JAR in your server’s mods/ folder (or
%AppData%\Hytale\UserData\Mods\on Windows) - Start the server. Config is created as QuantumHy.json in the plugin data folder
Config
There are no commands. Everything lives in QuantumHy.json, created on first run. Defaults work out of the box: no hard view cap, adapt only when crowded. Set targetClientViewRadius above 0 to trade some view distance for FPS everywhere. Full key reference: documentation.
Running it with LeanCore
If you run LeanCore too, QuantumHy sorts out the overlap for you. Both can set the client view radius and only one should, so QuantumHy takes it: on startup it detects LeanCore, turns off LeanCore’s view-radius governance, and drives the view radius itself. LeanCore keeps doing everything else (simulation radius, chunk throughput, memory). You do not have to touch LeanCore’s config. Set leanCoreTakeover to false to leave LeanCore alone, or yieldToLeanCoreViewRadius to true to let LeanCore keep the view radius instead.
Recommended
- Solo or your own server: leave the defaults. You only lose view distance when it is actually crowded.
- Want FPS everywhere: set
targetClientViewRadiusto a value like 12 to 16 to cap view distance even in the open. - Watch the log for a pass or two to see density and view decisions, then set
verboseLogto false.
License
MIT License
For server owners
Need permissions, commands & config?
The full administration guide covers every permission node, admin command, LuckPerms examples, and all config options.
Read server documentation