Por lo visto Google va a presentar su hardware para videojuegos durante esta GDC. bueno, en realidad va a presentar la terminal de Project Stream y seguramente el nombre comercial.

El martes Google anunció una conferencia en Game Developers Conference relacionada con videojuegos. «El evento llega tras una beta de Project Stream de un juego AAA -Assassin’s Creed Odysse-, además de los antiguos rumores de Project Yeti. Ahora podemos confirmar que Google planea anunciar su hardware el próximo mes«, dice 9to5google.

Según una fuente familiarizada con los planes, Google mostrará tanto el servicio de juego en la nube Project Stream, que permite jugar a títulos desde navegadores o Chrome OS, como su hardware.
«Stream demostró que no se necesita hardware especializado más allá de un PC». Sin embargo, la demo es sólo una parte de los planes del gigante, que también desarrolla su dispositivo para tener Yeti conectado a las televisiones. «El hardware para Yeti se rumoreó como un accesorio Chromecast, pero desde entonces se describe como ‘una consola de juegos’ con pad diseñado por Google«, según la información.

«Una consola de juegos dicen»…

Bueno, voy a aprovechar para hablar del tema del Cloud Gaming en general con una entrada que ahora mismo no se como terminará.

¿Os acordáis del exitoso Onlive? Pues bien, era un servicio adelantado a su tiempo como dirían muchos que piensan que la nube es el futuro. Obviamente se pego el gran batacazo y para poder jugar a los juegos en el televisor te venía con una caja que hacía de terminal, obviamente con las siguientes funciones:

  • Era el dispositivo que captaba las pulsaciones de botones y palancas del mando y lo enviaba a los servidores de Onlive.
  • Era el dispositivo que recibía el streaming de video por parte del servidor y lo descodificaba de tal manera que al jugador le llegase la imagen.

Obviamente dicha terminal era esencial para poder utilizar el servicio:

Como veis podéis ver el mando y podéis ver en la siguiente descripción lo que hacía dicha caja:

Incluso llegaron a salir cajas que combinaban Google TV con Onlive que será lo que posiblemente veremos por parte de Google esta GDC. Caja que obviamente se va a vender con un mando de control. Ahora bien, de momento Google lo ha probado en forma de beta cerrada el servicio utilizando un solo juego que es Assassin’s Creed Oddysey.

Desde entonces la red se ha llenado de astroturfers y viral marketers hablando de las bondades de la nube, aumentado además por la entrada de Microsoft con el Project XCloud y creando la clásica dialéctica y por tanto batalla de mercado que los medios tanto disfrutan y de la que sacan tanto rédito. Al mismo tiempo como todo aquello en época de pre-lanzamiento tiene un hype por las nubes por parte de los medios con tal de venderte las bondades del nuevo producto o servicio, en este caso del Cloud Gaming.

Obviamente desde el lanzamiento del Onlive la cosa ha cambiado y ha mejorado levemente de cara al Cloud Gaming, no obstante hay una trampa que personalmente me hace mucha gracía, el Digital Foundry hicieron una comparativa del Google Project Stream que sinceramente pone las cosas en su sitio:

Para el jugador ocasional, la inerpretación de Stream del Assassin’s Creed Odyssey se siente similar al lanzamiento de Xbox One. Es una interesante elección como demo para el streaming, dado que el juego no requiere respuesta inmediata y los títulos de AC históricamente han tenido un buen montón de latencia in-game. Añadir un sistema en la nube en la ecuación implica comprimir cada fotograma, transmitirlo a través de internet, decodificarlo en el lado del cliente y sincronizarlo con el refresco de pantalla. En resumen, hay varias parte en el pipeline que añaden un retraso adicional entre la pulsación de un botón y la respuesta en pantalla.

Hemos utilizado la antigua forma de medir la latencia con Project Stream. Hemos apuntado una cámara de 120fps y el pad a la pantalla y hemo contado los fotogramas entre pulsar el botó y ver el resultado reproduciendose en pantalla. Lo hemos comparado con hacer lo mismo en la versión de PC capada a 30fps y a 60fps, entonces hemos repetido el experimento en una Xbox One X. Todos nuestros tests se han lelvado a cabo con una pantalla OLED LG C8, la cual tiene una bien documentada latencia de procesamiento de 21ms.

Project StreamPC 30fpsPC 60fpsXbox One X
Latencia 179ms112ms79ms145ms
No son las cifras de la latencia lo que aquí es importante, esta puede cambiar en cada juego dependiendo del rendimiento e incluso del tipo de acción que quieras medir, sino más bien los valores relativos. Project Stream ejecuta Assassin’s Creed Odyssey a 30fps, y aquí vemos una latencia adicional de 66ms frente al mismo PC ejecutando el mismo framerate. Esto se incrementa a los 100fps en contra de un PC que funciona a 60fps. Esto no es sorprendente y esta aceptado que las tasas de fotogramas más altas reducen el input lag. La sorpresa aquí es que Xbox One X (testeada con una salida a 1080P y 4K) es solo 33ms más rapido que Project Stream.

¿En que se traduce esto? Bueno, el tema esta en que necesitas no solo potencia adicional en el lado servidor por las etapas adicionales sino que además necesitas renderizar el juego mucho, pero que mucho más rápido a nivel de servidor, pero es que además con tal de reducir el input lag independientemente desde donde renderices necesitas aumentar la tasa de fotogramas por segundo. ¿Que significa esto? Pues que realmente necesitamos un sistema a nivel servidor mucho más potente que el que tendríamos con un setup convencional. ¿Y pensáis que eso os lo van a regalar? No, a largo plazo esto lo vais a acabar pagando en la suscripción y a largo plazo os va a costar mucho más para el bolsillo de lo que os costaría comprar una consola y el juego en formato físico.

Pe… pero Urian… El Cloud Gaming elimina barreras y lo hace más accesible todo.

Con tal de que pueda entregar una horrenda experiencia in-game, con una tasa de fotogramas minimamente soportable y una calidad visual regular por no decir mala. va a necesitas un Internet (el cual obviamente tendrás que pagar) a 25-50mbps. Lo que se traduce en 10-25 GB/hora de datos.Si juegas una media de 8 horas a la semana de media preparate pera que en un mes haber descargado 1TB solo para el streaming in-game. ¿Que sentido tiene cuando puedes tener el juego en tu disco duro y jugarlo cuando quieras y en mejores condiciones y calidad de imagen? El alto coste de la transmisión es un coste para las empresas de telecomunicaciones y ya me estoy viendo a estas sacar cuotas más altas por el Cloud Gaming… ¡Felicidades! Acabas de añadir una factura más a pagar cada mes por algo que no necesitabas pagar y no solo eso sino que además no lo tienes en propiedad y vas a tirar aún más el dinero con ello porque no tienes la propiedad de nada en realidad, ni tan siquiera de una misera carpeta en tu disco duro.

No solo eso, sino que algo tan popular como el multijugador competitivo no es viable en el Cloud Gaming de marras y si miráis la historia de los videojuegos este es altamente apreciado por el público. El horrendo input lag del Cloud Gaming lo hace imposible, aparte que acaba requiriendo conexiones online de dos ordenes de magnitud en diferencia por no decir tres o cuatro. Es que además llegando a asumir que no tienes problemas con tu conexión a internet (lo cual es imposible) te puedes encontrar que la latencia entre el servidor y el cliente se multiplique hasta por 4 y como tengas un Ping de 100ms entonces te encontraras con 300-400ms de ping y el juego se hará injugable.

No hace más accesible el competitivo online sino que lo empeora por completo y por ello no puede ser jamás un reemplazo completo a la solución de tener una consola o un PC tradicionales conectados a tu televisor/monitor. Y si no es un reemplazo completo y hace falta comprar una consola para el competitivo online… ¿Que sentido tiene el Cloud Gaming entonces? Todas y cada una de las tecnologías que han reemplazado a otra ya existente lo que han hecho es eliminar barreras de accesibilidad y de precio. ¿Que barreras elimina el Cloud Gaming? Ni una sola realmente. Es más, elimina de la ecuación a una demografia de jugadores completa que no pueden acceder a tener una cuenta corriente y pagar cada mes.

