Isleward: Un juego RPG opensource para Linux

Ya os he explicado varias veces mi afición a los juegos retro, muestra de ellos son las entradas en la sección correspondiente en la web. Hoy os vengo a hablar de un juego que me ha sorprendido y que he conocido recientemente, este es Isleward. Además de ser un proyecto muy interesante este sigue la filosofía de desarrollo de opensource, lo podemos tener en modo servidor, sin tener que utilizar los servidores oficiales y así poder configurarlo a nuestro gusto. Ergo al tener el código fuente, lo podemos traducir, modificar y adaptarlo a nuestras necesidades, más si dominamos javascript, lenguaje en el que está construido. Como sabéis me gusta darle vueltas a las cosas, por lo que también os explicaré mi experiencia para instalaro en un servidor VPS con Ubuntu 18.04, utilizar un proxy inverso, esta vez con Apache e instalarle un certificado SSL con Let’s Encrypt. Pero veamos un poco en que consiste este interesante juego.

Acceso a Isleward

Isleward un juego RPG

Básicamente Isleward, aparte de todas las características técnicas,  se engloba dentro los considerados RPG, esto es, un juego de rol on-line. La idea es que compartamos buenos momentos junto a nuestros amigos y familiares en este mundo fantástico virtual con gráficos de 16 bits, desde nuestro navegador web favorito. Al principio debemos escoger entres diferentes tipos de personajes o «espíritus». Uno es el búho para los lanzadores de hechizos, un oso para los luchadores que utilizan la fuerza y los línces que son sigilosos desde las sombras.

Creación del personaje

Una vez accedemos por primera vez, tenemos a nuestra disposición un pequeño tutorial (de momento todo el juego está únicamente en inglés), donde nos guiará a través de los primeros pasos en el juego. Las teclas para moverse WASD, que suelen ser las más utilizadas. En el juego exiten diferentes ubicaciones, que para ver su interior debemos acceder a ellas con nuestro personaje, como por ejemplo las posadas.

Muestra del la pantalla del juego (click para ampliar)

Justo en la parte inferior nos aparecen los mensajes del tutorial. En la parte inferior derecha tenemos el panel donde podemos acceder al inventario, a los sets del personaje (donde le podemos «vestir» y añadirle items, además de ver su defensa y ataque), en «craft items» podemos crear nuevos objetos, en «Pasive Tree» el arbol de habilidades del personaje, que iremos desbloqueando a medida que vayamos avanzando en el juego.  También podemos consultar nuestra reputación, ver los jugadores conectados,  la tabla de clasificación, la ayuda y por último el menú del juego.

Si necesitamos atacar algo, lo debemos seleccionar con el cursor y presionar la barra espaciadora para atacar automáticamente cuando el objetivo esté dentro del alcance, lo que generalmente significa cuando está en el cuadro adyacente.

Realmente el juego se nota que todavía esta en desarrollo, pero tiene esa magia que le hace muy interesante. Sobre todo para personas que les gusten este tipo de juegos. ¿Te animas a echar unas partidas? ¿Y a contribuir con el código o con la traducción?

Para accedea al proyecto ubicado en GitLabIsleward id GitLab

Página oficial del juego:  play.isleward.com

Wiki del proyecto: Wiki Isleward

Instalar Isleward en Ubuntu 18.04

Ya os he explciado que lo he instalado en un VPS con Ubuntu 18.04, su instalación no es muy complicada. Podemos ver las inistrucciones para GNU/Linux en la web oficial:  Installation and usage in Linux

En mi caso he tenido que instalar algún paquete adicional para que todo funcionase. Instalamos primero las dependencias:

sudo apt-get install git nodejs npm

Como os he dicho también he necesido instalar:

sudo apt-get install node-gyp nodejs-dev libssl1.0-dev

Antes de pasar a clonar el proyecto ubicado en GitLab, he creado un usuario dedicado, que será el que usaré para operar con este juego desde el servidor:

useradd -m -c "isleward user" -s "/bin/bash" -G sudo isleward
passwd isleward

A partir de ahora trabajamos con este usuario:

sudo su - isleward

Clonamos el proyecto:

git clone https://gitlab.com/Isleward/isleward.git

Accedemos a la carpeta recién instalada e instalamos dependencias utilizando npm, ya que utiliza Nodejs para funcionar.

cd isleward/src/server
npm install

Una vez instaladas ya podemos arrancar el servicio. Pero antes de eso vamos utilizar SCREEN, para poder acceder y operar en la consola.

sudo apt install screen

Lo ejecutamos y arrancamos:

node index.js

Con un resultado similar a este:

isleward@servsocrates:~/isleward/src/server$ node index.js
(node:24430) Warning: N-API is an experimental feature and could change at any time.
Server: ready
(M estuary): Ready
(M sewer): Ready
(M cave): Ready
(M fjolarok): Ready

Para salir de SCREEN debemos utilizar la combinación «CTRL+A+D» y para volver a acceder screen -r

OK, pues con esto ya lo tenemos funcionando sobre el puerto 4000

COMMAND   PID     USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
node    13474 isleward   13u  IPv6 94939490      0t0  TCP *:4000 (LISTEN)
Como siempre me ha parecido muy feo acceder por el puerto a un servicio, vamos a configurar un proxy inverso con Apache. Para ello lo debemos tener instalado más una serie de módulos adicionales:
sudo apt install apache2
sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod proxy
sudo a2enmod proxy_http
Ahora creamos el respectivo fichero de configuración en /etc/apache2/sites-available/isleward.bitsandlinux.com.conf, con el contenido:
<VirtualHost *:80>
    ServerName isleward.bitsandlinux.com
 
    RewriteEngine On
    RewriteCond %{REQUEST_URI}  ^/socket.io            [NC]
    RewriteCond %{QUERY_STRING} transport=websocket    [NC]
    RewriteRule /(.*)           ws://localhost:4000/$1 [P,L]
 
    ProxyPass "/" "http://127.0.0.1:4000/"
    ProxyPassReverse "/" "http://127.0.0.1:4000/"
</VirtualHost>
Añadimos la configuración y reiniciamos Apache
sudo a2ensite isleward.bitsandlinux.com
sudo systemctl restart apache2
Recuerda que es imprescindible que añadas el registro «A» en tu proveedor de DNS con el registro del nombre y la IP del servidor. De esta manera todas las peticiones que lleguen al servidor por el puerto 80 con el nombre «islesward.bitsandlinux.com» se irán al 4000.

Configurar Let’s Encrypt

Para poder habilitar la conexión HTTPS, debemos instalar la herramienta Certbot:
sudo apt-get install python-certbot-nginx
De esta manera ya podemos utilizar la herramienta:
sudo certbot --apache
Nos hará una serie de preguntas y al final listará los proyectos web que ha detectado y debemos seleccionar cuál de ellos será al que se le añadirán los certificados. Todo bastante fácil la verdad. Los paquetes de Certbot vienen con un trabajo cron o un temporizador systemd que renovará los certificados automáticamente antes de que caduquen. No necesitaremos ejecutar Certbot nuevamente, a menos que cambiemos su configuración. Puede probar la renovación automática de los certificados ejecutando este comando:
sudo certbot renew --dry-run
La herramienta añadira la tarea programada en algún de los siguientes lugares:
/etc/crontab/
/etc/cron.*/*
systemctl list-timers
Podemos comprobar el certificado desde la siguiente URL: https://www.ssllabs.com/ssltest/ Y eso es todo, si estáis interesados también podéis visitar como queda todo en: https://isleward.bitsandlinux.com

Fuentes consultadas

StackOverflow – WebSockets and Apache proxy : how to configure mod_proxy_wstunnel?

Documentación Apache – Redirecting and Remapping with mod_rewrite