Reimplementación del servidor de Spiral Knights para ejecutar el cliente contra un servidor propio. El objetivo es reproducir el comportamiento vanilla mediante contratos del cliente y pruebas de protocolo, combate y escenas. El proyecto está en desarrollo y todavía no alcanza paridad 1:1.
Repositorio: ffxxx00/spiral-knights-server.
El repositorio Git contiene fuentes y documentación; no descarga el juego ni Java. Para preparar un checkout, consultar README_GITHUB.md. Las etapas iniciales se recuperaron de respaldos y están identificadas en HISTORY_RECONSTRUCTION.md.
El mapa de sistemas del cliente organiza contratos, dependencias y próximos refactores. Las herramientas de análisis generan fuentes descompiladas e índice local por versión, con hashes y caché. Los resultados derivados del cliente quedan fuera de Git; se versionan las herramientas propias y la evidencia escrita para el proyecto.
Esta copia local usa la versión 20261006114613. Tiene recursos, mapas,
bibliotecas, Java del cliente y JDK propios. Las actualizaciones de Steam no
modifican estos archivos. Todo el desarrollo se realiza aquí; no sincronizar
los recursos con la instalación oficial. frozen-version.json registra las
huellas SHA-256 de las bibliotecas y datos principales.
Empezá por LEEME_PRIMERO.md. El manual completo en HTML abre con doble clic y funciona sin conexión. El índice de documentación incluye guías de anfitrión Windows, cliente, LAN/VPN, firewall, operación, diagnóstico, entrega y referencia técnica. La documentación se revisó el 11 de octubre de 2026.
- Abrir
start_server.batpara iniciar el servidor en TCP 47624. - Abrir
launch_client.batpara conectar a localhost y elegir el caballero. - Ejecutar
test_server.batpara compilar y verificar el protocolo.
Otro puerto: start_server.bat 48000 y
launch_client.bat localhost 48000 HeroKnight.
El servidor avisa si el puerto está ocupado; no cierra otros procesos.
Al conectar a localhost, 127.0.0.1 o ::1, el lanzador activa automáticamente el modo local. Haven y Training Hall actualizan estado cada 20 ms (50 Hz). El cliente envía controles con intervalo de 20 ms y elimina el colchón de renderizado anterior de 200 ms en Haven y 400 ms en Training Hall. El servidor negocia un presupuesto de 120 mensajes/s para evitar que el límite original de 10 mensajes/s acumule controles y ACK atrasados. El personaje local sigue directamente su posición predicha: al soltar la tecla, se elimina el avance visual residual producido por el suavizado original. La velocidad de movimiento permanece en 5 unidades/s.
Los ajustes del cliente viven en client-local/: el lanzador genera un overlay
de clases a partir de la biblioteca y comprueba su SHA-256. No cambia
los JAR, recursos, velocidad del personaje ni controles. Para usar la política
original del cliente en loopback: launch_client.bat localhost 47624 HeroKnight -NetworkMode.
En conexiones LAN/VPN se conserva automáticamente el buffer original.
Después de cambiar de modo, reinicia el cliente; después de cambiar la cadencia,
reinicia también el servidor.
El modo local reduce esperas de protocolo; no garantiza 0 ms físicos: siguen existiendo el tick, el procesamiento y el tiempo de renderizar cada fotograma.
La precarga local ahora se reparte en tandas con presupuesto de 8 ms por etapa,
en vez de 50 ms. Las llamadas de limpieza de memoria usan recolección concurrente
para reducir tirones. Se conservan los recursos completos y la calidad gráfica
seleccionada por el usuario. Mediciones en validation/render-optimization-notes.md.
Los lanzadores resuelven todo desde su propia carpeta, incluidos Java y JDK.
El cliente utiliza el backend FFM incluido en el LWJGL
(org.lwjgl.system.memoryBackend=ffm). Reemplaza los accesos obsoletos de memoria
sun.misc.Unsafe por java.lang.foreign de Java 25. Los avisos siguen habilitados.
Puedes mover la carpeta completa. profile/preferences contiene las opciones
locales del cliente y no comparte el Registro de Windows con el juego oficial.
El perfil comienza nuevo. El servidor conserva server/server.properties.
El cliente abre directamente, sin Steam. El lanzador crea full.dat antes de
iniciar: la rutina ProjectXApp.Ha() de esta versión comprueba ese marcador y
omite la descarga de recursos por Getdown. getdown.txt solo contiene metadata
local de versión; no tiene un origen de actualización oficial.
Se actualizaron los nombres de métodos y campos del emulador contra la biblioteca del cliente, incluida la serialización, objetos y RPC, actores, input, inventario, configuración de escenas, puertas, preferencias del jugador y tiempos de keepalive. Se conservó el protocolo y el comportamiento del emulador.
test_server.bat compila y termina con
PRIVATE SERVER WORLD-ENTRY PROTOCOL TEST PASSED.
La prueba cubre autenticación con la versión, inventario y modelo,
Haven, movimiento a velocidad 5.0 y rotación, ida y vuelta al Training Hall,
armas, ataque, carga, defensa, esquiva y shield bash, sincronización de dos
clientes, cadena y cadencia de deltas y keepalive con timestamps válidos.
El registro está en validation/test-protocol.log. También se probó el cliente gráfico: autenticó, recibió Haven y comenzó a enviar input al servidor local. Ver validation/compatibility-notes.md.
validation/server-before-adaptation.zip conserva las fuentes anteriores.
Los registros compile-full.log y compile.log documentan el fallo original;
no representan el estado actual.
El Training Hall incorpora daño real contra sus 11 cubos originales, con espada,
proyectil de Polaris y bomba cargada de Ash of Agni. El controlador original gobierna
combos, carga, recuperación y controles. test_server.bat también ejecuta
VANILLA COMBAT SIMULATION TEST PASSED; evidencia en
validation/test-authoritative-combat.log. Ver combate vanilla.
Todavía faltan estados alterados, IA, daño al jugador, reacciones, autoapuntado,
desniveles y validación de todas las armas para afirmar paridad 1:1.
No hay progreso persistente.
El arsenal local reúne las 374 espadas, pistolas y bombas creables del catálogo
del cliente, a nivel 10, más cinco piezas de equipo. El rango máximo es 10-3,
con los permisos nativos de equipo de 2 a 5 estrellas habilitados.
Se pueden equipar y desequipar desde el cliente; yelmo y armadura usan sus ranuras
originales y el modelo de combate evita duplicar el escudo y el arma del sprite.
Combuster cargada genera cinco explosiones secundarias con daño real. La cadencia
de esa ráfaga usa compatibilidad local de 100 ms y aún necesita comparación vanilla.
Verificación actual: validation/test-training-equipment.log.
El movimiento resuelve paredes, tiles y objetos del mapa en Haven y
Training Hall, y las formas de los cubos vivos. Los cubos muertos dejan de bloquear.
Las balas usan su propia máscara de colisión y se detienen contra las paredes
que les corresponden; una barrera baja puede bloquear al jugador y permitir disparos.
Pruebas de colisión y permisos: validation/test-clearance-collision-full.log.
El feed social tampoco está implementado; sus paneles pueden mostrar errores. Para LAN/VPN consulta server/README_LAN.md.
El plan del servidor organiza la adaptación del motor, la validación con telemetría y los sistemas propios de Spiral Knights. Ver también la evaluación de Clyde y los casos locales de telemetría.