Pero claro, es el futuro por parte de las prostitutas de la prensa que no paran de recibir dinerito fresco para hacer propaganda de los servicios en la nube. Precisamente son los mismos que cuando se habla del PlayStation Now que no ha llegado a paises de habla hispana te dicen que no merece la pena hablar del servicio pero ahora casi se ahogan de placer al hablar del XCloud y el Project Stream cuando posiblemente no podrán ni catarlo, eso si, traducen artículos de otros países donde si que tienen el servicio… Algo que sinceramente es para…

Y es que con tal de reducir latencia es necesario crear infraestructuras en todo el mundo, lo cual supone tratos comerciales con los proveedores de internet de diferentes partes del mundo y esto nos lleva al precio. La información de GeForce Now que tenemos, y que nos va a servir como referencia, nos dice que el coste será de $25 por cada 20 horas para mantener la infraestructura una vez salga de la beta, si lo aplicamos al ejemplo de las 8 horas a la semana de antes, esto nos da $1.25 por hora jugada, unos $10 a la semana y $520 contando las 52 semanas que tiene un año, dinero con el cual te puedes comprar una buena tarjeta gráfica o una consola y si lo aplicamos a largo plazo a un PC nuevo. Pero no nos podemos olvidar que en el caso concreto de GeForce Now estamos hablamos de PC Gaming en la nube donde los requisitos van subiendo con el tiempo lo que supone actualizaciones periódicas del hardware que acabaran afectando a medio y largo plazo al bolsillo de los jugadores.

El otro ejemplo en el mercado es PS Now con un coste de $99 al año, obviamente es mucho más barato pero es porque el hardware base es más barato y no varia con el tiempo, no obstante la trampa esta en que codifica la señal de video y la decodifica posteriormente a una resolución de 720P con tal de reducir la cantidad de bloques y disminuir el ancho de banda y la latencia, pero aún así… tenemos una latencia adicional de 60-70ms de media. La siguiente tabla es una versión simplificada de la que obtuvo Digital Foundry en 2017 sobre el rendimiento de PSnow.

LatenciaKillzone (30fps)Killzone Ultra SFIVHeavy Rain
Local110ms108ms58ms110ms
Ethernet174ms170ms126ms172ms
WiFi185ms180ms128ms188ms

¿Como solventamos esto? Pues obviamente haciendo que en el servidor los juegos se ejecuten mucho más rápido y esto significa reducir el tiempo por fotograma en el servidor como he comentado antes. Precisamente existe una confusión enorme respecto a XCloud por parte de Microsoft cuando se comenta que se va a utilizar el hardware para los servidores en la nube porque básicamente falta información.

Cuando Microsoft presento XCloud nos hablaron de que han cogido una Xbox One y la han adaptado para el Cloud Gaming… ¿Que ventajas tiene esto respecto al actual PS Now? En realidad ninguna porque las limitaciones van a ser las mismas que el actual PS Now.

¿Entonces? La clave esta en reducir el tiempo de renderizado con tal de reducir el input lag y la la latencia. Nvidia hace unos años presento GeForce Grid que no es otra cosa que computación distribuida a través de la GPU con de acelerar el Cloud Gaming enormemente pero esto necesito una serie de cambios en los procesadores de comandos y el resto del front-end de la GPU que Xbox One no tiene porque se ideo como una consola de videojuegos.

Recordar el tema de GeForce Grid es interesante porque fue la base de GeForce Now hace unos años y Gaikai antes de ser comprada por Sony para crear el PS Now iba a utilizar esta tecnología en sus servidores. Esta idea cayo en el olvido porque tras esto no existía un servicio en la nube con cara y ojos en el mercado que lo aprovechará aparte del de la propia Nvidia con su propio servicio. ¿Y con que nos encontramos? Pues que a principios de año durante la conferencia del CES vimos a Lisa Su y Phil Spencer charlando sobre la joint venture que están teniendo y relacionaron la palabra streaming con la misma.

