← Volver al inicio

QuantumHy

Activo

Hytale • Version 0.4.0

serverperformancefpsclientview-distanceentitiesoptimizationsoloco-op

QuantumHy hace que tu cliente vaya más fluido en Hytale recortando cuánto le dice el servidor que dibuje, y lo ajusta por jugador según dónde estés. En campo abierto mantienes tu visión completa; en un sitio lleno y costoso recoge las cosas para que tus FPS no se caigan.

El cliente de Hytale es nativo, así que ningún mod toca el renderizador. Lo que un mod de servidor sí puede hacer es decidir cuánto tiene que renderizar cada cliente, y ese es todo el truco: menos chunks y entidades a la vista significan menos cosas que dibujar, lo que significa más frames.

Dos límites honestos. Solo ayuda donde está instalado (tu mundo en solitario, tu propio servidor, o un servidor que lo use), no en un servidor al que solo te conectas. Y nunca empuja tu visión más allá de lo que pediste: tu propio radio de visión es el tope, QuantumHy solo lo baja.

QuantumHy

Rendimiento

Jugué la misma sesión dos veces en Hytale 0.7.0: una sin QuantumHy y otra con QuantumHy 0.4.0 con la config por defecto. Mismo mundo, mismo recorrido, mismos ajustes del cliente, mismo PC. Los frame times salen directo del cliente de Hytale, capturados con PresentMon (la herramienta de captura dentro de CapFrameX).

PC de prueba

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

Qué hice en cada parte

  • Vuelo rápido (60 s): volé en línea recta sobre terreno que nadie había cargado, mucho más rápido de lo que se puede correr, así que hay que generar y enviar chunks nuevos todo el tiempo.
  • Multitud de mobs (90 s): me detuve y spawneé unos 150 animales a mi alrededor (ovejas, vacas, cerdos, cabras, gallinas, jabalíes).
  • Efectos (60 s): me quedé en la multitud y spameé explosiones, fuego y partículas de impacto encima.
  • Vueltas (60 s): di vueltas alrededor de la multitud con efectos más ligeros todavía activos, así la cámara barre a los mobs todo el rato.
  • Vuelo de vuelta (60 s): volví volando por el mismo camino.

Resultados

ParteSin QuantumHy (media / 1% low)QuantumHy 0.4.0 (media / 1% low)Frames de más de 50 ms
Vuelo rápido65 / 7142 / 4840 → 1
Multitud de mobs75 / 21128 / 736 → 0
Efectos76 / 41121 / 790 → 0
Vueltas54 / 19115 / 5812 → 0
Vuelo de vuelta58 / 15107 / 4230 → 1
Sesión completa66 / 14123 / 5688 → 2

1% low es la media del 1% de frames más lentos, el número que dice cuánto pesan los tirones.

De dónde salen los frames

  • Sin QuantumHy el cliente dibujó una visión de 24 chunks y recibió todos los mobs a 768 bloques. Con QuantumHy se quedó en 12 chunks y mobs hasta 48 bloques (de unas 190 entidades visibles a unas 50). Ese es el intercambio: ves menos lejos y la multitud deja de costarte frames.
  • En el vuelo rápido el borde de la visión carga un poco detrás de ti, porque nadie se mueve tan rápido en survival. Correr normal (7 bloques/s) queda muy dentro de lo que el stream de chunks aguanta.
  • Una sesión por configuración, así que diferencias de menos de ~5% serían ruido. Las de arriba no lo son.

Cómo funciona

Cada pocos segundos QuantumHy cuenta las entidades en los chunks alrededor de cada jugador como medida del coste de render, suaviza esa señal y la convierte en un único factor de reducción. Ese factor mueve dos palancas a la vez:

  • El radio de visión en chunks, para dejar de transmitir terreno lejano cuando hay movimiento.
  • El radio de stream de entidades en bloques, para que el servidor deje de enviar mobs lejanos. Esto es independiente de los chunks y es de donde viene la mayor parte de la ganancia cuando miras a una multitud.

El radio no vuelve en el instante en que la zona parece vacía. El expand espera a que la carga esté calmada, al menos la mitad del disco de density cargado, que no estés volando y que el mundo no esté hitching. Mientras hay streaming o al entrar, los recortes se retienen para que no se le diga al cliente que descarte chunks que está ocupado cargando. En shrink completo el radio de entidades baja al suelo en una pasada.

