Hoy vamos a presentar un tutorial para poder realizar un screencast a un videojuego sobre GNU/Linux utilizando el driver oficial de NVIDIA. Como ya he comentado en muchas ocasiones, NVIDIA sigue ofreciendo, y con diferencia, la solución más potente a nivel gráfico para GNU/Linux. Sin embargo, no es menos cierto que con el paso del tiempo seguimos presenciando ciertos problemas de integración.
Dichos problemas de integración se muestran cuando se realiza un screencast a un videojuego. Si para el escritorio solo hace falta inhabilitar el flipping para realizar una captura sin grandes fallos, lo cierto es que cuando se trata de un videojuego el tema se complica. Durante muchos meses he intentado realizar un screencast a un videojuego con Ubuntu Unity, pero nunca he conseguido obtener un resultado satisfactorio, incluso después de tocar ciertas cosas en GNOME y de NVIDIA a través del fichero /etc/X11/xorg.conf.
Tras muchas pruebas, y con esto no quiero decir que esta sea la única solución, el único entorno de escritorio que me ha permitido realizar un screencast a un videojuego con unos niveles de errores aceptable ha sido KDE. Aunque creo que este tutorial también se puede aplicar sobre KDE 4, recomiendo encarecidamente el uso de Plasma 5 para realizar un screencast a un videojuego sobre GNU/Linux y el driver oficial de NVIDIA.
Preparando KWin
Desde hace mucho tiempo estoy luchando contra el tearing provocado por el driver oficial de NVIDIA, habiendo publicado varios trucos para mitigarlo e incluso eliminarlo.
Gracias a KWin, KDE tiene una vía genérica para poder acabar con el tearing a través de la activación del triple buffering, un truco que ya publiqué en su día y que recordaremos para la realización de este tutorial.
Para ello hay que crear un fichero llamado kwin.sh en el subcarpeta /etc/profile.d con permisos de administrador. Aquí emplearemos sudo para obtener dichos permisos, aunque se puede recurrir a iniciar sesión con su y obviar el comando anterior.
sudo nano /etc/profile.d/kwin.sh
Una vez creado el fichero, hay que introducir en él lo siguiente para luego guardar los cambios y cerrarlo:
export __GL_YIELD="USLEEP" export KWIN_TRIPLE_BUFFER=1
Configurado el fichero con las opciones mencionadas, lo único que habrá que hacer para aplicar los cambios será reiniciar.
Preparando el compositor de KDE
Esta configuración no es obligatoria, aunque en mis experimentos he visto que las capturas salen más limpias realizándola (en otras palabras, es más bien una recomendación).
Accediendo a la configuración del compositor de KDE hay que seleccionar XRender como motor de renderizado. Después de seleccionar la opción en el desplegable solo hay que hacer clic sobre el botón Aceptar.
Configurando el driver de NVIDIA
Y aquí un clásico en la realización de screencasts con GNU/Linux. Abriendo la configuración del servidor X de NVIDIA hay que acceder a la sección OpenGL Settings y deseleccionar el Allow Flipping para luego pulsar sobre el botón Salir y confirmar la salida de la herramienta.
Desactivar la sincronización vertical de los juegos
Como hemos activado el triple buffering en KWin, ya no es necesario tener activado la sincronización vertical en los juegos, que además me ha empeorado los resultados en las capturas de pantalla.
Ya estamos listos para realizar el screencast a un videojuego
Evidentemente, falta ahora lo básico para realizar una captura a un videojuego, la herramienta de screencast. Utilizando una de configuración sencilla como SimpleScreenRecorder, OBS o Vokoscreen es más que suficiente, aunque por mi experiencia personal, en los últimos tiempos los dos primeros funcionan mejor que el tercero.