Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Jugando Atlantic en MS Windows

jorginius's Diary
Por jorginius
departamento Atlantic-o-Monopoly? , Sección Diarios
Puesto a las Sun Feb 8th, 2004 at 05:14:31 PM CET

El servidor monopd nos permite mantener partidas de juegos similares a Monopoly® en red. Es software libre, su consumo de recursos es modesto y existen al menos una docena de servidores públicos en Internet, registrados en el meta servidor, para que organicemos nuestras propias partidas con nuestros amigos o juguemos con personas de todo el mundo... Pero sólo bajo Unix. Mientras que en Unix contamos con dos clientes, GtkAtlantic y Atlantik (ambos libres), no existe un cliente de monopd para MS Windows: el viejo Oligopoly está discontinuado y la página del proyecto así como las antiguas versiones han desaparecido de la faz de Internet.

 


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...

< Traducción de la interfaz de Bugzilla (1 comments) | ¿Por qué actualizar a KDE 3.2? (32 comments) >
Enlaces Relacionados
· Freshmeat
· monopd
· GtkAtlantic
· Atlantik
· Oligopoly está discontinuado
· LILO, asociación de estudiantes de la UAH
· freshmeat
· MinGW
· GtkAtlantic 0.3.2 para Win32 (FTP)
· GtkAtlantic 0.3.2 para Win32 (HTTP)
· Nullsoft Scriptable Install System
· HM NIS EDIT
· More on jorginius's Diary
· Also by jorginius

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Jugando Atlantic en MS Windows | 9 comentarios (9 temáticos, editoriales, 0 ocultos)
Gnuwin2 (none / 0) (#1)
por subbofher a las Sun Feb 8th, 2004 at 07:55:51 PM CET
(Información Usuario)

Contacta con la gente de Gnuwin2. Así hasta podrían incluirlo en su cd.
Sinó todo sería que te instalases un Vmware, Bochs o plex con un w98 dentro.



A Windows 9x lo tengo cubierto (none / 0) (#2)
por jorginius ("jorginius" en Google Mail) a las Sun Feb 8th, 2004 at 08:48:27 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Porque tengo un 486 con Windows 98 aún por ahí, pero no tengo ni cpu ni licencia para meter un MS Windows 2000 en WMware o en Bochs (o en QEMU).

En fin, sólo quiero saber si chuta en NT. Da la puñetera casualidad de que la gente que la mayoría de gente que conozco que puedo pedirles que le echen un ojo son usuarios de Linux (o de FreeBSD) y yo no tengo con qué probarlo.

[ Padre ]


 
Algunos cambios y nuevo md5 (none / 0) (#3)
por jorginius ("jorginius" en Google Mail) a las Sun Feb 8th, 2004 at 08:53:38 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Alguien se ha quejado (albricias, me hacen caso) que el botón del centro del ratón para hipotecar no chuta, así que he cambiado el código para que sea "botón izquierdo + ctrl", ¿qué por qué no hay un atajo de teclado o una opción en un menú para eso?, pues... Quejas al autor original.

El nuevo MD5 del instalador es "823b856b0d248f7ca8b3d661ebea2797"



 
Abusando un poco del autor. (none / 0) (#4)
por jamarier a las Tue Feb 10th, 2004 at 11:15:24 AM CET
(Información Usuario) http://barbacana.net/blog/

Mis experiencias con Atlantic son pocas y tristes (un bug que tenía mi cliente me impedia saber cuando dinero me quedaba B-( )

Pero me interesa bastante todo lo que es el proceso de la compilación cruzada. Siguiendo enlaces a partir de MinGW he encontrado varios documentos para hacer instalar y hacer funcionar las utilidades. Pero no he encontrado mucha información sobre otros temas relacionados. Abusando un poco del autor ¿sería tan amable de contarnos las cosas con un poco más de detalle? Por ejemplo:
  • Entiendo que las librerías GTK se pueden usar ¿y las QT? ¿Que otras librerías (no) podemos usar? Pensando en ncurses, o alsa o vete tu a saber.
  • Para hacer el más mínimo programa, es necesario tener instalado previamente en MinGW en el equipo Windows ¿ocupa mucho?
  • ¿Qué ventajas/inconvenientes tiene trabajar así respecto a usar otras librerías como puede ser wxWindows (¿se llama así?) o SDL que tienen en ambas plataformas?
  • ¿Existen otros sistemas de compilación cruzada?


Vamos, lo que estoy pidiendo no es tanto una receta sobre compilación cruzada sino más bien un poco de conocimiento base para entender todo este proceso.

-----
- Porque mañana será un gran día.



MinGW y Cygwin (none / 0) (#6)
por jorginius ("jorginius" en Google Mail) a las Tue Feb 10th, 2004 at 03:16:39 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Mis experiencias con Atlantic son pocas y tristes (un bug que tenía mi cliente me impedia saber cuando dinero me quedaba B-( )

Bueno, te puedo aseguro que ni a GtkAtlantic ni a Atlantik les pasa eso ahora :-). Atlantik es muy chulo y lo puedes econtrar incluido en el kdegames.

Entiendo que las librerías GTK se pueden usar

Sí, y cualquier otra biblioteca de las que solemos tocar por aquí que tenga versión para Windows también.

¿y las QT? ¿Que otras librerías (no) podemos usar? Pensando en ncurses, o alsa o vete tu a saber.

Alsa supongo que no, a menos que alguien haya portado alsa-lib a Windows o lo haga en el futuro (lo cual no creo que tuviera mucho sentido) y en el caso de Qt, supongo que compilará con MinGW si tienes el código de la versión para WIN32 de esa biblioteca. Ncurses es multiplataforma y compila bien en MinGW o en djgpp.

Para hacer el más mínimo programa, es necesario tener instalado previamente en MinGW en el equipo Windows ¿ocupa mucho?

Pues... no, no hace falta tener instalado nada. A lo único que te obliga MinGW es a distribuir un pequeño runtime (mingwm10.dll o mingwc10.dll, unos 10kb) junto a los programas compilados con él. Esta dll es un pequeño parche para soportar excepciones en C++ en código multihebra de forma segura y transparente.

Creo que confundes MinGW con Cygwin. MinGW es sólo el port de gcc y de muchas de las herramientas GNU a WIN32. Con MinGW programas en y/o para Windows usando gcc, gdb, etc. Tienes acceso al winapi y a otras bibliotecas nativas de MS Windows y nada más.

Cygwin es "otra cosa": emula un sistema Unix (acceso a dispositivos, variables de entorno, apis, las X...) en Windows, de manera que puedes coger cualquier programa de linux (o casi), y recompilarlo en Windows sin tocar ni una línea de código, usando la capa de emulación de Cygwin. Si yo hubiera usado Cygwin lo más seguro es que no tendría que haber tocado nada del gtkatlantic: sólo recompilar y a correr.

Lo malo de Cygwin es que el usuario tiene que instalar el entorno emulado, que es bastante pesado: GTK+, X, un runtime enorme, aplicaciones del espacio de usuario, etc. Pero por lo demás es bastante espectacular: por ejemplo, ahí tienes kde-cygwin, todo un KDE recompilado con Cygwin y corriendo en Windows.

¿Qué ventajas/inconvenientes tiene trabajar así respecto a usar otras librerías como puede ser wxWindows (¿se llama así?) o SDL que tienen en ambas plataformas?

Desde luego, estás hecho un lío :-). A ver, MinGW es un compilador y un montón de herramientas de desarrollo. Las wxWindows puedes compilarlas con MinGW y desarrollar para Windows con ese conjunto de herramientas desde Linux, que es lo que hago yo (compilación cruzada), o desde Windows, o puedes compilarlas con VC++ o con Borland o...

El compilador de MinGW no es el mejor (gcc no soporta aún cabeceras precompiladas y el código c++ que genera es aún un poco grande) pero es una opción barata (gratis) y cómoda si quieres programar sin salir de Linux.

[ Padre ]


Efectivamente, estaba hecho un lío, y ahora más (none / 0) (#7)
por jamarier a las Tue Feb 10th, 2004 at 08:00:00 PM CET
(Información Usuario) http://barbacana.net/blog/

A ver si he entendido bien el asunto: MinGW es un compilador como lo es el antiguo djgpp y se ejecuta en WIN32 (Windows 9x en adelante). Puede compilar cualquier programa para windows y puede usar aquellas librerías que estén portadas previamente para WIN32 (como puede ser GTK o wxWindows) o usar directamente las API de WIN32. Es una versión libre y un programa propietario equivalente podría ser el Borland C o el Visual C (sin IDE, por supuesto)

Por otra parte tenemos el Cygwin que podriamos decir que es una especie de wine pero al contrario. Es decir ejecuta programas linux sobre un windows a base de interceptar las llamadas al sistema para un supuesto Linux y las convierte en llamadas al sistema para Windows. Al igual que ocurre con Wine, esto carga el sistema y al parecer (por lo que he entendido) a diferencia de wine, es necesario compilar el código para dar el cambiazo en las llamadas al API (aunque no es necesario tocar el código).

¿Y donde entra aquí la compilación cruzada? B-)

Lo que yo entiendo por compilación cruzada es que estás desarrollando (compilando) en linux y ejecutas en windows. MinGW se ejecuta en windows luego si usas MinGW no estás haciendo compilación cruzada. ¿como compilas en linux para que sea ejecutable en windows? o de otra forma, las librerias del API WIN32 las puedes conseguir pero, que yo sepa, en linux se generan ficheros a.out o elf pero no COM o EXE. ¿Cómo se hace?

Y ahora un comentario de opinión sobre el mundo del free software/open source. Creo que es tan importante como desarrollar sistemas absolutamente libres (como pueden ser en alguna medida hurd/linux/*BSD) el diseñar software para sistemas no libres como puede ser Microsoft. El que exista software como puede ser Mozilla absolutamente efectivo para entornos de microsoft hace que muchos usuarios puedan probar «esto del software libre» sin necesidad de lanzarse a la piscina de cabeza antes de saber si tiene agua o no. Lamentablemente es necesario dos tipos de intervenciones en esta situación. La primera ya nombrada es la existencia de software de calidad y la segunda es la necesidad de una campaña de promoción donde se haga notar la diferencia entre un gratis como puede ser iexplorer (impuesto en el Windows), un gratis como puede ser Opera (gratis pero pagado con anuncios o incluso gratis por ser copia ilegal) a libre como Mozilla.

-----
- Porque mañana será un gran día.
[ Padre ]



Intentaremos desliarlo (none / 0) (#8)
por ridiculum a las Tue Feb 10th, 2004 at 11:46:57 PM CET
(Información Usuario)

Total, lo mas que puede pasar es que meta la pata ;)

MinGW es un compilador como lo es el antiguo djgpp y se ejecuta en WIN32 (Windows 9x en adelante). Puede compilar cualquier programa para windows y puede usar aquellas librerías que estén portadas previamente para WIN32

Cierto. MinGW es el Minimalist GNU win32 compiler. Por decirlo asi, el gcc para win32, asi que puedes usar el api de windows al completo y cuando biblioteca que este en esa plataforma.

Por otra parte tenemos el Cygwin que podriamos decir que es una especie de wine pero al contrario. Es decir ejecuta programas linux sobre un windows a base de interceptar las llamadas al sistema para un supuesto Linux y las convierte en llamadas al sistema para Windows. Al igual que ocurre con Wine, esto carga el sistema y al parecer (por lo que he entendido) a diferencia de wine, es necesario compilar el código para dar el cambiazo en las llamadas al API (aunque no es necesario tocar el código).

Cygwin no es un entorno linux, es un entorno (no se si realmente esta dentro de la categoria de subsistema, usando la terminologia de Windows) POSIX para win32. Evidentemente, debes recompilar lo que necesites, por que cygwin no entiende el formato ejecutable de ningun unix.

¿Y donde entra aquí la compilación cruzada? B-) Lo que yo entiendo por compilación cruzada es que estás desarrollando (compilando) en linux y ejecutas en windows. MinGW se ejecuta en windows luego si usas MinGW no estás haciendo compilación cruzada. ¿como compilas en linux para que sea ejecutable en windows? o de otra forma, las librerias del API WIN32 las puedes conseguir pero, que yo sepa, en linux se generan ficheros a.out o elf pero no COM o EXE. ¿Cómo se hace?

Cuando se compila, creo que se definen, al menos dos parametros que tipicamente se conocen como host y target. El host se refiere a la plataforma donde se ejecute el compilador y el target a la plataforma para la cual generamos el ejecutable. En el caso de la compilacion cruzada, el host y el target difieren, mientras en el caso de la compilacion, digamos, normal, son identicos.

En el caso que nos ocupa, la copilacion cruzada desde linux/i386 a win32/i386 genera un bonito PE (nombre del formato del ejecutable en windows) y el compilador es un mingw32 que se ejecuta en linux/i386 (formato ELF) y genera ejecutables para win32/i386 (formato PE)

Espero no haber liado la cosa mas de la cuenta

[ Padre ]


 
Desenredando el lío (none / 0) (#9)
por jorginius ("jorginius" en Google Mail) a las Wed Feb 11th, 2004 at 12:41:04 AM CET
(Información Usuario) http://www.rodriguezmoreno.com

A ver si he entendido bien el asunto: MinGW es un compilador como lo es el antiguo djgpp y se ejecuta en WIN32 (Windows 9x en adelante). Puede compilar cualquier programa para windows

Pues sí, salvo porque en "Minimalist GNU for Windows" (MinGW) no viene sólo el compilador (que es básicamente gcc) sino además todo el resto de binutils (gas, gnu ld, gcov, gdb, cpp, objdump, etc) y algunas más como dlltool y dllwrap que permiten construir y trabajar con bibliotecas dinámicas para Windows y windres, para añadir recursos a los binarios como iconos y demás.

Es una versión libre y un programa propietario equivalente podría ser el Borland C o el Visual C (sin IDE, por supuesto)

Sí, aunque en realidad sí que hay IDEs para MinGW en Windows. El más popular es Dev-c++, pero hay más como MinGW Developer Studio (con algunos detalles majos como el autocompletado de funciones) o Visual MinGW. Si eres de la vieja escuela y te gusta el aire retro del Turbo C o del Turbo Pascal puedes probar RHIDE (éste también para MS-DOS).

Por supuesto, también puedes usar vim o emacs :)

¿Y donde entra aquí la compilación cruzada? B-)

En que MinGW no sólo se ejecuta en Windows. Puedes compilar MinGW en Windows y usarlo como un compilador nativo pero también puedes compilar las versiones modificadas de gcc, de ld, etc en Linux y usarlas para generar binarios Windows desde el sistema operativo del pingüino. Tienes el código fuente de MinGW y éste es portable (poco más o menos tan portable como es el código de las herramientas GNU que lo componen).

MinGW se ejecuta en Linux, o en *BSD o si me apuras probablemente también en Solaris/Sparc donde, por cierto, se le llamaría un "compilador canadiense" (y no cruzado): un compilador para un micro y para un S.O. distintos de los que estamos usando para compilar (lo de "canadiense" tiene su miga :)).

Y ahora un comentario de opinión sobre el mundo del free software/open source. Creo que es tan importante como desarrollar sistemas absolutamente libres (...) el diseñar software para sistemas no libres

El problema es que mucho software libre se hace por gusto y a horas perdidas y no sé al resto pero a mí programar en Windows (por hablar del paradigma de sistema no libre :)) me supone un esfuerzo extra. Quiero decir que Unix invita a meter mano con todas esas herramientas y con todas las "tripas por fuera" :) pero Windows es otra cosa. El sistema operativo viene pelado, sin un miserable compilador de C de serie ni documentación para el desarrollador ni nada de nada. Todo te lo tienes que buscar por tu cuenta o pagarlo aparte y así se te van las ganas antes de empezar.

Si ya eres usuario de Delphi o de Visual Studio pues puedes planterte hacer software libre en tus ratos libres para esa plataforma, pero si eres un amater sin un duro la barrera de entrada para programar en Windows es alta (aún apañándote un entorno de desarrollo con Dev-c++ y MinGW), mientras que en Linux (por decir algo) no lo es tanto.

Quizás con Mono y .NET esto mejore.

El que exista software como puede ser Mozilla absolutamente efectivo para entornos de microsoft hace que muchos usuarios puedan probar «esto del software libre»

Sí que lo hace y de hecho a mí me captaron para la causa con esa estrategia :). Tenía Linux en una partición que usaba más bien poco (sólo para cuando había que hablar con el ytalk, la verdad... Y porque un amigo friki se empeñó en que lo instalase) pero para programar aquel shareware que me sacaría de pobre, seguía en DOS:

Al principio usaba un compilador malo con avaricia que sólo soportaba modo tiny y small (por supuesto nada de frivolidades como modo protegido). Luego pasé a gcc, a make, a gdb, etc. Todo del proyecto djgpp, lo que supuso una patentisima mejora :). Continué pasándome a bash en DOS (doloroso acostumbrado a 4DOS pero gané bastante en los scripts) y al resto de las utilidades de Unix estándar y al final, cuando ya de los GPL-chismes sólo me faltaba por instalar el DOSEMU para DOS, borré la partición DOS y di el cambio definitivo :)

¿Qué me pasé porque DOS era una castaña y que ahora con maravillas como MS Windows 2000 Pro no me lo hubiera planteado?, pues no sé. Hoy por hoy en Windows hay software bueno y software malo, como en todos sitios. Hay alternativas libres mejores que mucho software comercial y otro software comercial que es mejor que sus alternativas libres. Supongo que de ser usuario de Windows yo sería de los que tienen instalado el Cygwin (aunque sólo fuera por el servidor X que trae o por usar LyX), la suite de Info-Zip o 7-Zip en vez de Winzip, Mozilla y cosas así. Además, como me gusta programar, buscaría más aplicaciones libres para verles las tripas. Al final daría otra vez el salto, seguro :).

[ Padre ]


 
Bug estúpido (none / 0) (#5)
por jorginius ("jorginius" en Google Mail) a las Tue Feb 10th, 2004 at 01:53:00 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Resulta que el código que maneja las ventanas de chat y la de los mensajes del servidor está duplicado (en la mejor tradición cut&paste) y claro... Sólo arreglé la ventana del servidor.

Ahora he retocado también la ventana de chat para que funcione en GTK 1.3/WIN32 y he subido un zip por si no queréis usar el instalador.

Los MD5 nuevos son:
db23e5d9b1544bad60b850564b80a77e gtkatlantic-0.3.2-win32.exe
7d86964e095a4a43050cee9ec380d2a0 gtkatlantic-0.3.2-win32.zip




 
Jugando Atlantic en MS Windows | 9 comentarios (9 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda