Gamestreaming 5 - Gamestreaming de consolas (PS3, X360, PS4 y XOne)

Como hacer Gamestreaming de consolas de sobremesa (PS3, X360, PS4 y XOne)



Tenemos dos tipos de streaming que podemos realizar de nuestra consola de sobremesa a otro dispositivo.


  • Streaming solo de Audio y Vídeo. (Usar un dispositivo como una tablet o smartphone, como pantalla externa de la consola de sobremesa)
  • Streaming completo (GameStreaming) de Audio, Vídeo y controles. (Usar un dispositivo como una tablet, smartphone, consola como consola portátil para jugar el contenido de la consola de sobremesa)

Dependiendo de nuestras necesidades y recursos, podremos decantarnos por una u otra opción.


Streaming de Audio y Vídeo 


Utilizando los mismos programas y procedimientos comentados en esta guía, es posible realizar un streaming de vídeo de dispositivos externos como puede ser una consola PS3, X360, PS4 o XOne.

El procedimiento es bastante sencillo. Para este tipo de streaming vamos a necesitar una capturadora de vídeo, en la cual vamos a conectar la salida de Vídeo de nuestra consola, y que visualizaremos en la pantalla del PC por medio de algún software de previsualización de la captura.


Una vez tenemos la imagen de nuestra consola en pantalla, utilizaremos alguna de las alternativas de streaming que he comentado, y enviaremos con esto la imagen y el audio a nuestro dispositivo cliente de streaming.


El esquema de esta solución sería algo como esto:


El circuito sería el siguiente:


  • Desde la consola (PS3, PS4, X360, XOne *), obtenemos la imagen de salida (señal de vídeo), la cual es enviada a la capturadora de nuestro PC
  • En el PC tenemos alguna aplicación que nos permita visualizar la señal de vídeo y que, mediante un programa de streaming (Limelight, Kainy, Splashtop o simialres) enviaremos a nuestro dispositivo cliente de streaming
  • El dispositivo cliente de streaming (puede ser una tablet, smartphone, otro PC, etc), hará la función de pantalla, en donde visualizaremos el contenido de nuestra consola.
  • El mando será el propio mando de la consola, conectada a ella (la consola) de forma normal, para poder tomar el control directo de la acción.
  • Si lo consideramos práctico, construímos un soporte de dispositivo (smartphone/tablet/etc) para acoplar el mando de la consola, y con esto tener una solución "portable" todo en uno, con mando y pantalla.


* Nota: en principio, este circuito también sería válido para otras consolas. Todo depende de la comodidad de uso que tengas en el mando para poder jugar, utilizando una pantalla externa (dispositivo cliente de streaming).
Por ejemplo, no es muy práctico jugar en una PS2, con un mando Dualshock normal, pero con uno inalámbrico, sería mucho mas cómodo y práctico. Lo mismo se podría aplicar, por ejemplo para una Dreamcast, y algún mando inalámbrico para poder jugar.


¿Para que me sirve streaming de Audio y Video?


Con este método (bastante sencillo además), podremos disponer de un dispositivo externo (tablet, smartphone, etc) para usar de pantalla y poder jugar.

Para ser prácticos, podemos transformar cualquier dispositivo que sea cliente de streaming, en una pantalla de nuestra consola. Esto podría ser una solución bastante práctica para muchas personas que, por ejemplo, no pueden utilizar la consola, por que la TV está siendo utilizada. Para estos casos, puedes disponer de una tablet y jugar directamente en ella. (por poner un ejemplo), utilizando el mando de la consola de forma normal.

Como alternativa, existen algunas soluciones para acoplar un móvil o tablet a un mando de consola. Para estos casos, puede resultar muy interesante buscar sobre el producto GameKlip


o incluso alguna guía para fabricarte tu mismo un soporte para acoplar tu movil o tablet (sobre todo ya que las soluciones gameklip están orientadas a usar con un Sixaxis/mando de PS3, y por tanto para otras consolas, hay que fabricar uno que se ajuste bien)

(en portugués, pero se entiende perfectamente lo que hay que hacer)

Las soluciones mostradas en internet son para poder jugar en nuestro dispositivo (smartphone, tablet), utilizando un mando de consola. Aprovechando este mismo concepto lo que hacemos es generar una "pantalla + mando" que nos servirá para jugar en nuestra consola de sobremesa, con la salvedad de que en vez de estar controlando el movil con el mando, controlamos la consola, y la pantalla del dispositivo solo servirá para ver la imagen de la consola.


En el vídeo anterior, aunque no se aprecia bien estoy jugando en una consola android, pero utilizando solo la pantalla para visualizar. Para controlar el juego, estoy utilizando el propio sixaxis de la consola.

Ahora, para poder tener un Gamestreaming completo, esto es, además del streaming de vídeo, tener control sobre la consola de forma indirecta (por medio de otro dispositivo), es necesario un componente extra y que explicaré en el siguiente punto.


Capturadoras y la calidad del vídeo obtenido



Aquí es el primer punto que debemos tener en consideración, ya que la calidad de la captura que logremos obtener será directa a la calidad del streaming que logremos en nuestro cliente.

Que alternativas tenemos?

No todas las capturadoras nos servirán. Tenemos que buscar alguna que nos ofrezca una buena calidad de imagen (o por lo menos, suficiente para jugar), y sobre todo (y lo mas importante) que NO tenga lag (retardo en la imagen).

Personalmente, he podido probar algunas de las opciones mas comunes, y que listaré a continuación:

Tarjeta capturadora interna PCI


Esta es la típica capturadora que traen algunos equipos mas antiguos. Por lo genral estas capturadoras traen un módulo de televisión analógica (que funcionaban antes de la era del TDT).

