
Un cliente nuevo, hecho desde cero
Hasta ahora, el juego en tu pantalla ha sido el cliente original: un programa de Windows de 2013, sellado. Podíamos construir un servidor con el que hablara —eso ha sido la mayor parte de este proyecto—, pero no podíamos cambiar ni un píxel de lo que hace. Dibuja una caja de 1024×768. Tiene las ventanas con las que salió. Si algo está mal, se queda mal.
Desde esta semana hay un segundo cliente, y escribimos cada línea.
Qué es
Un programa nativo, escrito en C++ moderno, que corre en Linux sin Wine ni ninguna capa de compatibilidad. Hace tres cosas:
- Lee los archivos del propio juego. Apúntalo a una instalación normal y carga los modelos, mapas, texturas, sonidos, diseños de ventanas y tablas exactamente como lo hace el cliente original. Nada del juego original está copiado en él ni se redistribuye con él; toma prestada la instalación que ya tienes.
- Habla el protocolo real. Inicia sesión en los mismos servidores, en el mismo idioma que el cliente original, así que juega en el mismo reino, junto a gente que usa el viejo.
- Dibuja todo por sí mismo. Un renderizador de modelos con esqueleto para las mallas y animaciones del juego, un renderizador de terreno y agua para sus mapas, un sistema de partículas y efectos para el arte de sus hechizos, y OpenAL para el sonido y la música.
La interfaz es de lo que más orgullosos estamos. Las ventanas del juego se describen con diseños XML y se manejan con scripts de Lua 5.1. El cliente nuevo ejecuta esos diseños y esos scripts sin modificarlos, sobre un motor de interfaz escrito para comportarse como lo hacía el original. Cuando una ventana se ve bien es porque se está siguiendo la descripción que el propio juego hace de ella, no porque alguien la haya redibujado a ojo.
Para qué molestarse
Porque un cliente que es tuyo es un cliente que puedes mejorar. Todo lo que viene en las siguientes publicaciones es algo que no habríamos podido hacer con el original:
- la ventana llena la pantalla que tengas, a cualquier tamaño (siguiente publicación);
- todo el juego es editable —mapas, modelos, ventanas y tablas de datos— con editores construidos sobre el mismo código con el que dibuja el juego;
- el servidor puede enviar un mapa corregido a cada jugador que se conecta, firmado para que no se pueda falsificar;
- los sistemas que el cliente original solo esbozó —talentos, el zodiaco, mascotas— se pueden terminar bien en ambos extremos del cable.
La regla con la que trabajamos
Cada formato y cada mensaje está documentado con su evidencia. El repositorio contiene páginas de notas sobre cómo están organizados los archivos de mapa, qué significa cada paquete, de qué dirección del programa original viene cada comportamiento y qué sesión capturada lo confirmó. Donde teníamos evidencia, la seguimos; donde tuvimos que adivinar, las notas lo dicen. Es más lento que adivinar. También es la razón por la que el cliente nuevo puede iniciar sesión, caminar, pelear, saquear y hablar con el mismo servidor sin que ninguno de los dos note que algo es distinto.
Qué no es, todavía
Preferimos ser exactos a ser emocionantes:
- Hoy corre en Linux. Todavía no se ha hecho una versión para Windows. Revisamos el código y listamos lo que se interpone —sockets, algunas rutas de archivos, los scripts de compilación—, y es una lista finita, pero no está terminada.
- No es lo que instala el launcher. Los jugadores de la beta cerrada siguen con el cliente original, y seguirán así hasta que el nuevo se haya ganado el derecho de reemplazarlo.
- No está terminado. Algunas ventanas están completas, otras parciales, y el registro de cambios al final de esta tanda dice cuáles son cuáles.
Qué sigue
Las próximas publicaciones recorren el cliente nuevo pieza por pieza: cómo llena tu pantalla, los editores, lo que ahora podemos cambiar en un servidor en vivo, y los sistemas de progresión —talentos, el zodiaco y mascotas— que por fin tienen un servidor y un cliente detrás. Empieza por la pantalla.