Colocar el hardware de una Xbox One es altamente ineficiente para el XCloud si quieren que funciona bien, lo ideal para aprovechar la potencia de los servidores es que estos funcionen via Grid Computing desde una GPU.

La computación grid (o computación en malla) es una tecnología que permite utilizar de forma coordinada recursos heterogéneos (entre ellos cómputo, almacenamiento y aplicaciones específicas) que no están sujetos a un control centralizado. En este sentido es una forma de computación distribuida, en la cual los nodos participantes pueden ser de iguales o distintas arquitecturas y cubrir toda la gama de potencia de cómputo, desde embebidos y hasta supercomputadores.

La idea es que utilizamos un servidor la mar de complejo y potente para ultra-paralelizar el trabajo en las partes del pipeline donde se puede y reducimos con ello el tiempo de resolución del problema. Claro esta que no lo podemos paralelizar todo y aquí entramos en un problema que se explica a través de la Ley de Amdahl, cuyo enunciado dice lo siguiente:

La mejora obtenida en el rendimiento de un sistema debido a la alteración de uno de sus componentes está limitada por la fracción de tiempo en la que se utiliza dicho componente.

Y es que el gran problema del Cloud Gaming es que hay partes del mismo que no se pueden paralelizar y aunque parezca que estamos fuera de tema, en realidad esto es muy importante para entender el porque es un gran problema.

La formula de la Ley de Amdahl es la siguiente:

  • f es el porcentaje del tiempo (representado en 0>1) en el que el código es paralelizable.
  • c es la cantidad de recursos (núcleos) con la que ejecutamos la parte paralelizable.
  • (1-f) hace referencia a la parte secuencial del código y por tanto la no-paralelizable
  • (f/c) hace referencia a la parte paralelizable del código.

Lo que ocurrirá es que a medida que aumentemos la cantidad de núcleos para la parte paralelizable esta se resolverá cada vez en menos tiempo pero la parte secuencial se mantendrá por lo que llegará un punto en que añadir más núcleos no aumentara el rendimiento sino que disminuira el rendimiento aportado por núcleo.

Y aqúí viene la trampa del Cloud Gaming, obviamente se podrán acelerar las partes via servidor que se puedan ejecutar en paralelo pero la partes secuenciales no y por tanto hay partes de la latencia en el Cloud Gaming que son insalvables por completo aunque pongas un servidor enorme detrás con un montón de GPUs funcionando en paralelo.

La propia AMD confirmo que Google Project Stream utiliza una granja de GPUs en malla y sabemos los resultados que tiene con ello.

En el caso de Microsoft en concreto no me creo que los XBlade sean Xbox al uso y pienso que llegado a un punto van a mejorar estos con una red de GPUs en malla, precisamente no me creo la propaganda de colocar el hardware de una Xbox One S para el XCloud ejecutando juegos de Xbox One porque hay partes del pipeline en la nube que se pueden mejorar con un hardware mucho más capaz no solo a nivel de servidor sino también a nivel local.

¿Como? Pues es muy simple, a nivel de CPU los juegos de Xbox One funcionan con una CPU Jaguar de 8 núcleos (6 para juegos) que precisamente no es para tirar cohetes, si colocamos una CPU más potente en el lado cliente entonces esa parte del pipeline se ejecutará mucho más rapidamente. ¿Pero que ocurre si colocamos una GPU en el sistema local? Si,se cual es vuestra cara ahora mismo…

Pero os explico, existe el hecho de que tenemos la parte de pre-fotograma desde la GPU en la que podemos utilizarla para las físicas y la detección de colisiones del juego, pero también podemos utilizar dicha GPU para el Pre-Culling, algo que ya os he explicado alguna vez. Básicamente se basa en renderizar la escena pero hasta antes de la rasterización, es decir, solo la geometría con tal de poder aplicar el culling geométrico que es la eliminación de la geometría que…

… son transformados pero que al aplicar las coordenadas de cámara/eye coordinates acaba fuera de escena por estar de espaldas a la cámara.

… se encuentran fuera de la pantalla (Viewport) pero aún así son calculados por el Vertex Shader.

