Logo de AulaDigital

QuakeI II Como 6

Quake I&II Mini Como: Problemas con las tarjetas aceleradoras. Anterior Siguiente Indice

6. Problemas con las tarjetas aceleradoras.

Hay una página con una faq muy completa sobre las 3dfx en www.voodooextreme.com/3Fingers. Tambien hay un programa llamado GlideControl disponible en http://www.ling.ed.ac.uk/~oliphant/gc muy útil para configurar los parámetros de las 3dfx. Los problemas más comunes suelen ser:

  • Los usuarios no pueden usar la tarjeta aceleradora: Esto se puede solucionar instalando el Device3Dfx, que es un paquete que nos crea un dispositivo /dev/3dfx y mediante la inserción de un módulo en el kernel (3dfx) permite que los usuarios puedan acceder a la tarjeta aceleradora. Asegurese si lo instala de que los permisos de /dev/3dfx están correctamente puestos ( ejecute chmod 666 /dev/3dfx ). Este paquete se puede encontrar en http://glide.xxedgexx.com/3DfxRPMS.html.
  • Cuando ejecuto el glquake me da un core dump:. El quake2 y el glqwcl están disponibles para glibc, sin embargo el glquake no, esto crea bastantes problemas a la hora de hacerlo funcionar. Si tiene una voodoo2 en principio no debería tener problemas porque el propio paquete del Glide_V2 trae además de las versiones de las librerías para glibc las de libc5 (que se instalan en /usr/i486-linux-libc5/lib), sin embargo el paquete de la voodoo 1 no las trae, con lo que puede que tenga que bajarse la versión para libc5, extraer las librerías (si está en rpm con el mc es muy sencillo hacerlo, sino tendrá que usar el rpm2cpio o el rpmget ya que si lo instala directamente con el rpm sobrescribirá las de la versión para glibc) e instalarlas (en /usr/i486-linux-libc5/lib). Además asegurese de que en el fichero /etc/ld.so.conf aparece el directorio /usr/i486-linux-libc5/lib y de que tiene instalado el paquete de compatibilidad con la libc5 (libc-5.3.X-Y en redhat).
    ¡asegurese si se baja este paquete de que lo está cogiendo de una versión de
    RedHat 5.X o del directorio /libc6 en caso de que lo esté cogiendo del contrib
    de RedHat, sino le sobreescribirá las antiguas librerías y no funcionará el
    sistema!
    
    Otra posible causa de error es que falte alguna librería en la ruta de búsqueda del ejecutable, esto se puede comprobar mediante el comando ldd fichero. Si por ejemplo al hacer ldd glquake le sale alguna librería seguida de la linea Not Found ahí estará el problema, asegurese de que tiene esa librería instalada y que el directorio en el que está dicha librería aparece en el fichero /etc/ld.so.conf, si no lo está añada el directorio y ejecute luego como root ldconfig.
  • Cuando ejecuto el glquake me da el error glquake: can't resolve symbol '__register_frame_info'. El glquake necesita las MesaGL-2.6, si no las tenía (vienen con el ejecutable del quake2) consulte la dirección de las librerias en Software, instalelas y ejecute ldconfig.
  • El glquake/glqwcl/quake2 se ve muy oscuro. Ajuste el contraste de la tarjeta, esto se hace mediante la variable de entorno SST_GAMMA en una voodoo 1 y SSTV2_GAMMA en las voodoo 2, por ejemplo poniendo :
    [unscared][~]$ export SSTV2_GAMMA=1.70
    
    Otra opción es bajarse el programa GlideControl mencionado anteriormente con el que puede cambiar la gamma de la tarjeta además de otros parámetros.
  • Al jugar en linux obtengo menos fps que en windows: Bueno, las Mesa no están todavía lo suficientemente optimizadas, y en procesadores lentos no dan un buen rendimiento. Una opción es probar el port de opengl que han incluido los autores del quake como opción a las librerías Mesa (se llama lib3dfxgl.so). Para usarlo creese un fichero llamado glquake.3dfxgl y meta en él lo siguiente:
    #!/bin/sh
    LD_PRELOAD=./lib3dfxgl.so ./glquake $*
    
    Para el quake world puede usar el glqwcl.3dfxgl que viene con el glqwcl y en el quake2 puede especificar el miniport en las opciones de video. Otra opción es asegurarse de que la libMesaGL.so.2 es un enlace a la libMesaGL.so.3. La versión 3 está bastante más optimizada que la 2.6 y el rendimiento aumenta bastante, el problema es que el glquake necesita la versión 2.6. Una solución chapucera es hacer lo siguiente; lo primero vemos donde están las librerías y los ejecutables:
    [root@unsCAred][/usr/local/games/quake2]# ls -la libMesaGL.so*
    lrwxrwxrwx  1 root  root     14 ene 18 19:30 libMesaGL.so -> libMesaGL.so.2
    lrwxrwxrwx  1 root  root     16 ene 18 19:30 libMesaGL.so.2 -> libMesaGL.so.2.6
    -rwxr-xr-x  1 root  root 897135 dic 26 14:43 libMesaGL.so.2.6
    [root@unsCAred][~]# ls -la /usr/lib/libMesaGL.so.2
    lrwxrwxrwx  1 root  root     12 ene 13 20:01 /usr/lib/libMesaGL.so.2 -> libMesaGL.so
    [root@unsCAred][~]# ls /usr/local/games/quake/glquake*
    /usr/local/games/quake/glquake         /usr/local/games/quake/glquake.mesa
    /usr/local/games/quake/glquake.3dfxgl
    
    ahora hacemos un script que borre el enlace de la libMesaGl.so.2,que añada en el path de búsqueda el directorio /usr/local/games/quake2, que ejecute el glquake y que deje todo como estaba. Para usar las MesaGL:
    [root@unsCAred][~]# cat /usr/local/games/quake/glquake.mesa
    #!/bin/sh
    # Movemos la libreria para que no la carge:
    mv /usr/lib/libMesaGL.so.2 /usr/lib/libMesaGL.so.2.tmp
    # Añadimos el directorio del quake2 a la ruta de búsqueda
    LD_LIBRARY_PATH_OLD = $LD_LIBRARY_PATH
    LD_LIBRARY_PATH=/usr/local/games/quake2
    # Ejecutamos el glquake
    ./glquake $*
    # Dejamos todo como estaba.
    mv /usr/lib/libMesaGL.so.2.tmp /usr/lib/libMesaGL.so.2
    LD_LIBRARY_PATH= $LS_LIBRARY_PATH_OLD
    
    Para el miniport de 3dfx:
    [root@unsCAred][~]# cat /usr/local/games/quake/glquake.3dfxgl 
    #!/bin/sh
    
    # This script preloads the lib3dfxgl.so library which overrides the functions
    # present in libMesaGL.so.  This allows glquake to run using 3DFX's miniport
    # and without Mesa 3-D.  Glide and X11 libraries have to be installed tho, 
    # even tho GLQuake doesn't use X11, it's linked against it because Mesa 3-D
    # requires them.
    mv /usr/lib/libMesaGL.so.2 /usr/lib/libMesaGL.so.2.tmp
    
    LD_LIBRARY_PATH_OLD= $LS_LIBRARY_PATH
    LD_LIBRARY_PATH=/usr/local/games/quake2
    LD_PRELOAD=./lib3dfxgl.so ./glquake $*
    mv /usr/lib/libMesaGL.so.2.tmp /usr/lib/libMesaGL.so.2
    LD_LIBRARY_PATH= $LS_LIBRARY_PATH_OLD
    
    El problema de hacer esto es que el script se tiene que ejecutar como root. Una opción para hacer lo mismo pero sin necesidad de ser root es eliminar la libMesaGL.so.2 de la ruta de búsqueda del ldconfig y ponerla en otro directorio (por ejemplo en /usr/local/lib/MesaGL). Para que nos funcionen los programas que necesitan las Mesa lo único que tenemos que hacer es añadir la linea export LD_LIBRARY_PATH=/usr/local/lib/MesaGL en el fichero ~/.bashrc si usamos el bash como shell o la linea setenv LD_LIBRARY_PATH /usr/local/lib/MesaGL en el .cshrc/.tcsh si usamos csh/tcsh. Haciendo esto tendríamos lo siguiente:
    [root@unsCAred][~]# cd /usr/local/lib/MesaGL/
    [root@unsCAred][/usr/local/lib/MesaGL]# ls -la libMesaGL.so.2 
    lrwxrwxrwx   1 root  root 23 ene 22 21:19 libMesaGL.so.2 -> /usr/lib/libMesaGL.so.3
    
    Ahora ya podemos eliminar las lineas que llevan un mv de los scripts glquake.mesa y glquake.3dfx con lo que ya no es necesario ser root para que funcione.
  • No me funciona el ratón: Las 3dfx y el gpm no se llevan bien , en el README viene bastante claro que para que funcione el ratón con las tarjetas aceleradoras hay que matár el gpm antes. Para hacerlo solo que ejecutar un killall gpm como root (o un gpm -k>. Tambien se puede hacer mediante la orden /etc/rc.d/init.d/gpm stop y reiniciarlo con /etc/rc.d/inid.d/gpm start (esto para redhat, en otras distribuciones puede variar ligeramente el directorio stat.d ); Este sistema es el más recomendable.


Anterior Siguiente Indice