Jump to content

El Dedicado, la Consola Remota y el Bot de Discord


Sire

Publicaciones recomendadas

  • Arquitecto

Vamos a ver, simplificadamente, como funciona un servidor de Dedicado y qué herramientas hay para gestionarlo.

El Servidor Dedicado (máquina y programa)

Es una aplicación dserver.EXE haciendo de servidor del juego IL-2 Sturmovik Great Battles en una máquina conectada a Internet.
Los jugadores, en sus respectivas máquinas, corren un programa cliente junto con el juego que se conecta al servidor e intercambia datos.

image.png.7929e80bd2542b642dbd320e79a6a53b.png
Aspecto del servidor dedicado corriendo La Batalla de Inglaterra

Hay que evitar confusiones cuando usamos la palabra "servidor" pues se utiliza tanto para referirnos la máquina como al programa.
Igualmente "dedicado" es un término confuso porque la máquina puede correr otros programas en paralelo, por ejemplo un programa servidor de IL-2 y otro de DCS. Dedicado se refiere a que se centra en la tarea de gestionar el escenario y no a la parte jugable, pero no necesariamente en exclusiva.

Volviendo al término servidor, para ser muy claro, a partir de aquí voy a referirme al programa como DSERVER, mientras que al equipo que lo corre la lo llamaré la máquina.

Para que el DSERVER funcione necesita obligatoriamente dos cosas:

  1. Un archivo *.mission o *.msnbin, con sus respectivos archivos acompañantes y su estructura de carpetas.
  2. Un archivo de configuración *.sds, con los parámetros de inicialización del dserver como por ejemplo: "la misión que tienes que cargar se llama mision1.mission", "la contraseña es 'picopato' " o "no se puede modificar el fuel".

image.png.45d3b8d030058b36fbc28c5a7a9668e6.png

Ejemplo de parte de los archivos que conforman La Batalla de Inglaterra

image.png.83ccdb36a5dbb074620cfde20c61bcc2.png
Ejemplo del archivo SDS de configuración de La Batalla de Inglaterra. Nótese que el nombre puede se cualquiera que se desee.

Por su parte la MÁQUINA tiene que tener unos puertos abiertos y accesibles desde Internet, lo que se conoce como enrutado dentro de su propia red.

Existe un servidor no dedicado.

Cuando desde dentro del propio "juego" alguien va a Multijugador, elige la opción de Crear Servidor y juega con los amigos esta corriendo en su máquina un servidor + un cliente.
Nótese que para que funciones previamente hay que 1) abrir puertos y enrutarlos, 2)debes tener los archivos de la misión en tu ordenador y 3) previamente a iniciarlo tiene un menú de configuración de parámetros de juego, lo que esta generando (sin que te des cuenta) un SDS. ¿Ves?, exactamente lo mismo que con el dedicado.

Por lo tanto al DSERVER se le llama servidor dedicado porque se dedica sólo a hacer de servidor (que no exclusivamente).

La Consola Remota.

La Consola Remota es un cliente específico para conectarse al DSERVER y controlarlo remotamente. También se le podría llamar "terminal".

image.png.36bac95bc96c53af165d73d130aadaf9.png

Aspecto general de la Consola Remota. ROF en su título hace referencia al Rise Of Flight, el juego para la que fue originariamente diseñada en 2009. 

La consola es muy pedestre, con un protocolo de comunicaciones muy áspero. Comandos de palabras clave, contestados con códigos en un formato muy áspero.

Por ejemplo, le pedimos el listado de jugadores en ese momento:

image.png.d9321db4311ab1ff1513d9dc6f45335c.png

Todos esos caracteres extraños, como "%2cn", son caracteres de control para representar, por ejemplo, una barra vertical, pero la consola lo vierte en bruto y es casi ininteligible para un humano.
Es decir la consola no está pensada para ser usada directamente de forma asidua.

Capacidad de la Consola

Los comandos que puede recibir la consola están previamente determinados y cerrados, no son muchos pero sí muy útiles. Entre otros permite enviar mensajes al chat del juego, indicar el SDS a ejecutar, reiniciar el dserver y ordenar la ejecución de determinados comandos (MCU) dentro del juego (la misión).

Para no complicar las cosas sólo quiero indicar que la Consola solo introduce datos en el dserver (IN). La salida (OUT) de datos tiene que hacerse desde los archivos de registro (LOG) que el dserver va generando. Así, por ejemplo si un administrador quiere chatear con los usuarios dentro del juego necesita introducir su texto por la consola y buscar las respuestas en otro lugar, los archivos de registro. Sí, una ? que mejor requiere de un programa más inteligente que unifique las dos cosas. Por eso, desde mi punto de vista, la consola no es un programa para gestionar todos los días.


IL2Bot

Para mantener la sencillez de este post voy a señalar nada más que una herramienta para simplificar el uso de la Consola Remota a la que tengo echada el ojo. Su nombre es il2_discord_bot y yo lo he abreviado como IL2Bot.

image.png.e96f630d5275859abbd3264218bf6e37.png

Es una herramienta escrita en Python con unos pocos scripts. Como la mayoría de los programas modernos se basa a su vez en una serie de "módulos" ya escritos, enlazándolos y adaptándolos a la necesidad.

image.png.ac74f2546e1d898b420a31178202ff33.png
 

  • discord_bot.py, que es el script que crea el bot en la máquina y gestiona su presencia y funcionamiento Discord
  • remote_console.py, que es el script que se encarga de traducir las comunicaciones HACIA la consola remota
  • remote_console_actions.py, que es el script que "traduce" las respuestas DESDE la consola remota (tanto de bit y bytes y esas cosas como a un formato más legible por humanos).

Ventajas.

  • Es código abierto y completamente configurable.
  • Las comunicaciones entre la máquina y Discord están cifradas.
  • Los usuarios permitidos se configuran por una lista blanca.
  • Sus usuarios no requieren conocer la consola para nada.
     

Inconvenientes.

  • Ponerlo en marcha, que no es demasiado complicado.
  • Requiere Python instalado en la máquina y los módulos de sus dependencias, pero su impacto en el rendimiento (calculo) es mínimo.
  • Seguridad. Hasta donde yo sé es seguro (aunque no soy ningún experto). Cuando se crea el bot y se le vincula con el Discord se le indica el nivel de acceso que se le puede dejar en un mínimo absoluto.
  • ¿Incompatibilidad o interferencia con otros programas gestores como el il2-Commander? Actualmente no se hasta que punto. Habría que hacer pruebas. Pero es evidente que si IL2-Commander tiene la tarea de que siempre esté funcionando la Misión A y IL2Bot indica al dserver que inicie la Misión B, hay va a haber un conflicto y ganará el más insistente (en este caso el IL2-Commander). ¿Qué funciones se quedan por cubrir? ¿Qué soluciones se le pueden dar? Para responder eso hoy, antes tendría que hacer pruebas.
     

Más información:
El hilo del IL2 Bot
Su código y documentación en GitHub

  • Like 2
Enlace al comentario
Compartir en otros sitios web

Unirse a la conversación

Puedes publicar ahora y registrarte más tarde. Si tienes una cuenta, conecta ahora para publicar con tu cuenta.

Guest
Responder a esta discusión...

×   Pegar como texto enriquecido.   Restaurar formato

  Sólo se permiten 75 emoji.

×   Tu enlace se ha incrustado automáticamente..   Mostrar como un enlace en su lugar

×   Se ha restaurado el contenido anterior.   Limpiar editor

×   No se pueden pegar imágenes directamente. Carga o inserta imágenes desde la URL.

×
×
  • Crear nuevo...