Estas capturadoras tienen una muy buena respuesta en la imagen, por que generan muy poco lag. Por contraparte, no suelen ofrecer una buena calidad gráfica, ya que la resolución de dichas capturadoras es mas bien reducida.

Al principio de mis pruebas utilicé una de estas capturadoras, y un programa de previsualización que sólo podía obtener una imagen con resolución de 320x200 pixels.

Para que dicha resolución no resultase muy molesta, decidí hacer mis primeras pruebas con una consola con pantalla de 5" (una GPD-G5A)




En el siguiente vídeo, intento explicar un poco mas sobre la alternativa de este tipo de capturadora.


Al final del vídeo se puede apreciar una captura directa desde la salida HDMI de la propia consola, con lo cual podemos hacernos una idea mas clara de la calidad que podemos esperar con esta alternativa.


Tarjeta capturadora USB Standard



Este tipo de tarjetas son las mas fáciles de conseguir, y a mi entender, la que ofrece la mejor relación calidad de imagen obtenida y precio.

En mi caso, y para las pruebas que he generado para esta guía, he adquirido una de estas capturadoras USB en Amazon, por 14.80€. Para mas información, el producto específico que he adquirido es un LogiLink USB 2.0 (el enlace es solo referencial)

Para seleccionar esta capturadora específica, he mirado en sus características que la calidad de vídeo obtenida sea al menos de 480, y este producto destaca:


  • IN PAL: 720 x 576 @ 25 fps
  • IN NTSC: 720 x 480 @ 30 fps

Lo cual, para mi entender es suficiente para el uso que necesito darle. El único detalle que no sabía era si me generaría lag en la captura, pero por el precio que tiene tampoco se perdía mucho en probar.

Afortnuadamente, la calidad obtenida es suficiente y el lag generado es muy pequeño, por lo que resulta adecuada para jugar la mayoría de juegos sin problemas.

Algunos ejemplos obtenidos con esta capturadora.




A continuación, un vídeo explicando algunos detalles sobre este tipo de capturadora.


Al final del vídeo se encuentra un ejemplo de captura tomada directamente desde la salida HDMI de la consola, para apreciar el resultado del gameplay.


Capturadora Hauppage USB (Vídeo analógico)




Para las pruebas, he conseguido una capturadora USB Hauppage HD PVR para realizar pruebas analógicas, aprovechando su entrada de vídeo compuesto.

Cursiosamente, esta capturadora logra obtener una imagen mucho mas clara y definida que las soluciones anteriores analógicas, pero aquí nos encontramos con un problema importante: Esta solución genera un lag excesivo que la hacen inviable para poder utilizarla en un Gamestraeming.

A continuación, el vídeo explicativo sobre esta capturadora.



Capturadora Hauppage USB (Vídeo por Componentes)



Utilizando la salida HD de vídeo por componentes de la consola, el resultado es una mejor definición de imagen, pero el problema de lag persiste.


Como se puede apreciar, la calidad obtenida por esta solución es, con mucha diferencia, mejor que las alternativas analógicas anteriores, pero el lag generado hacen que descarte completamente esta capturadora.

A continuación el vídeo explicativo de esta alternativa.



Capturadora HDMI PCIe



Para completar esta serie de alternatvias, me he hecho con una tarjeta capturadora por HDMI (BlackMagic Intense Pro).

Esta alternativa en particular me ha dado muchos dolores de cabeza para poder configurar todo correctamente (se que no es un problema del fabricante, pero aún así ha sido algo bastante molesto a la hora de trabajar con la tarjeta) ya que esta tarjeta y/o su software requiere que se especifique exactamente la cantidad de FPS que tiene el origen de la señal de vídeo, y este valor no siempre es el que uno espera (FPS 60 y FPS 59.94 no tienen el mismo resultado... y una PS3 por ejemplo va a 59.94, aunque dependiendo de las aplicaciones y/o juegos, este valor podría cambiar)

Además, y a raíz del problema anterior de los FPS, no he podido capturar correctamente la salida HDMI de las consolas de sobremesa.

Para solucionar este problema, me he aprovechado de otra capturadora externa que tengo (una Avermedia game Capture HD II) y he sacado la salida de vídeo por componentes de las consolas, y las he conectado a la entrada por componentes de la capturadora externa. Luego, he conectado la salidad de la capturadora (HDMI) a la capturadora HDMI (BlackMagic), y afortunadamente con esta combinación si que he logrado obtener imagen en el PC.

Por tanto, y para resumir:

Consola (OUT: Vídeo por componentes) - Capturadora AverMedia (IN: Componentes, OUT: HDMI) - Capturadora HDMI (IN: HDMI)

A continuación el vídeo explicativo de esta alternativa.




Programas para visualizar la señal de vídeo


En realidad nos servirá cualquier programa que nos permita ver el vídeo capturado, y que nos deje maximizarlo a pantalla completa, pero lo mas importante de todo es que no genere LAG a la hora de visualizar este contenido.

Ejemplos de programas que utilizo:




Trucos para el streaming


Imagen con franjas superiores e inferiores


Para evitar estas franjas, asumiendo que tienes un streaming configurado para ir a 1280x720, debes cambiar la resolución de tu pantalla del PC servidor de streaming para que coincida con estos 1280x720. De esta forma, el servidor de streaming no tendrá que ajustar el tamaño original del streaming, y enviará una imagen completa de lo que aparece en ella.

Nota: Revisar tu programa de straming si no cambia la resolución, forzando a alguna específica. Si es así, debes hacer los ajustes necesarios para que todo el proceso vaya a la misma resolución.


Imagen con franjas laterales


Esto puede ser debido a que la consola está configurada con un aspecto que no es widescreen. Mirar en la configuración y probar las configuraciones de aspecto, para conseguir una imagen completa en el cliente de streaming


Imagen con franjas superiores, inferiores y laterales


Esto es mas bien por un problema de resoluciones, y se suele solucionar aplicando los tips anteriores.

