Cloud Gaming Caio Valente
Cloud Gaming ou Gaming on Demand Stream de um jogo que fica armazenado em servidores remotos e é transmitido de maneira similar a serviços de “Video on Demand” como YouTube. A transmissão ocorre através de um aplicativo ou mesmo do browser.
Tópicos Motivação Arquitetura Captura de vídeo Encode Transmissão Hardware Vantagens Problemas Serviços existentes
Motivação “Video games will be the fastest-growing and most exciting form of mass media over the coming decade” -- The Economist
Motivação Cloud Gaming é uma tecnologia relativamente nova, mas que já está sendo incorporada na indústria de jogos.
Motivação Cloud Gaming é uma forma de obter alta qualidade gráfica num dispositivo móvel, que apresenta limitações devido ao tamanho e bateria.
Motivação Renderização em tempo real Pode ser custoso dependendo da qualidade gráfica desejada.
Motivação
Comparação de alguns dispositivos móveis com GPUs antigas. Para se ter uma noção da diferença de processamento uma GeForce TITAN atinge Fps no mesmo teste.
Arquitetura
Arquitetura - Cliente Cliente tem 2 tarefas: Vídeo Recebe os dados de vídeo vindo do servidor, faz o decode e a exibição para o usuário Comandos Ao receber um comando cria um pacote e manda para o servidor
Arquitetura - Servidor No modo de operação normal o servidor tem 3 funções distintas: 1 Captura do vídeo, encode e transmissão para o cliente 2 Receber os comandos vindos do cliente e enviar esses comandos para o jogo 3 Executar o jogo
Arquitetura – Servidor Servidor inicializa com um processo num estado de espera Ao receber uma requisição faz um fork() e o processo filho inicializa uma instancia de algum jogo O processo filho então e muda para o modo de operação normal Jogos baseados em Direct3D ou OpenGL
Arquitetura – Servidor Método mais recente Uso de virtualização GPUs virtualizadas
Transmissão Uso de TCP durante a primeira fase, para autenticação
Transmissão Real-Time Transport Protocol (RTP) Protocolo padrão para transporte de vídeo/áudio em redes IP Fica na camada de aplicações, usa UDP na camada de transporte.
Transmissão Uso de RTCP para informações de controle, sincronização e parâmetros de QoS RTP usa algum outro protocolo como SDP para descrever a mídia
Transmissão RTP é usado pois: Detecção da ordem de chagada de dados Compensação de Jitter Permite o uso de multicast para transmissão para vários usuários
Transmissão Comandos são passados por UDP Basta transmitir para varias pessoas ao mesmo tempo para que possam acompanhar o progresso de um jogador
Ferramentas para captura de vídeo Há varias ferramentas disponíveis para isso, alguns exemplos são:
Codec Programa usado para comprimir/descomprimir um sinal É usado para reduzir o impacto causado sobre a rede na transmissão do vídeo
Codec É usado normalmente H.264/MPEG-4 AVC “Today, H.264 is the only codec that can reach 98% of the installed base of computers” Uma ferramenta para realizar o encode é FFMpeg
Codec H.264/MPEG-4 AVC pode ser dividido em duas partes VCL e NAL VCL Video Coding Layer Responsável pelo tratamento do vídeo Subdivide cada frame do vídeo e enviando apenas pedaços que foram alterados
Codec NAL Network Abstraction Layer Facilita o mapeamento do VCL para por exemplo: RTP/IP MP4 MPEG-2
Hardware Nvidia Grid 20 servidores GRID por rack 240 GPUs por rack 720 jogadores simultâneos por rack assinantes por rack
Hardware
Radeon Sky AMD Radeon™ Sky Series graphics card can support up to six HD (720p) game streams each
Vantagens Não é necessário ter o jogo instalado Computador do usuário não é importante Acessível por diversos meios, desktop, notebook, tablet e smartphone
Problemas Demanda muito da rede – 2 Mbit/s é requisito mínimo no OnLive, 5Mbit/s é o recomendado Compressão de vídeo antes da transmissão, o que aumenta a latência e implica em perda de qualidade gráfica
Problemas Gráfico de tempo por bytes/segundo Banda gasta fica em torno de 700KB/s
Problemas Input lag: Tempo entre a realização de uma ação e sua resposta na tela Normalmente temos: Input lag = controller lag + frame processing + display lag Para soluções em nuvem: Input lag = controller lag + frame processing + display lag + network lag + encode lag + decode lag 166ms começa a se tornar um problema Controller lag >= 3*frame processing – 50ms a 60fps
Problemas Internet pode ter um peso muito alto na latência "The reason location is so critical is because of the speed of light. If you are more than 1000 miles from an OnLive data center, then the round trip communications delay ('ping' time) between your home and OnLive will be too long for fast-action video games." Em relação a dispositivos móveis, nem todos os jogos são viáveis. Controle?
294 jogos Demo de 30 minutos para cada jogo Suporte a PC, Mac, Smartphone, Tablet e TV Compra dos jogos separados, ou mensalidade que libera 200+ jogos Uma das features mais interessantes é poder acompanhar o progresso de um jogador
Serviço criado como concorrente ao OnLive, foi comprado pela Sony por U$380mi Deve ser usado para fazer stream de demos e jogos para o PS4, permitindo inclusive compatibilidade com versões anteriores do Playstation ( Stream de jogos do PS3 no PS4 )
Modelo de negócio: Compra Assinatura Comerciais Uso do browser como ao invés de um cliente
Outros serviços
Para os interessados em testar 30 minutos de graça nos seguintes jogos: Civilization 5 Homefront Just Cause 2 Driver Mafia 2 NBA 2K12
Demo
Duvidas?
Referências
Referências N N
Referências getting-started-interview/ getting-started-interview/ and-vdi/ and-vdi/ Octree-Based Sparse Voxelization for Real-Time Global Illumination, Cyril Crassin NVIDIA Research