PAGE UNDER TRANSLATION!!!
|
STARCRAFT WINE COMPATIBILITY HACKING
by J. Christopher Pereira ( kripper@users.sourceforge.net) |
|
Wine es un milagro...leyendo unos artículos sobre juicios en contra de Microsoft, me llamó la atención un párrafo en el cual se decía algo como "En teoría, sería posible portar la API de M$ Windows a Linux, de manera de poder ejecutar aplicaciones escritas para Windows sobre Linux. Sin embargo, esto sería imposible en la práctica debido a su pobre documentación y a que M$ seguramente seguiría desarrollando la API de windows constantemente.
Sin embargo, los desarrolladores de Wine ya llevan trabajando un par de años y hoy en día ya es posible ejecutar sobre Linux un gran número de aplicaciones originalmente escritas para M$ Windows.
Específicamente:
Wine is an implementation of the Windows 3.x and Win32 APIs on top of X and Unix. Think of Wine as a Windows compatibility layer. Wine provides both a development toolkit (Winelib) for porting Windows sources to Unix and a program loader, allowing unmodified Windows 3.1/95/NT binaries to run under Intel Unixes. Wine works on most popular Intel Unixes, including Linux , FreeBSD , and Solaris .
Wine does not require Microsoft Windows, as it is a completely alternative implementation consisting of 100% Microsoft-free code, but it can optionally use native system DLLs if they are available. Wine comes with complete sources, documentation and examples and is freely redistributable. (The licensing terms are similar to X11.)
¿Que es Starcraft?
¿Como llegaste acá si no sabes lo que es Starcraft? Prefiero no ser yo quien te acerque a este vicio / deporte ;-)
El objetivo principal de este proyecto, es permitir que Starcraft corra sobre Linux con WINE, igual o mejor de lo que corre sobre Windows.
Algunas versiones de WINE permiten ejecutar Starcraft, sin embargo, aún existen algunos problemas que ya llevan años sin ser resueltos y que están relacionados con el modo multiplayer y el modo DGA (o DGA2), sin el cual el performance del juego llega a ser relamente asqueroso en algunas máquinas.
No es precisamente necesario poseer conocimientos sobre programación. De hecho, por ahora que me ayuden a efectuar regresiones de versiones como se describirá a continuación:
Test de Regresiones
Los desarrolladores de WINE están parchando por todos lados y por el momento no están concentrados en mejorar la compatibilidad de WINE con aplicaciones específicas. Su estrategia es simplemente agregar y agregar nuevas funcionalidades antes de llegar a su versión 1.0, por lo cual suele suceder que la compatibilidad de WINE con Starcraft se reduzca con la aparición de nuevas versiones y que cosas que funcionaban de repente dejen de funcionar.
Por lo tanto, se hace necesario mantener un registro hostórico de la compatibilidad de WINE con Starcraft para poder determinar a partir de qué versión comenzó a dejar de funcionar algo.
Específicamente, en este momento existe un problema con la última versión de WINE del CVS y el procesamiento de eventos de teclado y mouse en modo DGA2 (el nuevo modo DGA que se introdujo a partir de XFree86 4). Este problema no se presentaba, por ejemplo, en la versión 20010131 (del 31 de Enero del 2001, el año pasado!).
Otro problema bastante común es el problema con las fuentes True Type en la pantalla de Battle Net. Con la versión más reciente de WINE, se pueden apreciar las imágenes del fondo, pero no los textos. Sin embargo, en alguna versión anterior que no recuerdo (¿será un año?) , creo haber visto funcionando los textos, pero no el fondo.
Por ahora me estoy concentrando en solucionar esos dos problemas anteriores, para lo cual me ayudaría bastante que me comentaran en que versiones de WINE (aaaammdd) habían fuentes en Battlenet y/o funcionaba bien el modo DGA2.
Como obtener y compilar una versión
Las códigos fuentes de cualquier versión se pueden obtener del CVS de winehq.com de la siguiente manera:Observaciones Importantes
export CVSROOT=:pserver:cvs@cvs.winehq.com:/home/wine
cvs login
La contraseña es "cvs"
Luego, para obtener una determinada versión de WINE (ie: 2002-02-28), ingrese:
cd <el directorio donde dejará los fuentes>
cvs -z 3 -d $CVSROOT checkout -D "2002-02-28 EDT"
posteriormente , para compilar e instalar WINE, ingrese:
wine/tools/wineinstall
Para posteriormente instalar otra versión (ie: 2001-01-01), basta con ingresar:
cvs -z 3 -d $CVSROOT update -D "2001-01-01 EDT"
y volver a compilar e instalar con:
wine/tools/wineinstall
(En http://www.winehq.com/Docs/wine-devel/cvs-regression.shtml encontrarán más información sobre como realizar test de regresiones)
- Para ejecutar una aplicación en modo DGA, se debe tener acceso a /dev/mem. La forma más sencilla (pero poco segura) es simplemente ejecutar WINE como root.
- Es posible que en algunas versiones de WINE, el modo DGA impida salir de Starcraft. Con CTRL+ALT+DEL se puede resetear el servidor X y volver a entrar. También es posible ejecutar WINE de la siguiente manera:
(wine <path to starcraft.exe> &) ; sleep 120 ; killall wine
Así se asegurará que WINE se cierre después de 2 minutos, en caso de que se congele el teclado y el mouse y no se pueda cerrar manualmente.
- Frecuentemente (siempre, en mi caso personal) se hace necesario resetear X (un logout/login de Gnome/KDE es suficiente), pues por alguna razón no es posible iniciar el modo DGA por segunda vez. Por lo visto, este problema se solucionó en las versiones más recientes.
- En el caso de algunas versiones del año 2001, no pude compilar las fuentes del CVS por un conflicto con el archivo wine/dlls/wininet/internet.c. Una solución rápida es simplemente reemplazar este archivo por la última versión del CVS:
rm wine/dlls/wininet/internet.c
cvs -d $CVSROOT checkout -D "2002-02-28 EDT" wine/dlls/wininet/internet.c
Supongo que todas las versiones del CVS (al menos a partir del 2001) debieran ser posibles de compilarse con la mayoría de las distribuciones, así que en caso de error, por favor intententen ingeniárselas para lograr compilar.Publicación de resultados
- No olvidar que se debe haber definido $CVSROOT (export CVSROOT=:pserver:cvs@cvs.winehq.com:/home/wine ) para poder ingresar los comandos cvs descritos anteriormente.
Una vez que hayan logrado ejecutar WINE + Starcraft, por favor publiquen su experiencia en http://sourceforge.net/tracker/?func=add&group_id=47725&atid=450575, indicando detalladamente:Condiciones
- Detalles del error
- Versión de WINE que presenta el error
- Versión de WINE que no presenta el error
- Distribución, versión del Kernel, versión del XFree86, driver de la tarjeta gráfica, etc.
- Inicialmente sólo soportaremos Starcraft + WINE con DGA2 activado, por lo cual deberán asegurarse de que efectivamente estén ejecutando la aplicación con DGA. El sólo hecho de tener "UseDGA" = "Y" en .wine/config no asegura que se ejecuta en DGA !
Según mi experiencia personal, he tenido problemas con el 90% de las versiones que he compilado y ejecutado con DGA, lo cual no sucede sin DGA.
Para determinar si DGA está activado, ejecute WINE con "--debugmsg +x11drv " y verifique que aparezca "Enabling DGA" en los logs.
En todo caso, ejecutar Starcraft sin DGA debería percibirse por la lentitud del movimiento del mouse. Al estar activado el modo DGA, el performance es mejor o igual que bajo windows IMOPor favor, es muy importante que no reporten problemas si no están usando DGA.
Para que XFree86 utilice DGA, deberá tener en /etc/X11/XF86Config-4 :
Section "Module"Sin la opción: Option "omit xfree86-dga"
Load "extmod"
EndSection
- "Complete Starcraft installation and running guide for Linux+Wine-systems"
http://koti.mbnet.fi/~hoppq/sc-howto.html
- "StarCraft Under Wine HOWTO"
http://www.linuxgames.com/starcraft.php3
- "Starcraft support forum at Transgaming"
http://www.transgaming.com/postlist.php?forum=10