Un cliente de monopd es relativamente sencillo de escribir: el servidor implementa todas las reglas, el nombres de las calles o islas (hay dos juegos por defecto: el clásico Monopoly® o Atlantic, pero se pueden definir más) y se comunica con los clientes por medio de un sencillo protocolo orientado a caracter basado en XML pero, a pesar de esto, nadie se anima a escribir un cliente para Windows.
Hace casi un año, en LILO, asociación de estudiantes de la UAH, quisimos montar un servidor de monopd pero nos echó para atrás que no hubiera un cliente para la plataforma mayoritaria y la idea quedó aparcada en la bandeja de pendientes hasta nuevo aviso. Y el aviso vino hace unas semanas.
El 16 de Enero, coincidiendo con los primeros exámenes de este año, leí en freshmeat el anuncio de la publicación de la versión 0.3.2 de GtkAtlantic, el cliente GTK 1.2.x de monopd. Como todo el mundo sabe, la época de exámenes se caracteriza por ser el momento en que uno desempolva todas esas viejas ideas de proyectos que tuvo alguna vez y encuentra las ganas para ponerse con ellas (por mucho que las descartásemos en su momento por inútiles o estúpidas :-)) así que, retomando la idea de monopd y el cliente para Windows, una tarde lluviosa cogí la nueva versión de GtkAtlantic y lo porté... Y lo volví a dejar aparcado por falta de tiempo y por falta de un MS Windows donde hacer las pruebas definitivas
... Y es que estoy en la extraña situación de no conocer a nadie que sea usuario de MS Windows (al menos de entre el círculo de conocidos con los que puedo hablar de informática sin pringar) y que me pueda hacer de betatester. Uso MinGW y la compilación cruzada desde Linux para programar en Windows y sólo tengo un antediluviano Windows 95 en una no menos antediluviana máquina donde comprobar si aquello funciona (muy leeeeento, eso sí).
En fin, que ahora que acabaron los exámenes me gustaría probar que el port funciona correctamente antes de publicarlo o mandar los cambios al autor de GtkAtlantic, y como llevo semanas y no consigo que nadie quiera probarlo, hago un llamamiento a todos los Libertonianos con arranque dual para que prueben si al menos funciona. En Windows 9x debería funcionar (es lo que he testeado), así que me interesa probar en NT, 2000 y XP.
Podéis obtener el instalador para Windows en los siguientes enlaces:
El resumen MD5 del binario es "7a96667058dcfe6a3880065e354be6ff" y pesa unos 2.5 MB. En el paquete vienen, aparte del gtkatlantic.exe y demás, las bibliotecas necesarias para hacerlo correr. Se incluye un desinstalador: todo creado con ayuda de los fantásticos "Nullsoft Scriptable Install System" y "HM NIS EDIT".
Los pasos para portar GtkAtlantic a MS Windows han sido triviales y cosa una tarde. Lo único con un poco de mala leche ha sido apañar un extraño bug que parece que tiene el GtkText en las Gtk 1.3.x para Windows (las mismas que usa Gimp) que provocaba fallos de segmento si empleábamos el hack original que simulaba scroll automático en la ventana de chat, pero GtkText nunca ha funcionado bien ni tan siquiera en Linux así que era de esperar algo así.
Por lo demás, reescribir la parte de red es sencillo: unos cuantos cambios menores para adaptarla a WinSocks: no utilizar read() ni write() sino recv() y send(), closesocket(), el tipo SOCKET, inicialización y finalización de la capa de sockets y considerar que los errores no se notifican por errno.
Igual de fácil es la parte que maneja los archivos: ahora se buscan los datos del programa en el mismo directorio que está el binario y el directorio a partir del que se busca la configuración de cada usuario se lee de la clave de registro "Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\Personal" (En Windows 9x apunta a "Mis Documentos", pero espero que en Windows NT apunté a "Windows\Profiles\fulano\Personal").
Y eso es todo: se buscan betatesters con Windows para programa GPL. Es lento, es feo, pero yo no tengo la culpa (reclamaciones dirijansé a Gtk). Si alguien me puede echar una manita...