También puede ser que tu programa de previsualización de la captura no esté mostrando la imagen en un tamaño mas grande, y solo muestre el tamaño original de la captura. Mira si tiene alguna opción para redimensionar la imagen para que ocupe toda la pantalla.


No podemos utilizar una imagen a pantalla completa


Si por la razón que sea, no nos es posible utilizar una imagen a pantalla completa, podemos utilizar un truco, aunque depende del programa que utilicemos para el Streaming.

Por ejemplo, si utilizamos Splashtop Gamepad THD, en el modo Desktop podemos hacer zoom a la imagen, de tal forma que cuadremos el contenido de la ventana en windows, para que abarque toda la pantalla del cliente de streaming. a continuación pasamos al modo gamepad, y ya tenemos una pantalla completa de la consola.

Si no podemos hacer zoom en el dispositivo, podemos intentar hacer zoom en windows (tecla "WIN" + "-" o "+"), de tal manera que se ajuste la pantalla a la de nuestro dispositivo cliente de streaming.

Evidentemente, no es la mejora alternativa, pero puede servir para salir del paso, sobre todo con las capturadoras analógicas.




Gamestreaming: Streaming + Control



Hay varias soluciones en internet que he estado revisando, cada una de las cuales puede ofrecer una parte de la solución final, pero ninguna es una solución integral para el problema del control, exceptuando una: Titan One.

Nota: Si quieres, puedes saltarte esta sección explicativa, y pasar directamente a la sección "Configuración de Titan One para realizar el GameStreaming."

¿Por que Titan One y no otra alternativa?

Para quien conozca este tipo de productos (dongles que permiten "transformar" un tipo de mando en otro), se preguntarán por que no he optado por una solución como Cronus Max.



Hay historia al respecto con estos dos productos, que no viene al caso mencionar aquí (basta googlear un poco y encontrar información al respecto), pero puedo resumir en que luego de intentar ponerme en contacto con ambas soluciones, solo una me ha redirigido hacia un contacto en el fabricante, y que luego me han remitido a la persona que diseña el producto y su software, que es Jefferson Koppe.



Originalmente, la solución ofrecida por Cronus Max o Titan One, eran incompletas para aplicar en un escenario de gamestreaming. Luego de intercambiar varios mensajes, en donde le expliqué a Jefferson mis "necesidades" para poder llevar a cabo un Gamestreaming de estas consolas, la respuesta se ha materializado en un nuevo desarrollo de un plugin standalone (MaxAim DI v4.20), con algunas modificaciones que permiten realizar el GameStreaming incluyendo las opciones que he comentado en esta guía:


  • LimeLight
  • Kainy *
  • Splashtop Gamepad THD


* Nota: Al momento de escribir este artículo, Titan One está trabajando en agregar el soporte necesario para ser compatible con Kainy como solución de Gamestreaming completa.

Por tanto, y gracias a que he estado trabajando directamente con el desarrollador del producto, hemos podido ajustar los cambios necesarios para que Titan One sea una solución integral para Gamestreaming, y no tener necesidad de recurrir a herramientas extras y de terceros para conseguir el control en las consolas.

Pregunta: ¿Tengo un Cronus Max que es muy parecido. Me servirá?


La respuesta rápida y directa es: No, no te servirá, ya que el nuevo plugin está diseñado para funcionar solo con el producto Titan One.

Se que hay algunos grupos trabajando en alternativas que utilizan Cronus Max (mira en Otros proyectos similres mas abajo en esta página). Lo único que puedo sugerirte es preguntar por el fabricante por algún soporte similar, o hablar con las personas que están trabajando en estos otros proyectos, a ver si logran avanzar y obtener el mismo resultado.


Resumen de soporte de Titan One, para hacer Gamestreaming con consolas de sobremesa.



Nota: Solo dispongo de PS3 y X360 como consolas de sobremesa, pero hasta donde se, la solución también se extiende a PS4 y XOne. Para ello, hay que seguir las indicaciones del fabricante de Titan One, para lograr control sobre dichas plataformas.

LimeLight:


  • Analógico Izquierdo: Rango Completo
  • Analógico Derecho: Rango Completo
  • DPAD: Todas las direcciones
  • 4 Botones de acción A, B, X, Y: OK
  • 2 Botones superiores LB/L1 y RB/R1: OK
  • 2 Gatillos analógicos LT/L2 y RT/R2: OK (en controles digitales, funciona con valores 0% y 100%)
  • SELECT: OK
  • START: OK
  • Botón HOME/XBOX: Se implementa por medio de script: DPAD_DOWN + LSTICK_DOWN + START


Splashtop Gamepad THD

  • Analógico Izquierdo: Rango Completo
  • Analógico Derecho: Rango Completo
  • DPAD: Splashtop traduce este control como flechas de teclado. Se implementa DPAD por medio del modo "CAPTURE", para transformarlos en comandos de gamepad standard.
  • 4 Botones de acción A, B, X, Y: OK
  • 2 Botones superiores LB/L1 y RB/R1: OK
  • 2 Gatillos analógicos LT/L2 y RT/R2: OK (en controles digitales, funciona con valores 0% y 100%)
  • SELECT: No es reconocido. Se implementa botón [TAB] en pantalla, que se captura y transforma en SELECT
  • START: OK. Por hacer mas simple la interfaz, se implementa botón [ENTER] en pantalla, que se captura y transforma en START
  • Botón HOME/XBOX: Se implementa botón [SPACE] en pantalla, que se captura y transforma en HOME/XBOX

Además, en el propio plugin se han implementado funcionalidad con teclado, por si alguien desea utilizar otra solución que no tenga soporte de gamepad.



Esta solución implica que los controles analógicos se transforman en digitales, pero ofrece mas compatiblidad con mas soluciones de streaming a futuro (a falta de agregar soporte específico de gamepad)


