Jugando desde el salón
Hago una pausa en cuanto a los temas fotográficos para contaros una pequeña aventurilla en el ocio digital.
Después de años sin jugar casi a nada, este año he decidido regalarme una gráfica nueva para mi cumpleaños. La elegida ha sido la Geforce GTX 1060 de 3Gb, que ahora mismo creo que tiene una relación calidad/precio excelente, y me sobra para jugar a todo en resolución FullHD.
Uno de los motivos por los que elegí una gráfica Nvidia frente a una ATI es por el soporte de streaming de vídeo por red del fabricante, el GameStream, inicialmente para poder jugar desde sus dispositivos Shield, pero que a través de la implementación de código abierto Moonlight es perfectamente funcional en casi cualquier dispositivo.
En mi caso, tenía una Raspberry Pi 2B desde hace mucho sin un uso claro, un par de mandos de Xbox 360 inalámbricos que me quedé cuando vendí la consola (con sus adaptadores chinos correspondientes, para el ordenador y para la Raspberry), y ganas de jugar desde la tele grande. Os cuento cómo monté el invento.
No voy a entrar en mucho detalle en el proceso, porque requiere ciertos conocimientos básicos de Linux, y podríamos estar meses hablando si partimos desde cero. Trataré de enlazar los tutoriales necesarios (en inglés la mayoría), y si necesitáis ayuda en algún momento, comentadlo y haré lo que pueda
Configurando el ordenador
Esta parte es la más simple del mundo, y tenéis miles de tutoriales por ahí: Simplemente tenéis que tener instalado el software Geforce Experience, con los drivers bien actualizados, y activar la opción correspondiente.
Además de los juegos que detecte el propio software, podéis añadir los vuestros. Mi consejo es lanzar el cliente Steam (lo detectará automáticamente), y desde ahí los juegos, y añadir a mano un enlace al escritorio completo (a través de la aplicación mstsc.exe). Yo por ejemplo he añadido también Lightroom para ver fotos rápidamente desde dispositivos externos.
Una vez llegados a este punto, podéis probarlo con el cliente Moonlight de cualquier otro equipo conectado a la LAN, o por un móvil desde la misma WIFI. Con las opciones por defecto deberíais ver el listado de aplicaciones, y lanzarlas sin problemas.
En los móviles y tablets tenéis la opción de superponer un pad para jugar (aunque la latencia de la WIFI puede estropear bastante la experiencia), y despertar el PC por wake-on-lan si lo tenéis configurado en el equipo.
Como punto extra, si mapeáis la lista de puertos que aparece en el WIKI de Moonlight, podréis jugar desde Internet. Yo lo he estado probando, y con una conexión 4G en el móvil, y fibra de 30Mb simétricos en casa, la cosa tira más que dignamente.
Instalando la Raspberry Pi
Una vez que podéis jugar desde cualquier ordenador toca meterle mano a la Raspberry Pi. Mi consejo es que montéis una imagen con la última Raspbian disponible, con escritorio Pixel. En su web tenéis el proceso bien documentado (es relativamente simple).
En mi caso utilicé una Raspberry Pi 2B, pero si no tenéis ninguna yo iría directamente a por la 3: Para lo que cuesta, mejor tener la versión más moderna.
Sea cual sea la elegida, una vez hecha la instalación básica, podéis comprobar que todo vaya bien arrancándola conectada a la TV.
Aunque cualquier teclado/ratón USB funcionará directamente (yo uso éste), es aconsejable asignarle una IP estática a la Raspberry en vuestro router, para poder lanzar una shell remota desde el ordenador (si usas Windows, Putty es tu amigo) y lanzar comandos más cómodamente. Aconsejo una red cableada, aunque con un adaptador WIFI por USB (o sin él, si tenéis una Pi 3) tambien se conectará sin problemas.
En este punto tendréis que hacer la instalación básica de Moonlight. Tenéis tutoriales (oficiales y no oficiales) por ahí, pero os resumo los puntos:
- Añadir el repositorio de Moonlight:
sudo nano /etc/apt/sources.list AÑADIR AL FINAL deb http://archive.itimmer.nl/raspbian/moonlight jessie main
- Instalar los paquetes correspondientes:
sudo apt-get update sudo apt-get install moonlight-embedded
- Emparejar con el PC:
moonlight pair {dirección IP del equipo} TECLEAR EN EL PC EL NÚMERO QUE INDICA
- Si vais a usar el mando de XBOX, añadid los módulos y mapear los botones:
sudo apt-get install xboxdrv evtest evtest ANOTAR EL DISPOSITIVO CORRESPONDIENTE AL MANDO (p.ej. /dev/input/event3) moonlight map -input /dev/input/eventX $HOME/xbox.map SEGUIR LOS PASOS QUE INDICA. SE CREARÁ EL FICHERO xbox.map
- Ya podéis lanzar juegos, y comprobar que funciona:
moonlight list moonlight steam-app "{Nombre del juego}"
Si todo va bien, podréis lanzar juegos, jugar con ellos, y cacharreando con los parámetros seleccionar la resolución («-1080» o «-720»), framerate («-30fps» o «-60fps»), silenciar el audio en el PC para que solo suene en la Raspberry («-localaudio»), o seleccionar el fichero de mapeo para el mando de la XBOX («-mapping {fichero.map}»).
En mi caso, con una red gigabit por cable, la sensación es perfecta a 1080p y 60fps. Quizá si jugáis a FPS que requieran una velocidad de respuesta muy rápida notéis el retraso, pero yo soy incapaz.
Para evitar teclearlo todo cada vez, yo me he creado un pequeño script que me crea iconos en el escritorio automáticamente para todas las aplicaciones que tengo compartidas en el PC. No es lo más elegante del mundo, pero funciona.
Yo lo tengo en /home/pi/crear_iconos.sh, y lo lanzo cada vez que cambio la lista de juegos disponibles:
#!/bin/bash moonlight list | grep "[0-9]*\. " | sed "s/^[0-9]*\. //" > /tmp/juegos_moonlight.txt while read juego; do fich=$HOME/Desktop/`echo "PC $juego.desktop"|sed "s/ /_/g"` echo "[Desktop Entry]" > $fich echo "Name=$juego" >> $fich echo "Comment=Lanzar $juego desde el PC" >> $fich echo "Icon=/home/pi/gamepad.png" >> $fich echo "Exec=moonlight stream -1080 -60fps -localaudio -mapping $HOME/xbox.map -app \"${juego}\"" >> $fich echo "Type=Application" >> $fich echo "Encoding=UTF-8" >> $fich echo "Terminal=true" >> $fich echo "Categories=None;" >> $fich done < /tmp/juegos_moonlight.txt
En mi caso, he buscado un icono de un pad en Internet, y lo he colocado en «/home/pi/gamepad.png». Si no lo vais a hacer, elegid alguno de los iconos por defecto de «/usr/share/pixmaps».
Lo más cómodo es lanzar siempre el cliente de Steam, que tiene la opción de desconectar la Raspberry cuando lo cierras, y que puede lanzar juegos de cualquier otra plataforma. En caso contrario, os encontraréis con que muchas veces el juego sale pero seguís estando en el escritorio del PC y no podéis volver al de la Raspberry. Si además configuráis Steam para que salga en ventana, podréis acceder al escritorio del PC completo al minimizarlo.
Leyendo por ahí, veo que algunos usuarios han configurado el arranque de Steam en el inicio del escritorio, y después han puesto un apagado automático de la Raspberry. De esta manera no necesitaréis ratón USB conectado, pero cambiar de juego puede requerir unos cuantos minutos, si se os apaga el invento y tenéis que volverlo a encender.
Otra opción que estoy estudiando es poder lanzar los juegos desde el gamepad, o desde el propio mando de la tele (a través del protocolo HDMI CEC). Actualizaré el post si lo consigo, aunque admito consejos si alguno ya lo ha hecho
En cualquier caso, siempre es aconsejable tener un acceso alternativo al PC por Teamviewer o VNC, aunque sea desde el móvil, para «darle un empujoncito» si es necesario.
Por cierto, si no tenéis sonido en la Raspberry, editad el fichero /boot/config.txt, y añadid esta línea al final. A mí siempre me pasa cada vez que reinstalo, aunque parece que no a todos les ocurre:
hdmi_drive=2
Otras alternativas
Si no queréis complicaros tanto la vida, o tenéis una tarjeta Ati, la mejor alternativa comercial es el Steam Link. El precio oficial es de 55€ (más unos abusivos 15€ de envio, según he leído), aunque alguna vez lo han bajado bastante de precio.
Por lo que he visto, es bastante más cómodo de usar y más usable (el cacharro se despierta desde el propio mando, y no hay que pelearse con ratones y teclados para lanzar aplicaciones), pero también está más limitado a jugar exclusivamente. Si alguno lo tiene, ya me contará qué tal va
En cualquier caso, la Raspberry permite hacer mil cosas más, sin depender de ningun PC: Lanzar un navegador completo, un sistema multimedia con Kodi, una consola retro con Retropie, una suite ofimática con Libreoffice, juegos nativos como Minecraft… y todo ello en una misma instalación: Con una tarjea SD de 32Gb y Clase 10, que ahora se venden por dos duros, tenéis sitio más que de sobra para todo.
Espero haberos ayudado, y también espero vuestros comentarios: ¿Conocíais esta solución? ¿Qué mejoras se os ocurren?
- Actualización (16/12/2016)
He conseguido manejar el escritorio desde el mando de la Xbox. Es tan fácil como ejecutar este script en el inicio de sesión:
#!/bin/bash sudo rmmod xpad sudo xboxdrv --mouse
El problema es que el mando se queda en emulación de ratón, y en muchos juegos no funcionan todos los botones. Seguiremos intentándolo