As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Solução de problemas do Amazon GameLift Streams
Tópicos
Problemas de conectividade
Ao configurar seu serviço de back-end do Amazon GameLift Streams, verifique o seguinte:
Escolha o mais próximo Região da AWS possível dos usuários finais. A alta latência de seus clientes para a região que hospeda sua transmissão pode afetar a qualidade da transmissão. Você pode executar ping nos endpoints do AWS console na região para obter uma medição aproximada da latência.
Verifique se seu grupo de streams tem capacidade para novos streams.
Verifique se
ConnectionTimeoutSeconds
está definido de forma razoável. Aumente-o para permitir que os clientes tenham mais tempo para se conectarem antes do tempo limite.
Aconselhe seus clientes a verificarem o seguinte:
-
Abra as portas UDP 33435-33465 para permitir o streaming do Amazon Streams. GameLift Se o Amazon GameLift Streams não conseguir acessar essas portas, isso poderá causar problemas de streaming, como uma tela preta ou cinza.
Verifique se sua conexão com a Internet pode sustentar uma velocidade de conexão de pelo menos 10 Mbps para um stream de 1080p. Se você detectar problemas de rede enquanto joga no Amazon GameLift Streams, sua velocidade de internet pode estar flutuando e você pode não estar recebendo pelo menos 10 Mbps de forma consistente. Execute um teste de velocidade da Internet e continue com as etapas de solução de problemas.
Use uma rede com fio, se possível. Ao usar o Wi-Fi, aproxime o dispositivo do roteador para obter uma intensidade de sinal mais forte.
Se você estiver usando um roteador Wi-Fi com 2,4 GHz e 5 GHz bandas, tente se conectar a uma banda diferente. Se você não tiver certeza de como mudar seu roteador para uma banda diferente, visite as páginas de suporte do fabricante ou fornecedor do seu roteador Wi-Fi. Você também pode entrar em contato com o atendimento ao cliente.
Identifique se outras pessoas na mesma rede (especialmente quando estão usando Wi-Fi doméstico) estão executando aplicativos de alta largura de banda, como streaming de vídeo, download, jogos online ou backups.
Feche outros aplicativos em seu dispositivo que ocupam largura de banda.
Não use uma VPN ou proxy durante a transmissão. Eles podem causar latências mais altas e bloquear a jogabilidade.
Verifique se você está usando Wi-Fi em vez de redes celulares ao jogar em um iPad ou iPhone. Usar uma rede celular pode resultar em problemas de conectividade.
Os usuários do macOS devem desativar os Serviços de Localização, pois isso fará com que o Wi-Fi seja pausado de tempos em tempos, o que resultará em uma experiência de streaming ruim.
Problemas de desempenho
Esta seção identifica as possíveis causas do baixo desempenho do streaming de jogos e oferece sugestões para otimizar seus streams com o Amazon Streams. GameLift
O desempenho do jogo é reduzido ao transmitir no Amazon GameLift Streams
Se seu jogo roda bem em sua própria máquina, mas enfrenta problemas de desempenho ao transmiti-lo no Amazon GameLift Streams, considere o seguinte:
-
Sua máquina pode ter um hardware mais poderoso do que o Amazon GameLift Streams. Certifique-se de testar o aplicativo em uma máquina com desempenho semelhante ao hardware usado pelo Amazon GameLift Streams. Para classes de stream gen4n, isso é comparável a um computador com uma GPU NVIDIA RTX 2060. Para classes de stream gen5n, isso é comparável a um computador com uma GPU NVIDIA RTX 3080.
-
O problema pode ser devido à sua conexão de rede ou às configurações do Amazon GameLift Streams. Experimente as dicas de solução de problemas na Problemas de conectividade seção.
Se seu jogo estiver lento mesmo quando executado localmente, você precisará otimizar seu desempenho. Os melhores métodos de otimização dependerão do mecanismo ou estrutura específica que você está usando.
-
Para jogos da Unreal Engine, consulte. Definindo o perfil do desempenho do Unreal Engine
Os aplicativos do Windows apresentam tempos de carregamento lentos ou problemas de travamento
Se seu jogo estiver passando por longos períodos de carregamento ou travamentos, recomendamos o seguinte curso de ação:
-
Garanta que seu aplicativo esteja empacotado e otimizado para desempenho de carregamento usando a orientação do fornecedor do mecanismo sobre como otimizar o conteúdo e o desempenho do sombreador.
-
Certifique-se de que seu aplicativo esteja configurado para ser o aplicativo padrão em um grupo de stream.
-
Otimize a primeira inicialização do aplicativo no serviço armazenando os shaders em cache como parte do pacote do seu aplicativo.
Há duas abordagens para ativar o armazenamento em cache de sombreamento:
-
Cache baseado em driver — Essa abordagem é específica para a GPU do ambiente de tempo de execução e para a versão do driver. Essa opção pode ser aplicada a todos os aplicativos e, portanto, é a abordagem padrão recomendada. As etapas dessa abordagem precisarão ser replicadas para cada GPU/driver combinação.
-
Cache baseado em mecanismo — Essa abordagem permite o armazenamento em cache de sombreamento por meio do mecanismo de jogo, se disponível. Isso coloca a responsabilidade de criar um cache pré-configurado de objetos de estado de pipeline (PSO) sobre o desenvolvedor. Ele também pressupõe que o mecanismo seja capaz de lidar com o suporte de cache para drivers diferentes no mesmo hardware de GPU.
Como prática recomendada, recomendamos implementar primeiro o cache baseado em driver, porque isso não requer um entendimento profundo de como o cache PSO é implementado para o determinado mecanismo.
Com essas implementações, os arquivos de sombreamento podem ser exportados e empacotados com seu aplicativo para que não precisem ser gerados a cada novo início de stream.
Para implementar uma correção de cache baseada em driver para um aplicativo de tempo de execução do Windows
-
Comece a transmitir seu aplicativo padrão e reproduza-o extensivamente para gerar sombreadores para o aplicativo.
Importante
Não deixe de visitar todas as áreas ou níveis do ambiente para gerar o maior número possível de shaders.
-
Antes de fechar a transmissão, habilite o recurso de exportação em sua sessão de transmissão ativa. Para obter detalhes, consulte Exportar arquivos de sessão de stream.
-
Faça o download do arquivo.zip de exportação da sessão de streaming do bucket do Amazon S3 que você especificou na etapa anterior. Você pode encontrar um link para download no console do Amazon GameLift Streams na página Sessões.
-
Localize a pasta de sombreamentos na exportação da sessão de stream. Geralmente é salvo neste local:
AppData\Local\NVIDIA\DXCache
. Faça upload dos arquivos de sombreamento gerados (*.nvph
) para o bucket Amazon S3 do seu aplicativo. -
Crie um
.bat
arquivo que copiará os arquivos do sombreador para a pasta de cache da NVIDIA em tempo de execução. Essa pasta geralmente está localizada em:C:\Users\Administrator\AppData\Local\NVIDIA\DXCache
. Faça o upload do.bat
arquivo para o bucket do aplicativo Amazon S3. -
Crie um novo aplicativo Amazon GameLift Streams com o
.bat
arquivo como caminho executável.
Quando o aplicativo iniciar o streaming, seu .bat
arquivo copiará os sombreadores pré-gerados para o cache de sombreamento antes de iniciar o aplicativo, melhorando o desempenho do carregamento do stream.
nota
Talvez seja necessário repetir essas etapas sempre que atualizar seu aplicativo ou vincular o aplicativo Amazon GameLift Streams a um novo grupo de streams. Grupos de stream mais novos podem conter drivers de GPU atualizados do serviço.
O .bat
arquivo de exemplo a seguir pressupõe que os arquivos de sombreamento estejam armazenados sob o prefixo de bucket do Amazon S3. Shaders\
Você pode usar uma estrutura de pastas diferente.
@echo off set CURRENT_PATH=%cd% set DXCACHE_DIR=%CURRENT_PATH%\
Shaders
set NVIDIA_DXCACHE_DIR=C:\Users\Administrator\AppData\Local\NVIDIA\DXCache if not exist "%NVIDIA_DXCACHE_DIR%" ( mkdir "%NVIDIA_DXCACHE_DIR%" ) xcopy /s /f "%DXCACHE_DIR%" "%NVIDIA_DXCACHE_DIR%" start %CURRENT_PATH%\app.exe
Para implementar uma correção de cache baseada em mecanismo para um aplicativo usando o Unreal Engine
Para essa abordagem, você pode usar os recursos do Unreal Engine para criar um cache de objeto de estado do pipeline (PSO) para seu aplicativo Amazon GameLift Streams. Um cache PSO permite que você forneça estados de pipeline de gráficos pré-compilados com tempos de compilação de tempo de execução reduzidos, o que pode reduzir os problemas durante o carregamento e a renderização. Isso requer conhecimento avançado do Unreal Engine e, portanto, não abordaremos todos os detalhes específicos do motor aqui. Para obter instruções adicionais, consulte a orientação do Unreal Engine em Criação de um cache PSO agrupado
-
Gere sombreadores para seu aplicativo que tenha o registro de PSO ativado.
-
Crie um novo aplicativo Amazon GameLift Streams usando a compilação empacotada com o aplicativo habilitado para PSO.
-
Inicie um stream com o
-logPSO
comando em seu aplicativo de registro de PSO. Você pode usar a opção de argumentos da linha de comando na página de configuração do stream de teste no console do Amazon GameLift Streams.Importante
Não deixe de visitar todas as áreas ou níveis do ambiente para gerar o maior número possível de shaders.
-
Antes de fechar a transmissão, habilite o recurso de exportação em sua sessão de transmissão ativa. Para obter detalhes, consulte Exportar arquivos de sessão de stream.
-
Saia do aplicativo pelo menu ou usando os comandos de desligamento do Unreal. Se você fechar o stream diretamente, o arquivo de pipeline de shaders do Unreal não será gerado.
-
Faça o download do arquivo.zip de exportação da sessão de streaming do bucket do Amazon S3 que você especificou na etapa de exportação. Você pode encontrar um link para download no console do Amazon GameLift Streams na página Sessões.
-
-
Package o arquivo de pipeline de shaders Unreal em seu aplicativo Amazon GameLift Streams.
-
Localize os arquivos PSO gravados (
rec.pipelinecache
) na exportação da sessão de stream emSaved/CollectedPSOs
. Descompacte os arquivos PSO usando comandos Unreal. -
Package uma nova compilação Unreal com a saída gerada da descompactação. Siga as orientações do Unreal, seções Conversão de caches de PSO e Inclusão de caches
de PSO em seu aplicativo. Importante
Ao executar o comando Unreal na seção “Conversão de caches PSO”, certifique-se de usar os mesmos arquivos de entrada da versão do driver. Por exemplo: para DX12, use somente os SM6 arquivos como entradas. Caso contrário, você receberá um erro ao empacotar o novo aplicativo.
-
Crie um novo aplicativo Amazon GameLift Streams para a nova compilação empacotada com os arquivos PSO.
-
Ao iniciar e testar streams, confirme se o cache PSO está sendo carregado. Verifique os registros do jogo para ver a seguinte linha:
Opened FPipelineCacheFile: ../../...
-
nota
Talvez seja necessário repetir essas etapas sempre que atualizar seu aplicativo ou vincular o aplicativo Amazon GameLift Streams a um novo grupo de streams. Grupos de stream mais novos podem conter drivers de GPU atualizados do serviço.
Problemas com o aplicativo
Verificações preliminares
Execute seu aplicativo em uma máquina diferente para verificar se ele está empacotado corretamente. Isso confirma que o conteúdo do seu aplicativo não contém caminhos codificados, ativos ausentes, bibliotecas ou binários que podem não funcionar em outros dispositivos.
(Opcional) Execute seu aplicativo em uma máquina com uma GPU comparável à sua classe de stream do Amazon GameLift Streams. Isso verifica se as configurações de renderização do seu aplicativo são compatíveis com a GPU e se o desempenho atende às suas expectativas.
-
Abra as portas UDP 33435-33465 para permitir o streaming do Amazon Streams. GameLift Se o Amazon GameLift Streams não conseguir acessar essas portas, isso poderá causar problemas de streaming, como uma tela preta ou cinza.
O aplicativo não funciona com o Amazon GameLift Streams no Proton
Verifique se seu aplicativo é compatível com o Proton. Teste seu aplicativo em um ambiente local sem o servidor Amazon GameLift Streams para verificar se ele é compatível com o Proton. Para instruções, consulte Solucionar problemas de compatibilidade com o Proton para Amazon Streams GameLift .
Problemas de aplicativo devido à resolução da tela
Os aplicativos podem congelar, falhar ou renderizar incorretamente se você tentar usar uma resolução de tela cheia que não seja 1920x1080. Recomendamos que você use uma janela de tela cheia sem bordas para executar seu aplicativo e não tente alterar a resolução.
A entrada da chave parece travada no cliente macOS
Em clientes macOS, as teclas podem parecer repentinamente travadas quando a tecla modificadora de comando e outra tecla são pressionadas simultaneamente, repetindo o evento da tecla. Por exemplo, a tecla de seta pode ficar presa quando a tecla Command também é pressionada. Em um jogo, se as teclas de seta forem usadas para girar a câmera, isso fará com que a câmera gire sem parar.
-
Problema: a tecla Command no macOS mapeia para o evento da chave Meta, que mapeia para a tecla Windows no Microsoft Windows. O problema é um bug
que afeta os navegadores macOS quando o Command e outra tecla são pressionados simultaneamente, em que a tecla Meta é redefinida quando liberada, mas a tecla de seta não é redefinida porque o navegador não capturou um evento de tecla para a tecla de seta, então o cliente do Web SDK não enviará um evento de tecla para o servidor e o aplicativo de streaming ainda pensará que a tecla está sendo pressionada. -
Solução: Se você não estiver usando a tecla Command, poderá filtrá-la usando o mecanismo de filtro de teclado do Web SDK (
keyboardFilter
) encontrado na interface do Web SDK.InputConfiguration
O movimento do mouse se comporta de maneira diferente no Amazon Streams GameLift
Se o movimento do mouse se comportar de forma diferente durante o streaming com o Amazon GameLift Streams, como se mover mais rapidamente do que o esperado, talvez seja necessário ajustar a lógica de manipulação do mouse e do cursor em seu aplicativo.
-
Problema: o Amazon GameLift Streams usa uma heurística para escolher se deseja transmitir eventos do mouse no modo “relativo” ou “absoluto”. No modo relativo, as novas atualizações do mouse são fornecidas como pequenas diferenças incrementais em relação à atualização anterior. No modo absoluto, o cursor do mouse é continuamente forçado para uma posição na tela que é sincronizada com o cliente. Quando o cursor do sistema operacional está visível sobre o conteúdo transmitido, a heurística sempre escolhe coordenadas absolutas. Isso pode causar deltas de movimento inesperadamente grandes se seu aplicativo estiver esperando atualizações pequenas e relativas.
-
Solução: Se seu aplicativo espera um movimento relativo do mouse (por exemplo, controles de câmera no estilo FPS ou interações baseadas em arrasto), oculte o cursor do sistema operacional durante as interações do mouse. Por exemplo, esconda o cursor com o mouse para baixo e mostre-o novamente com o mouse para cima. Isso garante que os movimentos de arrasto usem coordenadas relativas, com a posição absoluta sincronizada somente quando o botão é solto.
Para obter mais informações sobre a movimentação do mouse no Amazon GameLift Streams, consulteManuseio do movimento do mouse.
O aplicativo Unreal Engine falha ou requer dependências adicionais
Se seu aplicativo Unreal Engine falhar, travar ou exigir a instalação de dependências adicionais, como o Microsoft Visual C++ Runtime, tente o seguinte.
Use o executável correto. Para que seu aplicativo funcione corretamente com o Amazon GameLift Streams, defina o caminho do aplicativo para o executável completo que está localizado na
Binaries/Win64/
subpasta, ou similar. O Unreal Engine produz dois executáveis: um pequeno executável (um atalho) na raiz da pasta e um executável completo na subpasta.Binaries/Win64/
Se o executável completo estiver ausente, o aplicativo pode não ter sido criado corretamente. Por exemplo, veja a estrutura de pastas a seguir para um exemplo de aplicativo Unreal:BuildApp |-> MyUnrealApp.exe |-> MyUnrealApp |-> Binaries |-> Win64 |-> MyUnrealApp.exe
Desative o Unreal Engine Asserts. Desative as macros Verificar, Verificar e Garantir. Isso pode impedir que o aplicativo crie dumps de emergência, o que, de outra forma, faz com que o aplicativo pare no Amazon GameLift Streams. Se as afirmações estiverem habilitadas, você deverá esperar um atraso. Para obter mais informações, consulte Asserts na documentação do Unreal Engine
. USE_CHECKS_IN_SHIPPING=0
Defina para desativar as macros Check and Verify.handleensurepercent=0
Defina para desativar as macros do Ensure.
O aplicativo Windows termina no lançamento
Se o aplicativo do Windows for encerrado na inicialização, pode ser que seu aplicativo não seja necessário DLLs. Se seu aplicativo for uma compilação de depuração, ele precisará especificamente da versão de depuração da biblioteca Visual C++. DLLs
Para resolver isso, recomendamos que você empacote sua compilação DLLs side-by-side e. Para obter instruções, consulte Preparar uma máquina de teste para executar um executável de depuração
Com o pacote de compilação e DLLs, teste seu aplicativo em uma máquina limpa, como uma EC2 instância da Amazon. Quando estiver pronto para testá-lo no Amazon GameLift Streams, crie um novo aplicativo usando esse pacote. Certifique-se de escolher o executável correto que executará a compilação com o incluído DLLs.
Em geral, recomendamos que você teste sua versão em uma máquina limpa primeiro, antes de experimentar o Amazon GameLift Streams. Para obter instruções sobre testes em uma EC2 instância da Amazon, consulteConfigurar uma máquina remota.
Acesso negado ao fazer uma solicitação ao serviço Amazon GameLift Streams
Se você encontrar uma exceção de “acesso negado” ao tentar realizar uma ação do Amazon GameLift Streams ou usar recursos, sua função AWS Identity and Access Management (IAM) pode ter permissões insuficientes. Isso é causado pela realização de solicitações ao serviço Amazon GameLift Streams, como uma chamada para StartStreamSession.
Certifique-se de que a política da função do IAM afetada tenha as permissões adequadas para o Amazon GameLift Streams. Verifique o seguinte:
-
Se a função do IAM tiver uma política explícita de “negar tudo”, você deve listar explicitamente o GameLift Amazon Streams como uma exceção a essa política adicionando
"gameliftstreams:*"
ao elemento. NotAction Por exemplo:{ "Sid": "DenyAllExceptListedIfNoMFA", "Effect": "Deny", "NotAction": [ "iam:CreateVirtualMFADevice", "iam:EnableMFADevice", "iam:GetUser", "iam:ListMFADevices", "iam:ListVirtualMFADevices", "iam:ResyncMFADevice", "sts:GetSessionToken", "gameliftstreams:*" // Add this ], "Resource": "*", "Condition": { "BoolIfExists": {"aws:MultiFactorAuthPresent": "false"} } }
-
Para solucionar problemas adicionais, consulte a Solução de problemas de mensagens de erro de acesso negado no Guia do usuário do IAM.