Pero, ¿Que es Titan One?



En la práctica, y explicado de manera muy general, este dispositivo premite transformar muchos tipos de mandos en otros tipos de mandos.

Para ser mas preciso, si tenemos un tipo de mando USB o Bluetooth, podremos conectarlo a nuestra consola PS3, X360, PS4 o XOne, por medio del dispositivo Titan One, que hará las veces de "traductor" entre ambas partes.

Así, es posible jugar con, por ejemplo, un mando de WII en PS4, o con Ratón y Teclado en XOne, o usar el mando de XOne directamente en una consola Android (emulando un mando de PS3 o X360, por ejemplo, con lo que tendríamos soporte en android sin problemas)


En el vídeo anterior, se ha configurado un teclado y ratón para jugar a COD Advance Warfare en una PS4, y como se puede apreciar, la interpretación y "reproducción" de los movimientos del ratón son bastante similares a los de un PC, proporcionando una experiencia distinta y mas "natural" para este tipo de juegos FPS. Aunque el vídeo apunta a que el jugador de la demo es un "novato", en realidad se refiere a que es novato jugando FPS en una consola con un mando, pero es evidente que si sabe jugar este tipo de juegos con un teclado y ratón.

Además de esta característica de "traductor" de mandos, la suite del dispositivo, basada en el programa GTuner, permite una serie de características extra al mando, de manera que podemos hacer cutsomizaciones a controles, y basarlas todo por software. (podemos crear un mando personalizado, sin necesidad de modificar físicamente el mando para obtener las funcionalidades que queramos)

Por ejemplo, podemos generar scripts que lancen secuencias de movimientos, basados en un patrón de entrada (que puede ser un movimiento, un botón, etc)
Podemos modificar el comportamiento de los botones para, por ejemplo, disparar ráfagas de tiros, y evitar que juegos como Mech Warrior o similares no calienten tan rápido el armamento.
Podemos generar una emulación de movimiento analógico para contactos digitales, para por ejemplo, obtener un movimiento mas suave en juegos de conducción cuando solo tenemos entradas digitales.

En fin, se pueden hacer muchas cosas con esta suite, pero hay una de ellas que es la mas interesante desde mi punto de vista, y es la que he utilizado para basar mi solución de streaming de consolas de sobremesa.


  • Game on your PS4, Xbox One, PS3 or Xbox 360 using your favorite PC gaming-grade keyboard and mouse thru the MaxAim plugin.


Lo que podemos entender como que podemos usar lo que tengamos conectado a nuestro pc como mando para usar en nuestra consola.

Con esto tuve la idea base para generar todo el proceso de Gamestreaming.

Si el plugin MaxAim es capaz de utilizar "cualquier dispositivo de entrada de juegos incluyendo teclado y ratón" que tengamos conectado en nuestro PC, y transformar para ser utilizado como mando en una consola, entonces sólo faltaba por ver si estos dispositivos incluyen los Gamepad virtuales generados por cada solución de streaming, a saber:


  • LimeLight: Genera 2 tipos de mandos, uno HID normal y otro XInput compatible
  • Kainy: Genera 4 gamepads de tipo XInput (para los 4 players que es capaz de manejar)
  • Splashtop THD: Genera una conexión USB (incluyendo instalación de drivers) de un mando X360, cada vez que está activo el streaming. Cuando finaliza la sesión de streaming, este mando se "desconecta" de windows.

Para detalles de como montar Titan One, y el resto de componentes para el streaming, mirar la sección "Guía Rápida para Consolas"

Problemas encontrados


Nota: Esta sección es mas bien informativa. Si quieres te puedes saltar esta parte, e ir directamente a la sección de "Configuración de Titan One para realizar el GameStreaming".

Según fuí haciendo pruebas con Titan One, en cada una de las alternativas me encontré con algunos problemas por solucionar.

Limelight


  • Los sticks analógicos generan rangos de movimiento que van:
    • 4 a 32768 para la izquierda o arriba (tanto para el stick derecho como el izquierdo) *
    • 32768 a 65531 para derecha o abajo (tanto para el stick derecho como el izquierdo) *
  • No es posible capturar algunos controles para "mapearlos" al control de salida:
    • SELECT
    • START
    • L2
    • R2
    • L3
    • R3
  • No permite agregar controles virtuales (en pantalla) para completar un layout de controles físicos que no tenga todos los botones (tipicamente faltan los botones L2, R2, L3, R3, según la consola)
  • No permite remapear botones, para utilizar como gamepad (quizás en algunas consolas puede resultar práctico remapear, por ejemplo, los botones de volumen como L2 o R2, o cualquier otro botón faltante)
* Nota: los rangos válidos para el plugin MaxAim son de -100 a 0 y de 0 a 100.

Kainy

  • Los gamepads generados por Kainy no son reconocidos como entradas válidas para MaxAim, por lo que no se pueden utilizar

Splashtop Gamepad THD

  • Splashtop procesa el DPAD como flechas del teclado (no son gamepad)
  • No hay reacción para los siguientes botones:
    • SELECT
    • L2
    • R2
  • Su sistema de controles en pantalla, no incluyen controles de gamepad, por lo que no es posible agregar botones/controles no existentes en la consola, utilizando esta solución
  • No tiene posibilidad de remapear botones físicos.
Además, un gamepad standard no incluye boton extra de "HOME", típico de las consolas PS3, X360, PS4 y XOne.

Como se puede ver, ninguna de las soluciones era inicialmente válida, puesto que en cada una de ellas tenía un conjunto de controles que no se comportaban como era esperado.


Uso de vJoy



Una de las alternativas que intenté utilizar, fué la transformación de comandos (teclado) en un mando virtual.