Funciones

  • Radio de visión en chunks adaptativo guiado por la densidad local de entidades, limitado a tu propio radio
  • Radio de stream de entidades adaptativo en bloques, la gran palanca en zonas llenas de mobs
  • Freeze de expand hasta que carga, cobertura y MSPT estén calmados (sin diente de sierra 6↔13)
  • Opt-out persistente por jugador mediante /q optimize off, sin afectar a los demás jugadores
  • Override global opcional de LOD de entidades, desactivado por defecto, para admins que quieran un culling más fuerte en todo el mundo
  • Suavizado de densidad para que la visión de quien se mueve no oscile
  • Toma de control automática de LeanCore para que los dos mods nunca peleen por el radio de visión
  • Registro detallado opcional en el servidor que explica cada decisión por jugador en cada pasada (off por defecto)
  • Comprobación de update al arrancar, solo para operadores o durkz.quantumhy.admin (opt-out con checkForUpdates)
  • Límite de la distancia de dibujado del cliente para que el cliente deje de dibujar lo que el servidor dejó de enviar
  • Alivio para clientes saturados: un cliente que se queda atrás recibe un radio menor y un envío de chunks más suave
  • Presupuesto de efectos lejanos para partículas y sonidos 3D; los efectos cerca de ti siempre pasan
  • Atención a la memoria de LeanCore: radio menor mientras LeanCore informa el heap ajustado
  • Extras opcionales, desactivados por defecto: menos updates de posición para entidades lejanas, merge de ítems más amplio bajo presión del servidor

Instalación

  1. Descarga QuantumHy-0.4.0.jar desde la pestaña Files de CurseForge
  2. Coloca el JAR en la carpeta mods/ del servidor, o en solo Windows: %AppData%\Hytale\UserData\Mods
  3. Inicia el servidor. La config se crea como QuantumHy.json en la carpeta de datos del plugin

Comandos

/q status
/q optimize on
/q optimize off
/q help

Aliases: /quantumhy, /qhy. Los jugadores solo ven su propio estado de optimización en /q status; los admins y la consola del servidor ven el estado completo del runtime.

Config

La configuración del servidor vive en QuantumHy.json, creado en el primer arranque. Las preferencias de los jugadores se guardan en PlayerPreferences.json. Los valores por defecto funcionan de entrada: sin tope fijo de visión, adapta solo cuando hay aglomeración. Pon targetClientViewRadius por encima de 0 para cambiar distancia de visión por FPS en todas partes. Pon checkForUpdates en false para saltar la comprobación de versión al arrancar. Referencia completa de claves: documentación.

Permisos

  • durkz.quantumhy.admin: recibir avisos de update in-game y ver el /q status completo. Los operadores del servidor lo heredan a través de *.

Usándolo con LeanCore

Si también ejecutas LeanCore, QuantumHy resuelve el solapamiento por ti. Ambos pueden ajustar el radio de visión del cliente y solo uno debe hacerlo, así que QuantumHy lo toma: al arrancar detecta LeanCore, apaga la gobernanza de radio de visión de LeanCore y pasa a controlar el radio él mismo. LeanCore sigue con todo lo demás (radio de simulación, throughput de chunks, memoria). No hace falta tocar la config de LeanCore. Pon leanCoreTakeover en false para dejar a LeanCore en paz, o yieldToLeanCoreViewRadius en true para que LeanCore conserve el radio de visión.

Recomendado

  • En solitario o tu propio servidor: deja los valores por defecto. Solo pierdes distancia de visión cuando hay aglomeración real.
  • Quieres FPS en todas partes: pon targetClientViewRadius entre 12 y 16 para limitar la distancia de visión incluso en campo abierto.
  • Prefieres los límites originales del servidor: usa /q optimize off. Tu elección persiste después de reiniciar.
  • Activa verboseLog solo para diagnosticar; por defecto está off.
  • Deja checkForUpdates activo salvo que no quieras el aviso de JAR nuevo para operadores.

Limitaciones conocidas

  • QuantumHy no puede leer los FPS del cliente. Responde a la densidad local de entidades, al estado del streaming, a la presión de entidades visibles y al MSPT del servidor.
  • /q optimize off desactiva los ajustes de visión y stream de entidades de ese jugador. Los controles globales activados explícitamente por un admin todavía afectan al mundo.

Licencia

Licencia MIT

Para dueños de servidor

¿Necesitas permisos, comandos y config?

La guía completa cubre cada permiso, comando de admin, ejemplos LuckPerms y todas las opciones de configuración.

Leer documentación del servidor