Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Risoluzione dei problemi di Amazon GameLift Streams
Argomenti
Problemi di connettività
Quando configuri il servizio di backend Amazon GameLift Streams, verifica quanto segue:
Scegli quello più vicino Regione AWS possibile agli utenti finali. L'elevata latenza tra i tuoi clienti e la regione che ospita lo streaming può influire sulla qualità dello streaming. Puoi eseguire il ping degli endpoint della AWS console nella regione per ottenere una misurazione approssimativa della latenza.
Verifica che il tuo gruppo di stream abbia capacità per nuovi stream.
Verifica che
ConnectionTimeoutSeconds
sia impostato in modo ragionevole. Aumentalo per concedere più tempo ai clienti per connettersi prima del timeout.
Consiglia ai tuoi clienti di controllare quanto segue:
-
Apri le porte UDP 33435-33465 per consentire lo streaming da Amazon Streams. GameLift Se Amazon GameLift Streams non riesce a raggiungere queste porte, possono verificarsi problemi di streaming, come uno schermo nero o grigio.
Verifica che la tua connessione Internet sia in grado di sostenere una velocità di connessione di almeno 10 Mbps per uno streaming a 1080p. Se rilevi problemi di rete mentre giochi su Amazon GameLift Streams, la velocità di Internet potrebbe variare e potresti non ricevere almeno 10 Mbps in modo costante. Esegui un test della velocità di Internet e continua con la procedura di risoluzione dei problemi.
Se possibile, utilizza una rete cablata. Quando usi la rete Wi-Fi, avvicina il dispositivo al router per aumentare la potenza del segnale.
Se utilizzi un router Wi-Fi con entrambe le GHz bande 2.4 GHz e 5, prova a connetterti a una banda diversa. Se non sai come passare il router a una banda diversa, visita le pagine di assistenza del produttore o del provider del router Wi-Fi. Puoi anche contattare il loro servizio clienti.
Identifica se altre persone sulla stessa rete (specialmente quando sono connesse a una rete Wi-Fi domestica) stanno eseguendo applicazioni a elevata larghezza di banda come lo streaming di video, il download, i giochi online o i backup.
Chiudi le altre applicazioni sul dispositivo che occupano larghezza di banda.
Non utilizzare una VPN o un proxy durante lo streaming. Possono causare latenze più elevate e bloccare il gameplay.
Verifica di utilizzare il Wi-Fi anziché le reti cellulari quando giochi su iPad o iPhone. L'utilizzo di una rete cellulare può causare problemi di connettività.
Gli utenti macOS dovrebbero disabilitare i servizi di localizzazione poiché di tanto in tanto il Wi-Fi si interromperà, il che porterà a un'esperienza di streaming scadente.
Problemi di prestazioni
Questa sezione identifica le potenziali cause delle scarse prestazioni di streaming di gioco e offre suggerimenti per ottimizzare i tuoi stream con Amazon Streams. GameLift
Le prestazioni di gioco sono ridotte durante lo streaming su Amazon GameLift Streams
Se il gioco funziona bene sul tuo computer ma presenta problemi di prestazioni durante lo streaming su Amazon GameLift Streams, considera quanto segue:
-
La tua macchina potrebbe avere un hardware più potente di Amazon GameLift Streams. Assicurati di testare l'applicazione su un computer con prestazioni simili all'hardware utilizzato da Amazon GameLift Streams. Per le classi di stream gen4n, questo è paragonabile a un computer con una GPU NVIDIA RTX 2060. Per le classi di stream gen5n, è paragonabile a un computer con una GPU NVIDIA RTX 3080.
-
Il problema potrebbe essere dovuto alla tua connessione di rete o alle impostazioni di Amazon GameLift Streams. Prova i suggerimenti per la risoluzione dei problemi riportati nella Problemi di connettività sezione.
Se il gioco è lento anche quando viene eseguito localmente, dovrai ottimizzarne le prestazioni. I migliori metodi di ottimizzazione dipenderanno dal motore o dal framework specifico che stai utilizzando.
-
Per i giochi Unreal Engine, consulta. Profilazione delle prestazioni di Unreal Engine
Le applicazioni Windows presentano tempi di caricamento lenti o problemi di balbuzie
Se il gioco presenta tempi di caricamento prolungati o balbuzie, ti consigliamo di seguire la seguente procedura:
-
Assicurati che l'applicazione sia impacchettata e ottimizzata per le prestazioni di caricamento seguendo le indicazioni del fornitore del motore sull'ottimizzazione dei contenuti e delle prestazioni degli shader.
-
Assicurati che la tua applicazione sia impostata come applicazione predefinita in un gruppo di stream.
-
Ottimizza il primo avvio dell'applicazione sul servizio memorizzando nella cache gli shader come parte del pacchetto dell'applicazione.
Esistono due approcci per abilitare la memorizzazione nella cache degli shader:
-
Caching basato su driver: questo approccio è specifico per la GPU in ambiente di runtime e la versione del driver. Questa opzione può essere applicata a tutte le applicazioni ed è pertanto l'approccio consigliato di default. I passaggi di questo approccio dovranno essere replicati per ogni GPU/driver combinazione.
-
Caching basato sul motore: questo approccio consente la memorizzazione nella cache degli shader tramite il motore di gioco, se disponibile. Spetta allo sviluppatore l'onere di creare una cache preimpostata per gli oggetti di stato della pipeline (PSO). Si presuppone inoltre che il motore sia in grado di gestire il supporto della cache per diversi driver sullo stesso hardware GPU.
Come best practice, consigliamo di implementare innanzitutto la memorizzazione nella cache basata sui driver, poiché non richiede una conoscenza approfondita di come la memorizzazione nella cache PSO viene implementata per un determinato motore.
Con queste implementazioni, i file shader possono essere esportati e impacchettati con l'applicazione in modo che non debbano essere generati a ogni nuovo avvio di stream.
Per implementare una correzione della memorizzazione nella cache basata sui driver per un'applicazione di runtime Windows
-
Avvia lo streaming dell'applicazione predefinita e riproducila per intero per generare shader per l'applicazione.
Importante
Assicurati di visitare tutte le aree o i livelli dell'ambiente per generare il maggior numero possibile di shader.
-
Prima di chiudere lo stream, attiva la funzione di esportazione nella sessione di streaming attiva. Per informazioni dettagliate, consultare Esporta file di sessione di streaming.
-
Scarica il file.zip di esportazione della sessione di streaming dal bucket Amazon S3 specificato nel passaggio precedente. Puoi trovare un link per il download sulla console Amazon GameLift Streams nella pagina Sessioni.
-
Individua la cartella shader all'interno dell'esportazione della sessione di streaming. Di solito viene salvata in questa posizione:
AppData\Local\NVIDIA\DXCache
. Carica i file shader generati (*.nvph
) nel bucket Amazon S3 della tua applicazione. -
Crea un
.bat
file che copierà i file dello shader nella cartella di cache NVIDIA in fase di esecuzione. Questa cartella si trova di solito in:.C:\Users\Administrator\AppData\Local\NVIDIA\DXCache
Carica il.bat
file nel bucket dell'applicazione Amazon S3. -
Crea una nuova applicazione Amazon GameLift Streams con il
.bat
file come percorso eseguibile.
Quando l'applicazione avvia lo streaming, il .bat
file copierà gli shader pregenerati nella cache dello shader prima di avviare l'applicazione, migliorando le prestazioni di caricamento dello stream.
Nota
Potrebbe essere necessario ripetere questi passaggi ogni volta che aggiorni l'applicazione o colleghi l'applicazione Amazon GameLift Streams a un nuovo gruppo di stream. I gruppi di stream più recenti possono contenere driver GPU aggiornati del servizio.
Il seguente .bat
file di esempio presuppone che i file shader siano archiviati con il prefisso del bucket Amazon S3. Shaders\
È possibile utilizzare una struttura di cartelle diversa.
@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
Per implementare una correzione di memorizzazione nella cache basata sul motore per un'applicazione che utilizza Unreal Engine
Per questo approccio, puoi utilizzare le funzionalità di Unreal Engine per creare una cache PSO (Pipeline State Object) per la tua applicazione Amazon GameLift Streams. Una cache PSO consente di fornire stati di pipeline grafiche precompilati con tempi di compilazione in runtime ridotti, il che può ridurre i problemi durante il caricamento e il rendering. Ciò richiede una conoscenza avanzata di Unreal Engine, pertanto non tratteremo qui tutti i dettagli specifici del motore. Per ulteriori istruzioni, consulta la guida di Unreal Engine sulla creazione di una cache PSO in bundle
-
Genera shader per la tua applicazione con registrazione PSO abilitata.
-
Crea una nuova applicazione Amazon GameLift Streams utilizzando la build in pacchetto con l'applicazione abilitata per PSO.
-
Avvia uno stream con il
-logPSO
comando nell'app di registrazione PSO. Puoi utilizzare l'opzione degli argomenti della riga di comando nella pagina di configurazione del flusso di test nella console Amazon GameLift Streams.Importante
Assicurati di visitare tutte le aree o i livelli dell'ambiente per generare il maggior numero possibile di shader.
-
Prima di chiudere lo stream, attiva la funzione di esportazione nella sessione di streaming attiva. Per informazioni dettagliate, consultare Esporta file di sessione di streaming.
-
Esci dall'applicazione dal menu o utilizzando i comandi di spegnimento di Unreal. Se chiudi direttamente lo stream, il file della pipeline degli Unreal Shaders non verrà generato.
-
Scarica il file.zip di esportazione della sessione di streaming dal bucket Amazon S3 specificato nella fase di esportazione. Puoi trovare un link per il download sulla console Amazon GameLift Streams nella pagina Sessioni.
-
-
Package del file Unreal Shaders Pipeline nella tua applicazione Amazon GameLift Streams.
-
Individua i file PSO registrati (
rec.pipelinecache
) nell'esportazione della sessione di streaming sotto.Saved/CollectedPSOs
Decomprimi i file PSO usando i comandi Unreal. -
Package di una nuova build di Unreal con l'output generato dal disimballaggio. Segui le indicazioni di Unreal, sezioni Conversione delle cache PSO e Inclusione
delle cache PSO nell'applicazione. Importante
Quando esegui il comando Unreal nella sezione «Conversione delle cache PSO», assicurati di utilizzare i file di input della stessa versione del driver. Ad esempio: for DX12, usa solo i file come input. SM6 Altrimenti riceverai un errore durante la creazione del pacchetto della nuova applicazione.
-
Crea una nuova applicazione Amazon GameLift Streams per la nuova build in pacchetto con i file PSO.
-
All'avvio e al test degli stream, verifica che la cache PSO sia in fase di caricamento. Controlla i log di gioco per la riga seguente:
Opened FPipelineCacheFile: ../../...
-
Nota
Potrebbe essere necessario ripetere questi passaggi ogni volta che aggiorni l'applicazione o colleghi l'applicazione Amazon GameLift Streams a un nuovo gruppo di stream. I gruppi di stream più recenti possono contenere driver GPU aggiornati del servizio.
Problemi relativi all'applicazione
Controlli preliminari
Esegui l'applicazione su un altro computer per verificare che sia correttamente impacchettata. Ciò conferma che il contenuto dell'applicazione non contiene percorsi codificati, risorse mancanti, librerie o file binari che potrebbero non funzionare su altri dispositivi.
(Facoltativo) Esegui l'applicazione su una macchina con una GPU paragonabile alla tua classe di stream Amazon GameLift Streams. Ciò verifica che le impostazioni di rendering dell'applicazione siano compatibili con la GPU e che le prestazioni soddisfino le tue aspettative.
-
Apri le porte UDP 33435-33465 per consentire lo streaming da Amazon Streams. GameLift Se Amazon GameLift Streams non riesce a raggiungere queste porte, possono verificarsi problemi di streaming, come uno schermo nero o grigio.
L'applicazione non funziona con Amazon GameLift Streams on Proton
Verificate che l'applicazione sia compatibile con Proton. Testa la tua applicazione in un ambiente locale senza il server Amazon GameLift Streams per verificare che sia compatibile con Proton. Per istruzioni, consultare Risolvi i problemi di compatibilità con Proton per Amazon Streams GameLift .
Problemi di applicazione dovuti alla risoluzione dello schermo
Le applicazioni potrebbero bloccarsi, bloccarsi o renderizzare in modo errato se si tenta di utilizzare una risoluzione a schermo intero diversa da 1920x1080. Si consiglia di utilizzare una finestra a tutto schermo senza bordi per eseguire l'applicazione e di non tentare di modificare la risoluzione.
L'immissione della chiave appare bloccata sul client macOS
Sui client macOS, i tasti potrebbero apparire improvvisamente bloccati quando il tasto modificatore Comando e un altro tasto vengono premuti contemporaneamente, ripetendo l'evento chiave. Ad esempio, il tasto freccia potrebbe bloccarsi quando viene premuto anche il tasto Comando. In un gioco, se si usano i tasti freccia per far ruotare la telecamera, questa ruoterà all'infinito.
-
Problema: il tasto Comando su macOS viene mappato all'evento chiave Meta, che esegue il mapping al tasto Windows su Microsoft Windows. Il problema è un bug
che colpisce i browser macOS quando Command e un altro tasto vengono premuti contemporaneamente, in cui il tasto Meta viene ripristinato quando viene rilasciato ma il tasto freccia non viene ripristinato perché il browser non ha acquisito un evento keyup per il tasto freccia, quindi il client Web SDK non invierà un evento keyup al server e l'applicazione di streaming penserebbe comunque che il tasto sia premuto. -
Soluzione: se non si utilizza il tasto Comando, è possibile filtrarlo utilizzando il meccanismo di filtro per tastiera Web SDK (
keyboardFilter
) disponibile nell'InputConfiguration
interfaccia di Web SDK.
Il movimento del mouse si comporta in modo diverso su Amazon Streams GameLift
Se il movimento del mouse si comporta in modo diverso durante lo streaming con Amazon GameLift Streams, ad esempio se si sposta più velocemente del previsto, potrebbe essere necessario modificare la logica di gestione del mouse e del cursore nell'applicazione.
-
Problema: Amazon GameLift Streams utilizza un'euristica per scegliere se trasmettere gli eventi del mouse in modalità «relativa» o «assoluta». In modalità relativa, i nuovi aggiornamenti del mouse vengono forniti come piccole differenze incrementali rispetto all'aggiornamento precedente. In modalità assoluta, il cursore del mouse viene continuamente forzato a una posizione dello schermo sincronizzata con il client. Quando il cursore del sistema operativo è visibile sul contenuto in streaming, l'euristica seleziona sempre le coordinate assolute. Ciò può causare ritardi di movimento inaspettatamente grandi se l'applicazione prevede aggiornamenti relativi di piccole dimensioni.
-
Soluzione: se l'applicazione prevede un movimento relativo del mouse (ad esempio, controlli della fotocamera in stile FPS o interazioni basate sul trascinamento), nascondete il cursore del sistema operativo durante le interazioni con il mouse. Ad esempio, nascondete il cursore con il mouse rivolto verso il basso e mostratelo nuovamente con il mouse rivolto verso l'alto. Ciò garantisce che i movimenti di trascinamento utilizzino coordinate relative, con la posizione assoluta sincronizzata solo quando il pulsante viene rilasciato.
Per ulteriori informazioni sul movimento del mouse in Amazon GameLift Streams, consultaGestione dei movimenti del mouse.
L'applicazione Unreal Engine si blocca o richiede dipendenze aggiuntive
Se l'applicazione Unreal Engine si blocca, si blocca o richiede l'installazione di dipendenze aggiuntive, come Microsoft Visual C++ Runtime, prova quanto segue.
Usa l'eseguibile corretto. Affinché la tua applicazione funzioni correttamente con Amazon GameLift Streams, imposta il percorso dell'applicazione sull'eseguibile completo che si trova nella
Binaries/Win64/
sottocartella o qualcosa di simile. Unreal Engine produce due eseguibili: un piccolo eseguibile (una scorciatoia) nella radice della cartella e un eseguibile completo nella sottocartella.Binaries/Win64/
Se manca l'eseguibile completo, l'applicazione potrebbe non essere stata creata correttamente. Ad esempio, vedi la seguente struttura di cartelle per un'applicazione Unreal di esempio:BuildApp |-> MyUnrealApp.exe |-> MyUnrealApp |-> Binaries |-> Win64 |-> MyUnrealApp.exe
Disattiva Unreal Engine Asserts. Disattiva le macro Check, Verify e Ensure. Ciò può impedire all'applicazione di creare crash dump, che altrimenti causerebbero lo stallo dell'applicazione su Amazon GameLift Streams. Se le asserzioni sono abilitate, dovresti aspettarti un ritardo. Per ulteriori informazioni, consulta la documentazione di Asserts in Unreal Engine
. Imposta
USE_CHECKS_IN_SHIPPING=0
per disabilitare le macro Check and Verify.Impostare
handleensurepercent=0
per disabilitare le macro Ensure.
L'applicazione Windows termina all'avvio
Se l'applicazione Windows termina all'avvio, è possibile che l'applicazione non sia richiesta. DLLs Se l'applicazione è una build di debug, richiede specificamente la versione di debug della libreria Visual C++. DLLs
Per risolvere questo problema, ti consigliamo di impacchettare la build e. DLLs side-by-side Per istruzioni, consulta Preparare una macchina di prova per eseguire un eseguibile di debug
Con il pacchetto DLLs, compila e testa la tua applicazione su una macchina pulita, come un' EC2 istanza Amazon. Quando sei pronto per provarlo su Amazon GameLift Streams, crea una nuova applicazione utilizzando questo pacchetto. Assicurati di scegliere l'eseguibile corretto che eseguirà la build con il file incluso. DLLs
In generale, ti consigliamo di testare la tua build su una macchina pulita, prima di provarla su Amazon GameLift Streams. Per istruzioni sui test su un' EC2 istanza Amazon, consultaConfigura una macchina remota.
Accesso negato quando si effettua una richiesta al servizio Amazon GameLift Streams
Se riscontri un'eccezione di «accesso negato» quando tenti di eseguire un'azione Amazon GameLift Streams o di utilizzare risorse, il tuo ruolo AWS Identity and Access Management (IAM) potrebbe avere autorizzazioni insufficienti. Ciò è causato dall'invio di richieste al servizio Amazon GameLift Streams, ad esempio una chiamata a StartStreamSession.
Assicurati che la policy del ruolo IAM interessato disponga delle autorizzazioni appropriate per Amazon GameLift Streams. Verifica quanto segue:
-
Se il ruolo IAM ha una politica esplicita di «deny-all», devi elencare esplicitamente GameLift Amazon Streams come eccezione a tale politica
"gameliftstreams:*"
aggiungendole all'elemento. NotAction Per esempio:{ "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"} } }
-
Per ulteriori informazioni sulla risoluzione dei problemi, consulta la sezione Risoluzione dei messaggi di errore di accesso negato nella Guida per l'utente IAM.