Para quien no conozca este programa, lo que hace básicamente es transformar las entradas de teclado o ratón, en un gamepad standard. Con esto es posible enviar teclas desde cualquier parte hacia windows, y gracias a este programa, procesar dichas teclas para que se comporten como un gampead.

Para ser mas preciso, transformé los controles de gamepad de la consola cliente de Gamestreaming, en teclas normales de teclado, de tal forma que los podía "leer" con vJoy y "transformar" en mandos virtuales en Windows, con lo cual era posible tratarlos con MaxAim.

Si lo analizamos, veremos que con esto es posible incluso jugar con un gamepad, utilizando Teamviewer (que no tiene soporte para gamepad), simplemente "transformando" los controles en teclas en el gamestreaming, para que luego se "transformen" nuevamente en gamepad.

tiene muchas ventajas el uso de este programa para "simplificar" las complicaciones que he encontrado al hacer streaming, como que ahora es posible mapear todo el conjunto de botones, pero por contraparte tiene un gran problema: Se pierden los valores analógicos.

¿Que significa perder los analógicos?


Es muy simple. Los sticks analógicos (y gatillos analógicos), sólo podrán enviar 2 estados: sin presionar, y presionados. Ya no existen valores intermedios como pueden ser algunos gatillos analógicos que se pueden utilizar en juegos de carreras, donde si presionamos solo un poco, iremos lento, y si presionamos mas, irá mas rápido.

También lo notaremos en juegos que necesitan mover suavemente el personaje, para que camine "de puntillas" o muy lentamente. Con un control digital simplemente tendremos al personaje parado/detenido, o lo tendremos correindo. No existen términos medios.

Donde este problema se ve mucho mas "acusado" es en los juegos FPS, donde no tendremos posibilidad de mover con precisión el punto de mira, y nos será casi imposible jugar este tipo de juegos, utilizando un control digital.


Como se puede ver en este vídeo, al mover el stick derecho lentamente, no tengo reacción hasta que llega a un punto que el control envía la señal de movimiento, y se mueve como si estuviese a tope el stick.


Actualización del Plugin


Luego de estar hablando con el fabricante del producto, ha implementado varias soluciones en una actualización de su Plugin, entre las que destacan:


  • Conversión y normalización automática de rangos de valores analógicos (Sticks y Gatillos)
  • Generación de versión Stand Alone del plugin
  • Soporte para XInput (ahora cualquier mando XInput conectado a windows funcionará con Titan One y su plugin MaxAimDI)
  • Agregado soporte al plugin standalone para cargar y ejecutar scripts (con lo que se implementa por ejemplo el botón "HOME/XBOX")

Todas estas actualizaciones apuntan principalmente a dar soporte a los controles generados por las soluciones de Streaming, por lo que podemos hablar de una solución todo en uno para este tipo de usos específicos (streaming de consolas de sobremesa)



Con esto, ya tenemos acceso al control de nuestra consola y, en conjunto con alguna herramienta de streaming, poder jugar en nuestros dispositivos Android directamente.


Limitación del control para encender la consola


TitanOne y cualquier otro dispositivo similar, tendrá una limitante a la hora de utilizar una consola de sobremesa, y es que no es posible activar el sistema (ninguno de los existentes) por medio del propio dispositivo.

Esto significa que si estamos con nuestra PS3, no podremos encenderla mediante algún comando en el ordenador. Hay que encender físicamente la consola para poder utilizarla.

Lo que si se puede hacer es que una vez que está encendida, podemos apagarla sin problemas.

Esto, de cara al streaming remoto, puede suponer un problema, puesto que si no hay nadie físicamente para poder encender la consola, no podremos realizar ningún tipo de streaming remoto, por ningún medio.


Otros proyectos similares



Mientras he estado haciendo pruebas e investigando, nielo360 (forero habitual de dintoonity) me comentó que existía un hilo similar a lo que yo estaba haciendo en los foros de GeForce

Luego de revisar dicho foro, efectivamente vi que todos estabamos apuntando en la misma dirección, pero con distintas herramientas. Mientras yo me he centrado en una solución externa (hardware) y varias soluciones de software (LimeLight, Kainy, Splashtop), en ese foro se han centrado en una solución de software de Streaming (LimeLight) y varias soluciones de hardware, entre las que se incluyen CronusMax, Titan One, GIMX, Remote GIMX

En dicho hilo se comenta el uso de Cronus Max, y algunos problemas que tenían. También comentan el uso de algunos kit DIY para generar sus propios controles de la consola, pero he considerado bastante complicado y peligroso intentar seguir dichas indicaciones, considerando además mi poca habilidad a la hora de soldar componentes, y por tanto descarté generar una sub-guía para explicar como hacerlo con dichos métodos.

Sabía que la solución a los problemas pasaba principalmente por ponerme en contacto con el fabricante del dispositivo (en este caso, Titan One) y ver si lográbamos encontrar una forma de solucionarlos.

Creo interesante leer dicho hilo, para quienes estén interesados en este tipo de investigaciones, pero para aquellos que no quieran complicarse mucho, no es una lectura obligatoria (aunque insisto, muy recomendada eso sí, por los temas interesantes que se comentan en dicho hilo)


Configuración de nuestra infraestructura


Hasta aquí voy a asumir que ya tienes implementada la parte de streaming hacia tu PC (mira en la guía por la solución que mejor se acomode a tu configuración/infraestructura)

El siguiente paso, luego de tener streaming de nuestro PC en un dispositivo android (consola, tablet/smartphone con mando) es lograr controlar la consola desde el propio dispositivo con la ayuda de Titan One.

El esquema de instalación es muy simple:



Explicación del circuito:





  • Desde la consola (PS3, PS4, X360, XOne *), obtenemos la imagen de salida (señal de vídeo), la cual es enviada a la capturadora de nuestro PC
  • En el PC tenemos alguna aplicación que nos permita visualizar la señal de vídeo y que, mediante un programa de streaming (Limelight, Kainy, Splashtop o simialres) enviaremos a nuestro dispositivo cliente de streaming
  • El dispositivo cliente de GameStreaming (puede ser una tablet, smartphone, otro PC, una consola, etc con un mando conectado a ella), hará la función de pantalla, en donde visualizaremos el contenido de nuestra consola, y de mando, con el cual controlaremos la acción.
  • El PC procesará la información del gamepad enviado por el cliente de streaming, y lo "transformará" a un mando de consola de sobremesa por medio de Titan One (el cual estará conectado por un cable USB), y la aplicación/Plugin MaxAimDI.
  • Dependiendo de la consola que usemos, puede que sea necesario utilizar un mando original** conectado a Titan One, para lograr superar la autentificación del mando (el emulado por Titan One)

* Nota: La guía la he realizado utilizando una PS3 y una X360, pero Titan One tiene soporte para PS4 y XOne por lo que en teoría también debería funcionar para dichas plataformas.
** Nota 2: Algunas consolas como X360, necesitan de un mando con cable para poder realizar el paso de verificación del mando en la consola. También es válido utilizar un receptor inalámbrico del mando de X360, conectado por el puerto USB de Titan One.


La diferencia de este esquema y del inicial, es que en este caso tenemos control indirecto de nuestra consola por medio del mando que tengamos conectado al cliente. Esto nos supone un abanico de opciones mucho mas grande, ya que ahora seremos capaces de utilizar cualquier mando para jugar directamente en nuestra consola.

Además, y por la propia característica de los programas de GameStreaming, podremos realizar incluso un juego remoto, ya que el mando seguirá siendo interpretado por el servidor de streaming, y transformado al mando correspondiente de la consola que tengamos conectada.

Configuración de Titan One para GameStreaming de consolas



  • Descargamos e instalamos la aplicación GTuner desde la página del desarrollador:




  • Ejecutamos GTuner.

  • Conectamos un cable USB en nuestro PC, y en el puerto "PC PROG" (MiniUSB) de Titan One
(Titan One mostrará una "P" cuando esté conectado al PC)

  • Se instalarán los drivers automáticamente.




  • GTuner verificará el firmware instalado en el dispositivo. Si existe alguna versión mas nueva, la descargará e instalará automáticamente.

  • Una vez instalado GTuner y el firmware actualizado en Titan One, ya podemos utilizar el dispositivo, para lo cual conectaremos el puerto USB 2.0 Macho, en la consola que queramos hacer GameStreaming (por ejemplo, X360)

  • Como en este caso es una consola X360, conectamos un mando con cable o receptor inalámbrico en el puerto USB 2.0 Hembra de Titan One


  • En GTuner, seleccionamos "Plugins - Plugin Manager" y descargamos el "MaxAimID". Este plugin será nuestra base para realizar cambios que se compilarán para funcionar con el plugin standalone.

  • Descargamos los siguientes ficheros y los copiamos en una carpeta, por ejemplo "C:\TitanOn"

  • Una vez descargado, vamos a GTuner y seleccionamos la pestaña inferior "GPC Compiler", y cargamos aquí el fichero "Deen0X GameStreaming.glf" que hemos descargado anteriormente.


  • Presionamos F7 (para compilar el script), y a continuación seleccionamos el plugin que hemos instalado MaxAim DI (presionar [Alt]+[F1] para cargarlo directamente)

  • El plugin aparecerá con un layout por defecto y vacío. Seleccionaremos "File - Import Layout", y cargaremos el layout que hemos descargado "Deen0X GameStreaming.glf"


  • Para asegurarnos que el script está correctamente implementado, vamos a seleccionar "Layout Options - Loda GPD Script", para que se configure el script que tenemos cargado en GTuner GPC Compiler.

Y con esto tenemos configurado nuestro mando para usar en una consola de sobremesa.

Explicación del layout


Este layout funciona con los mandos standard generados por cada solución de streaming, y que se ha normalizado de tal forma que no hay que realizar cambios en el layout para que funcione directamente con LimeLight, Kainy o Splashtop THD.



Además, he configurado para cada control, un segundo "input", generando un segundo layout paralelo basado en teclas de un teclado standard. Esto lo he dejado así, para dar soporte a otro tipo de programas de streaming que no tienen soporte para gamepads, y por tanto la interacción se debería realizar basado en teclas (y/o ratón) que son la entrada standard de cualquier programa de streaming.




En la imagen se puede ver el layout completo de teclado configurado en el mando

El resto de controles son los controles standard de un gamepad

Ya solo nos falta activar el mando de nuestra solución de gamestreaming.

Update: He generado un nuevo layout (que se puede descargar en el directorio de ficheros que he subido en Mega) y que ahora tiene soporte para el ratón, el cual duplica las siguientes funciones:

Movimiento = Stick derecho
Botón izquierdo (1) = R2
Botón derecho (2) = L2
Botón central (3) = X (Cuadrado en PSX)
Botón lateral arriba (4) = A (X en PSX)
Botón lateral abajo (5) = B (O en PSX)
Rueda arriba = L1
Rueda abajo = R1

Con este layout es posible, por ejemplo, jugar FPS con teclado y ratón



Probar el control de nuestra consola


Ya tenemos todo configurado, ahora tenemos que ver si funciona. Con el Titan One conectado a la consola, cargamos el plugin y lo primero que hacemos es ver si el mando normal de la consola (que tenemos conectado al Titan One, y éste se encuentra en un puerto USB de la consola) responde sin problemas.

Luego, vamos al PC, cargamos GTuner y el "MaxAim DI plugin", y con el ratón presionamos en los botones de los mandos del control en pantalla.

Si todo está correctamente configurado, cuando presionemos los controles, la consola responderá de acuerdo con lo que presionemos.

