Gamestreaming 3 - Recomendaciones generales

Recomendaciones generales


En general y para cualquier alternativa que se desee usar, hay algunas recomendaciones generales que hay que tener en cuenta para lograr una buena experiencia.

PC con recursos suficientes. En cualquier situación, mientras mas potencia tenga el PC, generalmente tendremos mejor resultados, pero en especial si la solución empleada se basa en software, con mayor razón necesitamos tener un PC (Procesador, Memoria, Gráfica, etc) con potencia suficiente para poder ejecutar el título/juego que deseamos, y a su vez poder realizar el proceso del servidor de streaming, que consume bastantes recursos en general.

Si estás jugando con un PC que va justo con los recursos para ejecutar un juego, cuando ejecutes el servidor se hará notar

Por ejemplo, en este gameplay capturado en una OUYA, se nota que el juego va un pelín relentizado con respecto a su ejecución normal.


El m ismo juego en una máquina con mas potencia, se nota mucho mas fluído a la hora de realizar el streaming.


Red local rápida. Evidentemente, mientras mas rápida sea la red, mejor experiencia de streaming, pero si no podemos contar con una infraestructura con componentes de alta calidad/velocidad, podemos intentarlo con lo que tengamos a nuestra disposición. He logrado tener buenas experiencias de gamestreaming, incluso con redes que van a 32~35Mbs, que es una velocidad inferior incluso a cualquier red inalámbrica "g" (56Mbs). Es mas, la mayoría de ejemplos comprendidos en esta guía, están ejecutados en una red que va a esta velocidad, por que el servidor de gamestreaming que estoy utilizando se encuentra aislado en una habitación que solo puedo conectar a la red por medio de un PLC, pero que dado la distancia y aparatos que "contaminan" la comunicación, dicho PLC solo me puede dar hasta 32~35Mbs de conectividad. (No utilizo conectividad Wifi, por que prefiero ir por cable, aunque se aun PLC). Además, y para mas datos, mi configuración incluye un router de 2.5GHz (ni siquiera es de 5Ghz, como es habitual pedir en los requisitos de soluciones como NVidia Shield)

Tomando lo anterior como antecedente, no te desanimes si ves que no tienes dispositivos que cumplan los estándares mínimos requeridos por algunas soluciones (como NVidia Shield y sus requisitos de Router). 

Optimiza tu red. No importa el tipo de red que estés utilizando, intenta siempre optimizarla, sobre todo para los momentos que realices Gamestreaming.

Para optimizar dicho uso, evita utilizar otros equipos que utilicen la red en el mismo momento que estés haciendo gamestreaming.

Quita cualquier aplicación que pueda consumir recursos de red (Torrents, Descargas directas, Streaming de vídeo, Actualización de software, etc) de todos los PC y dispositivos que estén conectados a la red. Una vez que tengas tu servidor de streaming funcionando, y hayas podido probar que tal va en un cliente, ya podrás ir ajustando los servicios de las demás máquinas para, por ejemplo, ver que puedes y que no dependiendo de tu velocidad de red.

Para ejemplos, un vídeo de un gamestreaming. El vídeo corresponde a la parte del servidor (Madrid). El cliente estaba en Extremadura (consola Android GPD-G5A). Al momento de jugar, la parte cliente estaba haciendo descargas de ficheros desde Mega o similar, y aún así fué posible generar este gamestreaming (y jugar sin mayores problemas, exceptuando algún tirón ocasoinal).

Como nota, el Cliente se conecta a un router de 54Mbs (red de tipo "g"), y su conexión a internet es de 20Mbs


El vídeo no tiene audio del juego, por que el cliente de streaming es quien tiene la salida de audio del PC.

En la parte cliente se ha configurado de tal manera que se ha perdido en calidad de imagen, pero se ha ganado en desempeño del juego.


Ayuda al servidor de Streaming. Hay muchas formas de "ayudar" al servidor, para hacer su carga mas liviana, sobre todo si tu configuración de hardware es ajustada.

Si tu PC es capaz de sacar la imagen a 1080p, pero tu dispositivo solo llega a 480p, es evidente que el proceso redimensionará mucho la imagen original para que se vea correctamente en la imagen final.

Si en vez de sacar a 1080p la imagen, la sacas directamente a 480p o a una resolución cercana (576 o 600 pixeles de alto por ejemplo), el proceso de redimensionamiento será mas rápido, ya que no habrá necesidad de calcular tanta superficie para ver que quedará al final.