… son lo demasiado pequeños y estan a una distancia lo suficientemente lejana de la cámara como para que el RSX rasterizar y luego texturizar, por lo que es una tontería calcular la geometría de estos.

… a la hora de rasterizarse no llegan a tocar ni un pixel de la escena y por tanto el rasterizador los descartará de entrada. Curioamente AMD a partir de Navi (GFX10) va a integrar el Next Generation Geometry Pipeline que va a permitir aplicar esto. ¿Y por qué es importante de cara al Cloud Gaming? Bueno, se ha de aclarar que esto no es para que la parte del pipeline geométrico se ejecute en local sino para que se elimine de la lista toda la geometría no visible en la escena y por tanto la GPU no la tenga que calcular.

El otro punto que me hace suponer que el hardware de XCloud no es el de la Xbox One al uso es la posibilidad que hay a partir Vega de eliminar el problema del overdraw. ¿que es el overdraw? Basicamente es el hecho de re-pintar un pixel varias veces por el hecho que la GPU no renderiza la escena en 3D en orden y lo habitual es que la geometría se ordene al final…

Las GPUs más contemporaneas pueden ordenar después del rasterizado con el Z-Buffer ya disponible…

Si almacenamos la geometría en tiles de manera ordenada entonces la GPU puede recorrer el tile fácilmente y eliminar toda la geometria no visible por el espectador a no ser que se le haga una marca especial, esto reduce enormemente la cantidad de fragmentos a texturizar y aplicar efectos de post-procesado y en el Cloud Gaming el fotograma renderizado desde el servidor se renderiza mucho más deprisa al no existir tanta carga computacional.

Y con el tercer punto volvemos a la virtualización, los juegos de Xbox One si los ejecutamos en una GPU más potente gracias a la virtualización podemos dividir la potencia de esa GPU entre varios clientes y no tener un setup tan complejo en cuanto a chips se refiere.

El caso es que tanto si Google como Microsoft quieren un Cloud Gaming que funcione no solo tienen que tener una cara infraestructura sino que además han de tener terminales lo suficientemente capaces y potentes para así reducir la latencia lo máximo posible no solo desde el lado servidor sino también desde el lado cliente, lo cual es curioso porque esto va en contra del concepto de «olvidate de una consola con el juego en la nube» porque segun como te has de comprar una terminal con cierta capacidad de computación con tal de recibir los juegos con la misma soltura que en una consola, lo que lo hace todo muy de …

Es por esto que se relaciona Lockhart también de cara al streaming… Mi teoría es que el sistema de Google será más rudimentario mientras que el de Microsoft va a traer consigo un hardware en local más avanzado o más bien dar va a dar la posibilidad de utilizarlo si lo tenemos disponible. Es decir, XCloud funcionara en cualquier sistema pero funcionara mejor en Lockhart por todo lo que os acabo de comentar.

En resumen:

  • El Cloud Gaming requiere en el lado servidor sistemas mucho más potentes que en local y por la Ley de Amdahl estos no resuelven la latencia.
  • Resolver la latencia requiere que el usuario final necesite terminales con cierta potencia, lo cual va en contra de la premisa de que el Cloud Gaming ahorre potencia.
  • Incluso con ciertas ayudas hay parte de la latencia que es insalvable.
  • El hecho de necesitar servidores más potentes es algo que se añade al precio del servicio, que lo hace más caro que tener hardware dedicado.
  • El Cloud Gaming gasta muchos más recursos en ancho de banda que el descargarte los juegos en local. Es muy posible que las empresas de telecomunicaciones pongan una tasa adicional a ello y no baja precisamente.
  • El formato físico es propiedad, el digital es usufructo… Ambos derechos sobre el consumir… En el Cloud Gaming tus derechos son aún peores.
  • No es aplicable para el online competitivo…

En general el Cloud Gaming es un bluff enorme, pero dejad que los medios hablen de él como si fuese el futuro, dejad.

Esto es todo, si tenéis algo que comentario como siempre tenéis los comentarios y el Discord para comentar.