← Back to home

QuantumHy

Active

Hytale • Version 0.2.3

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.

O raio não volta no instante em que a área parece vazia. O expand espera a carga ficar calma, pelo menos metade do disco de density carregado, você parado (não voando) e o mundo sem hitch. Enquanto está em streaming ou no join, os cortes ficam segurados pra o cliente não ser mandado a descartar chunks que está ocupado carregando. No shrink cheio o raio de entidades cai ao piso num passe.

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
  • Freeze de expand até carga, cobertura e MSPT estarem calmos (sem dente de serra 6↔13)
  • 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 opcional no servidor que explica cada decisão por jogador a cada passada (off por padrão)
  • Checagem de update no boot, só para operadores ou durkz.quantumhy.admin (opt-out com checkForUpdates)

Instalação

  1. Baixe QuantumHy-0.2.3.jar na aba Files da CurseForge
  2. Coloque o JAR na pasta mods/ do servidor, ou no solo Windows: %AppData%\Hytale\data\release\Mods
  3. Inicie o servidor. A config é criada como QuantumHy.json na pasta de dados do plugin

Comandos

/q status
/q help

Aliases: /quantumhy, /qhy.

Config

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. Defina checkForUpdates como false pra pular a checagem de versão no boot. Referência completa das chaves: documentação.

Permissões

  • durkz.quantumhy.admin: receber avisos de update in-game. Operadores do servidor herdam isso via *.

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.
  • Ligue verboseLog só pra diagnosticar; o padrão é off.
  • Deixe checkForUpdates ligado a menos que você não queira o aviso de JAR novo para operadores.

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