Aprovechando un descuento temporal del 50% en Pillars of Eternity, uno de los juegos independientes con más pegada de los últimos tiempos, decidí adquirirlo y lo ejecuté para que me contara como compra realizada para GNU/Linux. Sin embargo, nada más arrancar el juego, me quedé con la sangre helada debido a que me encontré con problemas de tearing y sincronización vertical.
No es la primera vez que me encuentro ante problemas similares. En KDE ya aporté en su día una solución para los problemas que me afectaban tras cambiar mi gráfica ATI por otra NVIDIA, esta solución fue mano de santo para mi, ya que fulminó todos los problemas de tearing y sincronización vertical a todos los niveles, pudiendo disfrutar de juegos, vídeos y entorno gráfico sin molestias. El otro problema parecido lo tengo con el primer The Witcher sobre Windows, que me obliga a forzar la sincronización vertical desde el panel de control de NVIDIA para poder tener una experiencia de juego agradable. El problema es que el panel de NVIDIA para GNU/Linux no le hace ni sombra al de Windows, obligándonos a tener que recurrir a soluciones más complejas.
Aviso para los usuarios de KDE
Si habéis comprado Pillars of Eternity para vuestra distribución con KDE y tenéis este problema, recomiendo antes probar la solución que permite corregir los problemas de tearing y sincronización vertical sobre dicho entorno. En caso de fallar, podéis probar la solución que expongo en esta entrada.
Características del ordenador que me dio problemas con Pillars of Eternity
- CPU: Intel Core 2 Quad Q8300.
- RAM: 8GB.
- GPU: NVIDIA GTX 650.
- Sistema operativo: Ubuntu GNOME 15.04.
Al parecer mi actual GPU NVIDIA tiene bastante culpa en la aparición de este problema según las fuentes consultadas, dicho de otro modo, este problema parece que se produce al combinar una GPU NVIDIA con el motor Unity3D, así que posiblemente el problema se repita con otros juegos que empleen dicho motor.
Solución al problema
Ahora que uso Ubuntu GNOME, la solución de KDE no me sirve. Podría instalar KDE, pero eso me habría obligado a tragarme decenas de paquetes que no quiero, a pesar de seguir utilizando un buen número de aplicaciones de ese proyecto, como Krita, Okular, Kdenlive o Ksnapshot.
Al principio probé con una solución extraída de aquí y que encontré en múltiples foros e incluso en el bugzilla de GNOME, que se trata de añadir al fichero /etc/environment las siguientes líneas:
CLUTTER_PAINT=disable-clipped-redraws:disable-culling CLUTTER_VBLANK=True
Sin embargo no funcionó, y probé con meterlas en un fichero dentro de /etc/profiles y poniendo delante export, sin ningún resultado visible, así que tuve que optar por probar otra solución que encontré en Reddit, más compleja, pero que al menos sí me ha funcionado.
En primer lugar hay que instalar Openbox y Compton, y tomando como referencia Ubuntu se podría emplear el siguiente comando, aunque también se puede buscar esos mismos paquetes a través de un gestor gráfico o sustituyendo APT por el gestor de la distribución que se esté usando:
sudo apt-get install openbox compton
Una vez instalados Compton y Openbox, desde el usuario personal hay que dirigirse a la carpeta personal oculta .config y crear una subcarpeta llamada openbox.
cd ~/.config mkdir openbox
Después hay que dirigirse a la subcarpeta openbox que acabamos de crear:
cd ~/.config/openbox
Y dentro de esa subcarpeta hay que crear un fichero de texto plano llamado autostart, que tiene que contener lo siguiente:
compton -b --backend glx --vsync opengl-swc steam
La primera línea lo que hace es forzar la sincronización vertical en Compton, y la segunda simplemente abre el cliente de Steam. Sí, la segunda línea es prescindible, aunque dudo que muchos se pasen a Openbox si están utilizando este tutorial para solucionar sus problemas con Pillars of Eternity. En caso de no poner la línea para iniciar Steam, podéis iniciarlo desde una consola gráfica en Openbox introduciendo el comando steam, con todas las letras en minúsculas.
Una vez creado el fichero autostart con los comandos indicados, solo hay que cerrar la sesión de usuario y volverla a abrir seleccionado Openbox en el Display Manager. Justo al iniciar la sesión también se tendría que abrir Steam, y a partir de ahí solo hay que iniciar Pillars of Eternity como se haría normalmente.
Para poder salir de Steam recomiendo hacerlo desde el menú Steam situado en la parte superior izquierda del cliente, mientras que para cerrar la sesión de Openbox solo hay que hacer clic con el botón secundario del ratón sobre algún lugar libre de la pantalla y seleccionar Exit (o Salir si os sale traducido).
Conclusión
Se que esta solución no es muy práctica, aunque es la mejor que he encontrado. Por otro lado difícilmente uno realiza otra tarea mientras está jugando, al menos que sea descargar torrents o algo parecido, así que no resultará una gran molestia ir abriendo y cerrando sesión en GNU/Linux para poder jugar a algunos juegos, más cuando muchos hemos estado años reiniciando el ordenador solo para jugar.
Al menos Openbox no instala una gran cantidad de paquetes, como sí haría KDE.
Fuente: muylinux