← Back to home

QuantumHy

In Development

Hytale • Version 0.2.1

server performance fps client view-distance entities optimization solo co-op

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.

QuantumHy

Performance

Client frametime capture on Hytale Client. Same test PC for every run below.

Test PC

ComponentSpec
CPUAMD Ryzen 5 3600
GPUNVIDIA GeForce GTX 1650 4GB
RAM16 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).

MetricMod offMod onChange
Average FPS102146+43%
P551.691.1+76%
P136.264.4+78%
1% low average14.019.8+41%
Time under 60 FPS25.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.

MetricMod offMod onChange
Average FPS159.6226.9+42%
P5111.1178.1+60%
P177.2139.1+80%
1% low average43.7111.7+155%
Time under 60 FPS2.2%0.1%−95% of that slice

Full tables on GitHub.

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

  1. Download QuantumHy-0.2.1.jar from the CurseForge Files tab
  2. Place the JAR in your server’s mods/ folder (or %AppData%\Hytale\UserData\Mods\ on Windows)
  3. 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.

  • Solo or your own server: leave the defaults. You only lose view distance when it is actually crowded.
  • Want FPS everywhere: set targetClientViewRadius to 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 verboseLog to 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