Contexto e funcionamento interno do streaming de jogos
Em sua essência, o XBOX Game Streaming é composto de milhares de dispositivos XBOX em uma configuração de servidor (servidores XBOX) em uma rede global de datacenters do Azure. Em linhas gerais, a configuração de uma sessão do XBOX Game Streaming funciona da seguinte forma:- O usuário seleciona um jogo que deseja jogar.
- O serviço XBOX Game Streaming atribui ao usuário um servidor XBOX de um pool de servidores disponíveis.
- O serviço conecta o usuário ao servidor, ao salvamento de jogo e ao PLS (que não é sincronizado entre consoles domésticos), inicia o jogo e começa a sessão de streaming de jogos.
- Depois que o usuário termina de jogar, o jogo é encerrado, os dados do jogo salvo são sincronizados, o PLS é carregado e o usuário é desconectado.
Geral
Determinadas características do jogo afetam negativamente a experiência do usuário e podem encerrar uma sessão de usuário no XBOX Game Streaming. Certifique-se de que seu jogo tome as medidas adequadas para atenuar esses riscos.- Saiba quando seu jogo está em streaming. Antes de tudo, é simples testar seu jogo em um ambiente de streaming. Consulte Configurando seu XBOX Development Kit para streaming para obter informações sobre como configurar um XBOX Development Kit e entre em contato com seu representante de conta da Microsoft para obter acesso a um ambiente de nuvem privada para seu título. A otimização mais básica é verificar quando o jogo está sendo executado em um ambiente de streaming por meio de uma chamada de API com reconhecimento de nuvem. Isso oferece uma forma fácil de saber quando alterar comportamentos para o streaming.
Muitos recursos e recomendações deste documento podem beneficiar os jogadores e aumentar a acessibilidade, independentemente do streaming de jogos.
- Permita que novos usuários iniciem o jogo e comecem a jogar o mais rápido possível. As sessões de streaming têm duração mais variada e nem sempre permitem sessões de jogo longas. Você pode usar pontos de salvamento automáticos que só podem ser retomados e avançados quando o usuário está fazendo streaming.
- Garanta que os usuários não sejam desconectados por estarem “ociosos” durante cenas longas. O XBOX Game Streaming encerra as sessões dos usuários quando detecta que eles estão ociosos. Os desenvolvedores devem usar a API XDisplayAcquireTimeoutDeferral para evitar que a sessão entre em estado ocioso e desconecte o usuário.
Vídeo
- Adapte o HUD (heads-up display) e os layouts de interface do usuário ao tamanho da tela. Os jogadores podem fazer streaming para uma grande variedade de dispositivos com diferentes formatos, distâncias de visualização e resoluções. Embora o texto e os elementos de interface do jogo possam ser legíveis em uma TV de tela grande, eles podem ficar difíceis de ler em dispositivos menores. A API XGameStreamingGetStreamPhysicalDimensions pode ajudar a garantir que os elementos de interface escalonáveis sejam grandes o suficiente para o dispositivo específico que recebe o streaming. A Visão geral da resolução personalizada permite ir ainda mais longe e utilizar a tela inteira do dispositivo do usuário (muitos dos quais não correspondem à resolução tradicional de 16:9 de uma TV), proporcionando uma experiência mais imersiva e natural. Isso também melhora a usabilidade para jogos que usam toque nativo.
- Evite texto vermelho sempre que possível Devido aos formatos de compactação de vídeo e à sensibilidade do olho humano à cor vermelha, essa cor costuma ser percebida como a mais afetada. Evitar essa cor, principalmente com as bordas nítidas e as linhas finas do texto, reduzirá os artefatos de compactação percebidos.
- Permita gama e outras configurações de vídeo configuráveis Os jogadores podem fazer streaming para uma grande variedade de dispositivos com diferentes formatos e características de tela. XGameStreamingGetClients pode ser usada para obter um identificador exclusivo para cada dispositivo que recebe o streaming; use esse identificador para salvar e restaurar as configurações de vídeo por dispositivo, a fim de levar em conta as diferenças de brilho entre os dispositivos.
- Reduza a latência de vídeo Garantir que seu jogo seja compatível com o DirectCapture reduzirá significativamente a latência de vídeo para os jogadores, criando uma experiência mais responsiva e agradável. Consulte Visão geral do DirectCapture para obter mais detalhes.
Entrada
- Permita que os usuários interajam com o jogo de uma forma natural para o dispositivo deles. Os jogadores podem fazer streaming para uma grande variedade de dispositivos com diferentes formatos e tipos de entrada, como mouse e teclado, telas sensíveis ao toque etc. Sempre que possível, ofereça suporte a essas outras modalidades. A Visão geral da configuração de stream do Content Test Application (CTA) tem mais informações sobre como testar o streaming com tipos de entrada além de um controle. Para obter mais informações sobre controles de toque e toque nativo, consulte Introdução ao toque.
- Responda ao tipo de entrada mais recente Os jogadores podem retomar jogos e continuar jogando enquanto fazem streaming em vários dispositivos e nem sempre terão um controle físico. Nesses casos, os jogadores esperam poder alternar perfeitamente entre controle, toque e mouse e teclado. Os jogos podem usar uma política de “o último vence” para alternar a experiência do usuário e os prompts para o tipo de entrada preferido dos jogadores. Sempre que possível, não prenda os jogadores a um tipo de entrada nem exija o uso de um controle para alternar para outro tipo de entrada. Consulte Visão geral do GameInput para obter mais informações sobre como lidar com diferentes tipos de entrada.
- Leve em conta a latência de entrada A latência é uma realidade inevitável em ambientes de streaming. Embora a plataforma tente minimizar a latência o máximo possível, os jogos podem entender melhor a latência e levá-la em conta ao interpretar as entradas. Consulte Medição de latência no streaming de jogos e Visão geral da compensação de latência no streaming de jogos para obter mais informações sobre as técnicas disponíveis para reduzir a latência percebida pelos jogadores.
Localização
- Use o Intelligent Delivery para a localização de conteúdo em vez de vários pacotes O XBOX Game Streaming detecta a região física (ou seja, o país/região) de onde o usuário está se conectando. Além disso, o XBOX Game Streaming detecta a localidade que o usuário definiu no dispositivo local. Esses valores detectados de região e localidade são passados ao servidor XBOX para configurá-lo de forma correspondente. O XBOX Game Streaming também garante que o usuário receba o pacote do jogo que foi configurado no Partner Center para a região. Por isso, recomendamos que os desenvolvedores enviem um único pacote para o jogo contendo todo o conteúdo localizado usando especificadores de idioma do Intelligent Delivery, em vez de vários pacotes com diferentes conjuntos de conteúdo localizado. Isso garante que os usuários experimentem o jogo no idioma preferido, independentemente do país/região de onde estejam jogando no momento.
Armazenamento
- Evite exigir uma unidade temporária para manter dados entre sessões de jogo O XBOX Game Streaming limpa todos os dados da unidade temporária entre as sessões. As sessões de jogo subsequentes podem ocorrer em um servidor XBOX diferente, em outro datacenter. Os jogos não devem armazenar na unidade temporária nenhum dado necessário entre sessões.
- Evite o uso extenso do Armazenamento Local Persistente (PLS) O XBOX Game Streaming sincroniza o Armazenamento Local Persistente entre as sessões; usar mais de 4 GB de PLS aumenta o tempo de inicialização do seu jogo no XBOX Game Streaming. Para cada 4 GB adicionais de uso do PLS, espere um aumento de 20 segundos nos tempos de carregamento.
Rede
- Espere latência e características de rede diferentes O XBOX Game Streaming executa consoles XBOX a partir de datacenters do Azure. Isso significa que um usuário pode jogar a partir de vários intervalos de IP e pode ter tempos de ping menores do que os jogadores de consoles domésticos.
- Evite a porta 9002 O XBOX Game Streaming usa a porta 9002 para rede, portanto os desenvolvedores de jogos não devem usar a porta 9002 para comunicações TCP ou UDP. Consulte Configurando o acesso à rede de desenvolvimento para obter informações adicionais sobre portas específicas e a configuração de rede do seu jogo.
A porta 9002 agora está bloqueada nos GDKs recentes.
Cenários de jogo sem suporte
Os cenários de jogo a seguir não são compatíveis durante o streaming na nuvem, porque o XBOX Game Streaming foi projetado para limitar a experiência do usuário apenas à jogabilidade. No entanto, alguns desses cenários podem funcionar quando um usuário faz streaming do próprio console doméstico.- Evite tentar iniciar outros aplicativos ou jogos O XBOX Game Streaming não oferece suporte à inicialização de jogos/aplicativos separados, exceto o navegador Edge.
- Evite depender de navegadores da Web na mesma máquina física do jogo em execução Ativações de protocolo no XBOX Game Streaming para um navegador da Web ou uma experiência web hospedada pelo sistema fazem com que essa ativação seja iniciada no dispositivo local em que o usuário está jogando. Os desenvolvedores devem garantir que essas experiências não dependam de o navegador estar em execução no mesmo dispositivo que o jogo. Exemplo: o jogo abre um site que tem um botão “voltar” que tenta ativar o jogo por protocolo.
- Evite exigir que o usuário reinicie manualmente o jogo em qualquer momento Isso inclui cenários em que um jogo se atualiza e exige que o usuário o reinicie manualmente. O XBOX Game Streaming encerra as sessões dos usuários assim que o jogo é fechado; portanto, reiniciar um jogo encerra o stream.
- Evite punir indevidamente usuários que ficam ociosos por muito tempo O XBOX Game Streaming mantém uma sessão de usuário ativa por 5 a 10 minutos após ele ser desconectado inesperadamente de uma sessão. Portanto, se os jogos punirem usuários ociosos, prejudicarão desnecessariamente os usuários do XBOX Game Streaming. Os jogos podem usar a API XGameStreamingGetClients para detectar especificamente a desconexão de um cliente de GameStreaming.
Serviços de jogo
O XBOX Game Streaming disponibiliza jogos para um público mais amplo por meio de servidores XBOX em datacenters, e isso tem implicações para serviços de jogo que usam características do dispositivo, como tempo de ping ou IDs de dispositivo, para alterar o comportamento do jogo.- Evite usar o XBOX services Security Token (XSTS) para banimento/detecção de fraudes Os usuários do XBOX Game Streaming recebem um novo servidor XBOX a cada sessão, portanto é totalmente esperado ver muitas sessões de usuário separadas vindas do mesmo dispositivo. Além disso, os serviços de jogo não devem banir esses dispositivos nesse caso. Para saber que essas sessões se originam de um servidor XBOX, os desenvolvedores podem usar a API do GDK XGameStreamingGetServerLocationName no jogo. Você também pode detectar isso a partir do token XSTS; consulte Referenciando servidores do XBOX Game Streaming em declarações do XBOX services Security Token (XSTS) para obter mais informações sobre como lidar com a identidade do dispositivo nos seus serviços de jogo.
- Evite impedir os usuários de jogar se muitas pessoas jogarem no mesmo servidor XBOX Servidores XBOX individuais serão usados por vários jogadores em momentos diferentes; se o seu jogo banir essas instâncias, isso prejudicará a experiência dos jogadores do XBOX Game Streaming. (Por exemplo, se o jogo tiver problemas quando muitas sessões de jogo se originarem do mesmo endereço IP ou ID de dispositivo.)
- Evite que os serviços de jogo sinalizem como suspeitas várias sessões vindas do mesmo endereço IP Vários servidores XBOX em um datacenter podem compartilhar o mesmo endereço IP público para comunicações de saída e de entrada. Garanta que seus serviços de jogo consigam lidar com mais de 100 consoles XBOX distintos com o mesmo endereço IP.
-
Evite usar uma lógica que dependa do endereço IP do local onde o jogo está sendo executado para tomar decisões de política relacionadas ao usuário
Os servidores XBOX não estão necessariamente no mesmo país/região em que os usuários estão. O uso do endereço IP para a tomada de decisões de jogabilidade prejudicará a experiência do usuário.
A função XGameStreamingGetClientIPAddress pode ser usada para determinar o endereço IP do cliente de streaming e é mais adequada para a lógica de jogabilidade.[!IMPORTANT]
XGameStreamingGetClientIPAddressestá preterida a partir da versão 2604 do GDK e será removida em uma versão futura. Para determinar a localização do usuário, use as declarações do token XSTS. Consulte Referenciando servidores do XBOX Game Streaming em declarações XSTS para obter detalhes. - Evite que o jogo ou os serviços de jogo falhem ou penalizem os usuários quando as verificações de latência revelarem que os jogadores têm latência muito baixa Devido à configuração dos datacenters, os tempos de ping dos usuários do XBOX Game Streaming serão sempre menores do que os dos usuários em consoles locais. Embora você possa receber um tempo de ping de 0 ms, é importante não usar os tempos de ping para prejudicar/banir usuários. Não remova/ajuste nenhuma lógica interna do jogo/servidor com base nos tempos de ping.