Si el equipo es potente, pero la red no es tan rápida, puedes aplicar todos los filtros que puedas en el servidor, de manera que se vea lo mejor posible el juego. Eso no afectará a la velocidad del streaming, pero el tamaño de la imagen si, puesto que mientras mas grande sea la imagen, mas información se debe enviar por la red para que el cliente la procese.

Sobre el Firewall. Al principio te pegarás con el firewall del servidor. Mi sugerencia es que desactives temporalmente el firewall, y pruebes a hacer streaming, y cuando tengas una configuración que te parezca aceptable, habilita nuevamente el firewall y concede los permisos necesarios que te pueda pedir.

Sobre los Antivirus. En general no deberían "molestar", pero si en algún caso ves que el servidor tiene actividad innecesaria del disco, puedes intentar a desactivar temporalmente, o incluír el programa de straming en la lista de excepciones, para que el Antivirus no lo considere a la hora de buscar procesos con actividad sospechosa.


Otras recomendaciones generales


En términos generales, vamos a necesitar para cualquier tipo de solución que queramos implementar:


  • Un PC con potencia suficiente para ejecutar el juego de forma fluída, y si vamos a emplear una solución basada en software, entonces debemos asegurarnos de tener CPU suficiente para el juego y para el servidor de gamestreaming.
  • Una buena conexión de red. Vamos a intentar evitar el uso de Wifi para realizar el streaming, por que es una vía de conexión que puede sufrir muchas interferencias, cambios de velocidad, etc, y que afectarán a nuestro streaming. Lo ideal es tener un PC con un puerto LAN conectado directamente por cable a nuestro router. Si es un puerto Gigabit, mejor (y si la red completa va por Gigabit, incluyendo el servidor y el clinte, mucho mejor aún).
  • Es importante la velocidad de subida, tanto o mas que la de bajada. Para realizar streaming por internet, la velocidad de subida que podamos ofrecer desde nuestra casa será determinante a la hora de obtener una buena experiencia. Es bueno asegurar al menos unos 3MBs de subida, para tener un ancho de banda suficiente para enviar toda la información del streaming, y que sea fluído. Si no tenemos buen ancho de banda de subida, la experiencia siempre será poco satisfactoria.
  • Wifi de buena calidad: Si el cliente será un dispositivo conectado por Wifi, vamos a intentar establecer una conectividad wifi de la mejor calidad posible. Con ayuda de algunas herramientas vamos a buscar el canal con menos "ruido", configurar los servicios wifi que estemos utilizando en casa para que sean los mínimos, etc. En definitiva, optimizar nuestra wifi en general.
  • Streaming óptimo: En términos generales, vamos a intentar optimizar la calidad del streaming, sobre todo si la solución elegida es basada en Software. Si vamos a ejecutar un juego en nuestro PC a FullHD (1080 pixeles en vertical), y nuestro cliente solo puede alcanzar calidad HD (720 pixeles en vertical), entonces intentaremos configurar la pantalla del servidor para que se acerque lo mas posible a la pantalla de nuestro cliente. Este punto puede tener relevancia a la hora de usar una solución por software, por que será menos el área de pantalla que habrá que comprimir, enviar al cliente y finalmente re-dimensionar para mostrar. Si logramos enviar una pantalla del mismo tamaño que el cliente, posiblemente ganemos en performance, por que no habrá necesidad de redimensionar la imagen original (o si es muy parecida la pantalla, el trabajo de redimensión tardará menos que si enviamos una pantalla del mayor tamaño desde el servidor)
  • Sobre los colores (profundidad de color) del servidor, después de hacer muchas pruebas, creo que lo mejor es dejarlo en 32bits. Al parecer el codificador que comprime la imagen, pierde mas tiempo con profundidades de colores menores, por lo que no se gana en performance si bajamos la calidad de 32bits (o 24bits). En todo caso siempre puedes hacer pruebas para ver con cual alternativa te va mejor.
  • Quitar aplicaciones innecesarias: No está de mas mencionar que cualquier tipo de programa P2P que tengas en ejecución, es mejor apagarlo para ganar ese ancho de banda que te estaba consumiendo. Programas de Torrent, eMule (si todavía se usa), jDownloader, Ares, etc, etc... todo este tipo de programas son enemigos del streaming, por lo tanto vamos a quitarlos completamente (incluso de la barra de tareas) para que no nos interfieran en nuestra sesión de streaming.
  • Si vas a hacer gamestreaming remoto, sugiero que en lo posible definas el DMZ de tu router, para que todas las peticiones no configuradas en la tabla de enrutamiento, las resuelva la propia máquina que hace de servidor.
  • Si no vas sobrado de CPU, puedes intentar configurar las prioridades de ejecución de los programas. Por ejemplo, en Kainy puedes intentar subir la prioridad de ejecución del Servidor de streaming, y del propio juego para que tengan una prioridad superior al resto de aplicaciones que se estén ejecutando. Ojo, nunca la pongas en prioraidad de "tiempo real", por que la máquina posiblemente se termine colgando.
  • Recomendación: Tener un segundo tipo de conectividad a nuestro PC que nos permita controlarlo de forma remota, y ajustar parámetros en caso de ser necesario en nuestro servidor de Gamestreaming externo. Como sugerencia, se puede considerar conectar con Teamviewer (gratuíto desde microsoft).