Ahora, cargaremos nuestra solución de gamestreaming (LimeLight, Kainy o Splashtop THD). Para este ejemplo, voy a utilizar LimeLight.

En nuestro cliente LimeLight, lanzamos el icono de control remoto del PC Servidor (Mirar en "Gamestreaming 4.4.1 - Guía resumida con LimeLight", en el apartado "Agregar Control Remoto del PC Servidor")

Cuando logremos conectar el equipo para hacer Streaming, nos centraremos en la pantalla de la consola (que ya tenemos conectada a nuestra capturadora, y que estamos mirando por algún programa de visualización), y movemos los controles del cliente de gamestreaming, para ver que respondan correctamente

Una vez verificado que todo funciona correctamente, ya solo nos queda la última parte: maximizar la ventana de la visualización de la capturadora!

el efecto que tendremos es que la pantalla del cliente de streaming contendrá únicamente el contenido de nuestra consola de sobremesa, y que gracias a Titan One, tendremos control desde el dispositivo hacia la consola.


Problemas al actualizar el firmware de Titan One


Es frecuente que por la razón que sea (tenemos conectado algún dispositivo, no tenemos buena conexión internet y los ficheros se descargan corruptos, etc, etc) al actualizar el firmware de Titan One, el proceso no finaliza correctamente, dejando el dispositivo inservible (Brick del dispositivo).




La forma de repararlo es bastante sencilla, y cuenta con 2 tipos de "Bricks":
- Soft Brick: el propio GTuner reconoce el dispositivo como conectado, pero en un estado desconocido. En este caso, basta con:

  • Desconectar el dispositivo de la consola que lo tengamos conectado, desconcetamos también el mando que tengamos para autentificar el dispositivo, y dejamos solo el puerto USB conectado al PC
  • Lanzar el Firmware Update Wizard.


  • Nos detectará el dispositivo, pero con un firmware desconocido. Le damos a "Next" para que descargue el firmware

  • El programa nos flasheará el dispositivo, y al final se reiniciará. El firmware que se instala es uno llamado "de recuperación", y sólo sirve para dejar el dispostivo "listo" para recibir una actualización (de momento no es funcional)

  • Se lanzará nuevamente el Firmare Wizard, y ahora si nos instalará correctamente el firmware actualizado.




Luego de reiniciar, el dispositivo ya se encuentra operativo, y el display muestra una animación para indicar que está todo OK.





Capture Mode


En el caso de que utilicemos una opción que no tenga soporte de gamepads (o por lo menos, soporte completo), podremos hacer uso del "Capture Mode" para reemplazar los controles por teclado.

Ejemplo de escenario de uso:

Estamos con un dispositivo como una consola GPD-G58 o una Much G2, que no tienen un set completo de controles

Dependiendo de la solución de streaming que utilicemos, por ejemplo, Splashtop, podremos poner controles/botones en pantalla que envíen información de teclado, y que Titan One procesará de la manera que tengamos configurado en el gamepad.

De esta manera, precisamente Splashtop que no tiene soporte completo del gamepad (no se puede utilizar SELECT, que no es detectado por el plugin, ni el DPAD de forma correcta, puesto que el propio Splashtop envía la información de un teclado, en vez del gamepad), podemos reemplazar estas funcionalidades de la siguiente manera:

En MaxAim DI plugin, que tendremos cargado nuestro perfil de gamepad para streaming, como he explicado anteriormente este perfil tiene incorporado 3 layout de uso, uno por gamepad y otro por teclado y por Ratón.

En el caso del DPAD, las flechas del teclado (arriba, abajo, izquierda, derecha) harán las funciones del DPAD del mando que enviaremos a la consola conectada.

Por tanto, si splashtop envía las flechas de teclado desde el cliente, el plugin las procesará correctamente y las "transformará" en el DPAD que necesitamos.

Por otra parte, como el botón "SELECT" no es detectado, podemos agregar un botón en pantalla en el propio Splashtop, y que sea la tecla "TAB". Esta tecla está definida como "SELECT" en el mando, por lo que cuando presionemos "TAB", el plugin lo transformará en el "SELECT" que necesitamos en el mando.

Por extensión, y basado en el esquema de teclas que he comentado anteriormente, podemos agregar todos los controles en pantalla que queramos, y el plugin se encargará de transformar dicho esquema en los botones correspondientes para ser procesados y enviados a la consola. Como he sugerido anteriormente, para Splashtop he agregado además los botones "SPACE" (HOME/XBOX) y "ENTER" (START) para tenerlos accesibles fácilmente desde la propia pantalla del dispositivo.

De esta manera, una consola GPD-G58, que no tiene los botones L2, R2, L3, R3, y que splashtop no puede enviar "SELECT", podemos agregar estos 5 botones en pantalla, con lo que conseguir un set completo de botones para poder jugar en la consola.

El dispositivo iReadyGo Much G2, dispone de un set muy básico de controles (DPAD, 4 botones + 2 extra que en general se configuran como A, B, X, Y, Select y Start, pero que para el caso de splashtop, los configuramos como los botones A, B, X, Y, y las teclas TAB y ENTER)
luego, agregamos en pantalla los controles faltantes (stick derecho e izquierdo, L1, L2, L3, R1, R2, R3 y HOME/TAB) y ya podemos jugar con el set completo de teclas en nuestra consola.

Evidentemente, no es la mejor solución para jugar a cualquier tipo de juegos, pero algunos en particular pueden jugarse bastante bien con un set reducido de teclas, sin tener necesidad de presionar en pantalla para usar el resto de controles que le faltan a la consola.

Ejemplos: Tekken y Soul Calibur son juegos que se pueden jugar perfectamente con un dpad/stick y 4 botones. (eso sí, no es muy cómodo jugar juegos de lucha con una Much G2, pero eso es otro tema)

