← Back to home

QuantumHy

In Development

Hytale • Version 0.2.1

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

O QuantumHy deixa seu cliente mais fluido no Hytale cortando o quanto o servidor manda ele desenhar, e ajusta isso por jogador conforme onde você está. Em área aberta você mantém sua visão cheia; num lugar cheio e pesado ele recolhe as coisas pra seu FPS não despencar.

O cliente do Hytale é nativo, então nenhum mod mexe no renderizador. O que um mod de servidor pode fazer é decidir o quanto cada cliente precisa desenhar, e esse é o truque inteiro: menos chunks e entidades na visão significam menos coisas pra desenhar, o que significa mais frames.

Dois limites honestos. Ele só ajuda onde está instalado (seu mundo solo, seu próprio servidor, ou um servidor que o use), não num servidor que você só entra. E ele nunca empurra sua visão além do que você pediu: seu próprio raio de visão é o teto, o QuantumHy só puxa pra baixo.

QuantumHy

Desempenho

Captura de frametime no Hytale Client. Mesmo PC de teste em todas as runs abaixo.

PC de teste

ComponenteSpec
CPUAMD Ryzen 5 3600
GPUNVIDIA GeForce GTX 1650 4GB
RAM16 GB (2×8 GB)

Rota de stress

Mundo solo, mesma rota de stress (pássaros e mobs na tela). Mod off vs QuantumHy no default (~205s off, ~233s on).

MétricaOffOnMudança
FPS médio102146+43%
P551,691,1+76%
P136,264,4+78%
Média 1% low14,019,8+41%
Tempo abaixo de 60 FPS25,3%6,9%−73% desse tempo

Rota de stress — mod off

Rota de stress — mod on

Gameplay normal (0.2.1)

Mundo solo, sessão normal (~5 min cada). Sem rota de stress forçada, só jogando. Mod off vs QuantumHy 0.2.1 no default.

MétricaOffOnMudança
FPS médio159,6226,9+42%
P5111,1178,1+60%
P177,2139,1+80%
Média 1% low43,7111,7+155%
Tempo abaixo de 60 FPS2,2%0,1%−95% desse tempo

Tabelas completas no GitHub.

Como funciona

A cada poucos segundos o QuantumHy conta as entidades nos chunks ao redor de cada jogador como medida do custo de render, suaviza esse sinal e o transforma num único fator de redução. Esse fator move duas alavancas ao mesmo tempo:

  • O raio de visão em chunks, pra parar de transmitir terreno distante quando está movimentado.
  • O raio de stream de entidades em blocos, pra o servidor parar de mandar mobs distantes. Isso é independente dos chunks e é de onde vem a maior parte do ganho quando você está olhando pra uma multidão.

Em área aberta os dois sobem de volta ao ponto inicial. Enquanto você ainda está carregando chunks (acabou de entrar, ou está correndo), os cortes ficam segurados pra o cliente não ser mandado a descartar chunks que está ocupado carregando.

Recursos

  • Raio de visão em chunks adaptativo guiado pela densidade local de entidades, limitado ao seu próprio raio
  • Raio de stream de entidades adaptativo em blocos, a grande alavanca em áreas cheias de mobs
  • Cull global por LOD de entidades que descarta entidades pequenas e distantes mais cedo
  • Suavização de densidade pra a visão de quem se move não ficar oscilando
  • Tomada de controle automática do LeanCore pra os dois mods nunca brigarem pelo raio de visão
  • Log detalhado no servidor que explica cada decisão por jogador a cada passada

Instalação

  1. Baixe QuantumHy-0.2.1.jar na aba Files da CurseForge
  2. Coloque o JAR na pasta mods/ do seu servidor (ou %AppData%\Hytale\UserData\Mods\ no Windows)
  3. Inicie o servidor. A config é criada como QuantumHy.json na pasta de dados do plugin

Config

Não há comandos. Tudo fica no QuantumHy.json, criado no primeiro boot. Os padrões funcionam de cara: sem teto fixo de visão, adapta só quando está cheio. Defina targetClientViewRadius acima de 0 pra trocar distância de visão por FPS em todo lugar. Referência completa das chaves: documentação.

Rodando com o LeanCore

Se você roda o LeanCore junto, o QuantumHy resolve a sobreposição pra você. Os dois podem ajustar o raio de visão do cliente e só um deve, então o QuantumHy assume: no boot ele detecta o LeanCore, desliga a governança de raio de visão do LeanCore e passa a controlar o raio ele mesmo. O LeanCore continua fazendo todo o resto (raio de simulação, throughput de chunks, memória). Você não precisa tocar na config do LeanCore. Defina leanCoreTakeover como false pra deixar o LeanCore em paz, ou yieldToLeanCoreViewRadius como true pra deixar o LeanCore manter o raio de visão.

Recomendado

  • Solo ou seu próprio servidor: deixe os padrões. Você só perde distância de visão quando está realmente cheio.
  • Quer FPS em todo lugar: defina targetClientViewRadius entre 12 e 16 pra limitar a distância de visão até em área aberta.
  • Acompanhe o log por uma passada ou duas pra ver a densidade e as decisões de visão, depois defina verboseLog como false.

Licença

Licença MIT

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