Hay otro tipo de sugerencias que se pueden considerar, como ajustar el tipo de escaneo del Antivirus para que no consuma tantos recursos, apagar servicios de windows, etc, etc, pero esto ya es mejor que cada uno investigue como poder ganar algo mas de rendimiento a la máquina, eso sí, sacrificando otras cosas a cambio. Personalmente creo que si con los datos anteriores ya no consigues un buen rendimiento, tampoco vas a ganar mucho mas toqueteando los servicios. Como mucho, si el antivirus le da por trabajar cuando estás haciendo streaming, podrías considerar poner a Kainy o el juego que estés ejecutando dentro de la lista de excepciones temporales (si tiene) de escaneo en demanda, para que el antivirus no se piense que hay una actividad sospechosa en la máquina.

Gamestreaming Externo (vía Internet)


Luego, existe una variable mas a considerar, y es que si tenemos planeado hacer Gamestreaming externo a nuestra casa (que nos conectemos a nuestro PC desde fuera, por medio de internet), lo mas importante en este caso es la velocidad de subida que tengamos contratada para nuestra conexión de internet.

En términos generales, con un ancho de banda de unos 3MB se puede tener una buena experiencia de gamestreaming (además de las condiciones idóneas para nuestro servidor), pero siempre se agradece tener mas ancho de banda de subida, ya que al final de esto dependerá la calidad de imagen (entre otras variables) que podamos disfrutar en nuestro cliente remoto conectado. A mas ancho de banda mejor calidad en el Gamestreaming, y a menos lag tengamos, mejor tiempo de respuesta de los controles de nuestro cliente.

Como nota/recomendación, también sugiero que antes de hacer Gamestreaming remoto, conectar a nuestro servidor desde algún método alternativo externo a nuestra red, para ver que no tengamos problemas como que el firewall de nuestro PC o router nos esté bloqueando la entrada/salida de información, etc.



Descartar problemas potenciales


Nota: En algunos tipos de solución pueden existir un conjunto de juegos que no serán posibles correr vía Gamestreaming. Son pocos, pero existen. Ten en cuenta esto a la hora de intentar hacer streaming, por ir descartando problemas que tengas en el Streaming, y que realmente tengas un título que no se pueda ejecutar (sobre todo en las versiones de Software de Gamestreaming)

Sugiero buscar algún juego que sepamos que se puede ejecutar, y que nos sirva como base para hacer pruebas. En mi caso, mis juegos de prueba son:

  • Batman Arkham City: Juego que corre tanto en ventana como en pantalla completa. Es un buen juego para probar cuando tenemos algo de lag (para soluciones basadas en Software/CPU).
  • Street Fighter IV: Juego que corre tanto en ventana como en pantalla completa. Es un buen juego para probar cuando tenemos muy poco lag (para soluciones basadas por hardware/GPU).

En mis pruebas, generalmente recurro a los mismos juegos, precisamente para tener un método de comparación entre las distintas soluciones y sus resultados. Por esta razón en esta guía habrán vídeos con titulos que se repiten muchas veces, no por falta de juegos, sino por mostrar como se van desarrollando dichos títulos con cada una de las alternativas.

No hay comentarios:

Publicar un comentario