Nota: Utilizando esta opción, al transformar los sticks analógicos en digitales, estaremos perdiendo los valores analógicos.

Si utilizamos LimeLight, tendremos que hacer uso de herramientas de terceros para completar nuestro set de controles, ya que LimeLight no dispone de un sistema de mapeado en pantalla ni de teclado.

Mirar en "Conceptos Generales", la sección "Complementar controles para un Gamepad Standard" para mas detalles y sugerencias sobre este tema.


Uso del "Capture Mode"


Este modo es necesario SOLO para aquellos programas de Gamestreaming que requieran complementar los controles con pulsaciones de teclas.
En este caso, el programa Splashtop Gamepad THD es uno de estos programas. Para otras soluciones como LimeLight, no es necesario realizar los siguientes pasos.


  • Arrancamos el programa Splashtop Gamepad THD
  • Configuramos el programa para enviar las teclas que necesitemos según nuestras necesidades
  • Arrancamos el plugin MaxAim ID
  • Seleccionamos nuestro mando (XInput X360 Gamepad Controller), que es generado por Splashtop
  • Habilitamos el Input en el plugins
  • Cargamos el programa de previsualización de la capturadora


Aquí hay que tener en cuenta que el plugin MaxAim DI, cuando está en modo captura solo trabajará si tiene el foco en la aplicación. Si lo pierde, el programa ya no capturará la entrada de teclado y ratón, y dejará de enviar los comandos a nuestro streaming.

Por esta razón, tenemos que utilizar un "truco" para que no perdamos el foco del plugin.

Titan One está trabajando en este punto, para ofrecer una alternativa que nos permita utilizar de forma natural el streaming de la consola, sin tener que recurrir a trucos de este tipo, pero de momento, y hasta que se libere la nueva versión del plugin, haremos los siguientes pasos

Si disponemos de 2 monitores



  • Pondremos la pantalla completa del programa de visualización en el monitor que vamos a hacer streaming (el principal), y en el otro monitor pondremos el plugin
  • En la consola, al momento de realizar el streaming, veremos la pantalla completa de la consola en nuestro dispositivo.
  • Ir al plugin y seleccionar "Capture". El teclado y ratón quedarán "capturados" por el plugin.

Si dismponemos de 1 monitor


No pondremos la imagen maximizada de la previsualización, pero lo suficientemente grande para que tengamos en pantalla la imagen de la consola, y la parte del plugin que nos permita presionar el botón "Capture" con el ratón.
En el dispositivo cliente de streaming, estando en el modo "Desktop", hazemos zoom de la imagen para ajustar el tamaño de la ventana de la consola, y que ocupe el espacio de la pantalla del dispositivo.
Hacemos click en el botón "Capture" del plugin. El teclado y ratón quedarán "capturados" por el plugin.


Para cualquiera de los casos anteriores


Nota 1: NO HACER ALT+TAB para cambiar de aplicación, por que el plugin perderá el foco y dejará de funcionar (y habrá que cerrar y volver a abrir la aplicación)
Nota 2: Cuando nos pasamos al otro monitor, posiblemente la barra de windows aparezca sobre la imagen de la previsualización. Si es necesario, ocultar automáticamente la barra de windows para que no aparezca en nuestro streaming.

Si todo está configurado correctamente, veremos que los controles que hemos establecido en nuestra consola (DPAD, SELECT) funcionarán correctamente, y que enviarán los comandos a la consola que tengamos conectada.


Actualización del Plugin y del modo Captura


El nuevo plugin incorpora un nuevo modo CaptureHide, que nos ayudará a resolver problemas cuando sólo utilizamos 1 monitor.

El funcionamiento es bastante sencillo. Editaremos el fichero MaxAim.cfg, y agregaremos los siguiente al final del fichero:

[ADVANCED]
CaptureHide=1
Cuando está activo (1), lo que hará es que si presionamos el botón "Capture Mode", la ventana del plugin desaparecerá (se hará transparente)



La segunda opción será implementada de la misma manera, agregando una variable en el fichero, con lo que el plugin quedará en estado "TopMost" y no tendremos problemas para poder seleccionarlo en la pantalla del dispositivo cliente de streaming (como una consola android), donde no disponemos de un teclado para poder cambiar de aplicación.


______________________________________

5 comentarios:

  1. Deen0X, tus guias y analisis estan muy elaborados! Gracias por compartir todo esto.

    Una par de dudas a ver que piensas por ver si me mereceria comprar lo que me falta para poder hacer game streaming.

    Tengo un mini-PC con una tarjeta integrada HD 530, una Nvidia Shield Portable y querria hacer el streaming desde mi Xbox 360 y PS3.

    Creo que deberia encontrar una capturadora grafica con poco lag lo primero y luego un Titan One. Tenia pensado usar Steam para hacer el streaming de video puesto que eso me va muy bien.

    Si hiciera eso, sabes que tendria luego que hacer para que el mando de la Nvidia Shield Portable funcionara con la Xbox 360 y PS3?

    La mayor duda es, deberia conectar la consola Nvidia al Titan One (o mini-PC) por USB? o podrian la Xbox 360 y PS3 de alguna forma reconocer los comandos de forma inalambrica mientras estoy compartiendo el video por Steam?

    Muchas gracias!

    ResponderEliminar

  2. Creo que deberia encontrar una capturadora grafica con poco lag lo primero y luego un Titan One. Tenia pensado usar Steam para hacer el streaming de video puesto que eso me va muy bien.

    Si hiciera eso, sabes que tend coaching-mastery.com/cual-es-el-mejor-tratamiento-para-el-blanqueamiento-dental/

    ResponderEliminar
  3. Eres un crack ! funciona, 100 % comprobado, quería saber como activar la vibración en los controles, funciona el mapeo pero no esta disponible la vibración

    ResponderEliminar