QuantumHy
In DevelopmentHytale • Version 0.2.1
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.
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
- Baixe QuantumHy-0.2.1.jar na aba Files da CurseForge
- Coloque o JAR na pasta mods/ do seu servidor (ou
%AppData%\Hytale\UserData\Mods\no Windows) - 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
targetClientViewRadiusentre 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
verboseLogcomo 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