QuantumHy
ActiveHytale • Version 0.2.3
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.
Desempenho
Captura de frametime no Hytale Client. Mesmo PC de teste em todas as runs abaixo.
PC de teste
| Componente | Spec |
|---|---|
| CPU | AMD Ryzen 5 3600 |
| GPU | NVIDIA GeForce GTX 1650 4GB |
| RAM | 16 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étrica | Off | On | Mudança |
|---|---|---|---|
| FPS médio | 102 | 146 | +43% |
| P5 | 51,6 | 91,1 | +76% |
| P1 | 36,2 | 64,4 | +78% |
| Média 1% low | 14,0 | 19,8 | +41% |
| Tempo abaixo de 60 FPS | 25,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étrica | Off | On | Mudança |
|---|---|---|---|
| FPS médio | 159,6 | 226,9 | +42% |
| P5 | 111,1 | 178,1 | +60% |
| P1 | 77,2 | 139,1 | +80% |
| Média 1% low | 43,7 | 111,7 | +155% |
| Tempo abaixo de 60 FPS | 2,2% | 0,1% | −95% desse tempo |
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 comcheckForUpdates)
Instalação
- Baixe QuantumHy-0.2.3.jar na aba Files da CurseForge
- Coloque o JAR na pasta mods/ do servidor, ou no solo Windows:
%AppData%\Hytale\data\release\Mods - 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
targetClientViewRadiusentre 12 e 16 pra limitar a distância de visão até em área aberta. - Ligue
verboseLogsó pra diagnosticar; o padrão é off. - Deixe
checkForUpdatesligado 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