Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Memecahkan Masalah Amazon Streams GameLift
Topik
Masalah konektivitas
Saat menyiapkan layanan backend Amazon GameLift Streams, periksa hal berikut:
Pilih yang Wilayah AWS paling dekat dengan pengguna akhir. Latensi tinggi dari klien Anda ke Wilayah yang menghosting streaming Anda dapat memengaruhi kualitas streaming. Anda dapat melakukan ping pada titik akhir AWS konsol di Wilayah untuk mendapatkan perkiraan pengukuran latensi.
Pastikan grup streaming Anda memiliki kapasitas untuk aliran baru.
Verifikasi bahwa
ConnectionTimeoutSeconds
sudah diatur secara wajar. Tingkatkan untuk memungkinkan lebih banyak waktu bagi pelanggan untuk terhubung sebelum waktu habis.
Sarankan pelanggan Anda untuk memeriksa hal-hal berikut:
-
Buka port UDP 33435-33465 untuk memungkinkan streaming dari Amazon Streams. GameLift Jika Amazon GameLift Streams tidak dapat mencapai port ini, itu dapat menyebabkan masalah streaming, seperti layar hitam atau abu-abu.
Verifikasi bahwa koneksi internet Anda dapat mempertahankan kecepatan koneksi minimal 10 Mbps untuk streaming 1080p. Jika Anda mendeteksi masalah jaringan saat bermain di Amazon GameLift Streams, kecepatan internet Anda mungkin berfluktuasi dan Anda mungkin tidak mendapatkan setidaknya 10 Mbps secara konsisten. Jalankan tes kecepatan internet dan lanjutkan melalui langkah-langkah pemecahan masalah.
Gunakan jaringan kabel jika memungkinkan. Saat menggunakan Wi-Fi, pindahkan perangkat Anda dekat dengan router Anda untuk kekuatan sinyal yang lebih kuat.
Jika Anda menggunakan router Wi-Fi dengan GHz band 2.4 GHz dan 5, coba sambungkan ke band yang berbeda. Jika Anda tidak yakin cara mengalihkan router Anda ke band yang berbeda, kunjungi halaman dukungan produsen atau penyedia router Wi-Fi Anda. Anda juga dapat menghubungi layanan pelanggan mereka.
Identifikasi apakah orang lain di jaringan yang sama (terutama saat menggunakan Wi-Fi rumah) menjalankan aplikasi bandwidth tinggi seperti streaming video, pengunduhan, game online, atau cadangan.
Tutup aplikasi lain di perangkat Anda yang menggunakan bandwidth.
Jangan gunakan VPN atau proxy saat streaming. Mereka dapat menyebabkan latensi yang lebih tinggi dan memblokir gameplay.
Pastikan Anda menggunakan Wi-Fi alih-alih jaringan seluler saat bermain di iPad atau iPhone. Menggunakan jaringan seluler dapat menyebabkan masalah konektivitas.
Pengguna macOS harus menonaktifkan Layanan Lokasi karena akan menyebabkan Wi-Fi berhenti sejenak dari waktu ke waktu, yang akan menyebabkan pengalaman streaming yang buruk.
Masalah kinerja
Bagian ini mengidentifikasi penyebab potensial kinerja streaming game yang buruk dan menawarkan saran untuk mengoptimalkan streaming Anda dengan Amazon Streams. GameLift
Performa game berkurang saat streaming di Amazon GameLift Streams
Jika game Anda berjalan dengan baik di komputer Anda sendiri tetapi mengalami masalah kinerja saat Anda melakukan streaming di Amazon GameLift Streams, pertimbangkan hal berikut:
-
Mesin Anda mungkin memiliki perangkat keras yang lebih kuat daripada Amazon GameLift Streams. Pastikan untuk menguji aplikasi pada mesin dengan kinerja yang mirip dengan perangkat keras yang digunakan Amazon GameLift Streams. Untuk kelas aliran gen4n, ini sebanding dengan komputer dengan GPU NVIDIA RTX 2060. Untuk kelas aliran gen5n, ini sebanding dengan komputer dengan GPU NVIDIA RTX 3080.
-
Masalahnya mungkin karena koneksi jaringan Anda atau pengaturan Amazon GameLift Streams. Coba tips pemecahan masalah di bagian ini. Masalah konektivitas
Jika game Anda lambat bahkan saat berjalan secara lokal, Anda harus mengoptimalkan kinerjanya. Metode optimasi terbaik akan tergantung pada mesin atau kerangka kerja tertentu yang Anda gunakan.
-
Untuk game Unreal Engine, lihat. Memprofilkan kinerja Unreal Engine
Aplikasi Windows mengalami waktu muat yang lambat atau masalah gagap
Jika game Anda mengalami waktu muat yang lama atau perilaku gagap, kami merekomendasikan tindakan berikut:
-
Pastikan aplikasi Anda dikemas dan dioptimalkan untuk kinerja pemuatan menggunakan panduan vendor engine Anda seputar mengoptimalkan konten dan kinerja shader.
-
Pastikan aplikasi Anda disetel menjadi aplikasi default dalam grup aliran.
-
Optimalkan peluncuran aplikasi pertama pada layanan dengan cache shader sebagai bagian dari kemasan aplikasi Anda.
Ada dua pendekatan untuk mengaktifkan cache shader:
-
Caching berbasis driver — Pendekatan ini khusus untuk GPU lingkungan runtime dan versi driver. Opsi ini dapat diterapkan ke semua aplikasi dan oleh karena itu merupakan pendekatan default yang direkomendasikan. Langkah-langkah untuk pendekatan ini perlu direplikasi untuk setiap GPU/driver kombinasi.
-
Caching berbasis mesin — Pendekatan ini memungkinkan cache shader melalui mesin game, jika tersedia. Ini menempatkan beban untuk membuat cache objek status pipa (PSO) pra-panggang pada pengembang. Ini juga mengasumsikan bahwa mesin mampu menangani dukungan cache untuk driver yang berbeda pada perangkat keras GPU yang sama.
Sebagai praktik terbaik, kami merekomendasikan untuk menerapkan caching berbasis driver terlebih dahulu, karena tidak memerlukan pemahaman mendalam tentang bagaimana caching PSO diimplementasikan untuk mesin yang diberikan.
Dengan implementasi ini, file shader dapat diekspor dan dikemas dengan aplikasi Anda sehingga tidak harus dibuat dengan setiap streaming baru dimulai.
Untuk menerapkan perbaikan caching berbasis driver untuk aplikasi runtime Windows
-
Mulai streaming aplikasi default Anda dan mainkan secara ekstensif untuk menghasilkan shader untuk aplikasi.
penting
Pastikan untuk mengunjungi semua area atau tingkat lingkungan untuk menghasilkan shader sebanyak mungkin.
-
Sebelum menutup aliran, aktifkan fitur ekspor di sesi streaming aktif Anda. Lihat perinciannya di Ekspor file sesi streaming.
-
Unduh file ekspor sesi streaming .zip dari bucket Amazon S3 yang Anda tentukan pada langkah sebelumnya. Anda dapat menemukan tautan unduhan di konsol Amazon GameLift Streams di halaman Sesi.
-
Temukan folder shader dalam ekspor sesi aliran. Biasanya disimpan ke lokasi ini:
AppData\Local\NVIDIA\DXCache
. Unggah file shader (*.nvph
) yang dihasilkan ke bucket Amazon S3 aplikasi Anda. -
Buat
.bat
file yang akan menyalin file shader ke folder caching NVIDIA saat runtime. Folder ini biasanya terletak di:C:\Users\Administrator\AppData\Local\NVIDIA\DXCache
. Unggah.bat
file ke bucket aplikasi Amazon S3. -
Buat aplikasi Amazon GameLift Streams baru dengan
.bat
file sebagai jalur yang dapat dieksekusi.
Saat aplikasi Anda mulai streaming, .bat
file Anda akan menyalin shader yang telah dibuat sebelumnya ke cache shader sebelum meluncurkan aplikasi, meningkatkan kinerja pemuatan aliran.
catatan
Anda mungkin perlu mengulangi langkah-langkah ini setiap kali memperbarui aplikasi atau menautkan aplikasi Amazon GameLift Streams ke grup streaming baru. Grup aliran yang lebih baru dapat berisi driver GPU yang diperbarui dari layanan.
Contoh .bat
file berikut mengasumsikan bahwa file shader disimpan di bawah awalan bucket Amazon S3. Shaders\
Anda dapat menggunakan struktur folder yang berbeda.
@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
Untuk mengimplementasikan perbaikan caching berbasis mesin untuk aplikasi yang menggunakan Unreal Engine
Untuk pendekatan ini, Anda dapat menggunakan fitur Unreal Engine untuk membuat cache objek status pipeline (PSO) untuk aplikasi Amazon GameLift Streams Anda. Cache PSO memungkinkan Anda mengirimkan status pipeline grafis yang telah dikompilasi sebelumnya dengan waktu kompilasi runtime yang berkurang, yang dapat mengurangi hambatan selama pemuatan dan rendering. Ini membutuhkan pengetahuan lanjutan tentang Unreal Engine, dan oleh karena itu kami tidak akan membahas semua detail khusus mesin di sini. Untuk petunjuk tambahan, lihat panduan dari Unreal Engine dalam Membuat Cache PSO yang Dibundel
-
Hasilkan shader untuk aplikasi Anda yang mengaktifkan PSO logging.
-
Buat aplikasi Amazon GameLift Streams baru menggunakan paket build dengan aplikasi berkemampuan PSO.
-
Mulai streaming dengan
-logPSO
perintah di aplikasi logging PSO Anda. Anda dapat menggunakan opsi argumen baris perintah pada halaman konfigurasi aliran Uji di konsol Amazon GameLift Streams.penting
Pastikan untuk mengunjungi semua area atau tingkat lingkungan untuk menghasilkan shader sebanyak mungkin.
-
Sebelum menutup aliran, aktifkan fitur ekspor di sesi streaming aktif Anda. Lihat perinciannya di Ekspor file sesi streaming.
-
Keluar dari aplikasi dari menu atau dengan menggunakan perintah shutdown Unreal. Jika Anda menutup aliran secara langsung, file pipeline shader Unreal tidak akan dibuat.
-
Unduh file ekspor.zip sesi streaming dari bucket Amazon S3 yang Anda tentukan di langkah ekspor. Anda dapat menemukan tautan unduhan di konsol Amazon GameLift Streams di halaman Sesi.
-
-
Package file pipeline Unreal shaders ke dalam aplikasi Amazon GameLift Streams Anda.
-
Temukan file PSO yang direkam (
rec.pipelinecache
) dalam ekspor sesi aliran di bawahSaved/CollectedPSOs
. Buka paket file PSO menggunakan perintah Unreal. -
Package build Unreal baru dengan output yang dihasilkan dari unpacking. Ikuti panduan Unreal, bagian Mengonversi cache PSO dan Termasuk cache
PSO di Aplikasi Anda. penting
Saat menjalankan perintah Unreal di bagian “Mengonversi Cache PSO”, pastikan Anda menggunakan file input versi driver yang sama. Misalnya: untuk DX12, gunakan hanya SM6 file sebagai input. Jika tidak, Anda akan mendapatkan kesalahan saat mengemas aplikasi baru.
-
Buat aplikasi Amazon GameLift Streams baru untuk build paket baru dengan file PSO.
-
Saat memulai dan menguji aliran, konfirmasikan bahwa cache PSO sedang dimuat. Periksa log game untuk baris berikut:
Opened FPipelineCacheFile: ../../...
-
catatan
Anda mungkin perlu mengulangi langkah-langkah ini setiap kali memperbarui aplikasi atau menautkan aplikasi Amazon GameLift Streams ke grup streaming baru. Grup aliran yang lebih baru dapat berisi driver GPU yang diperbarui dari layanan.
Masalah aplikasi
Pemeriksaan awal
Jalankan aplikasi Anda di mesin yang berbeda untuk memverifikasi bahwa itu dikemas dengan benar. Ini mengonfirmasi bahwa konten aplikasi Anda tidak berisi jalur hardcode, aset, pustaka, atau binari yang hilang yang mungkin tidak berfungsi di perangkat lain.
(Opsional) Jalankan aplikasi Anda di mesin dengan GPU yang sebanding dengan kelas aliran Amazon GameLift Streams Anda. Ini memverifikasi bahwa pengaturan rendering aplikasi Anda kompatibel dengan GPU dan kinerjanya memenuhi harapan Anda.
-
Buka port UDP 33435-33465 untuk memungkinkan streaming dari Amazon Streams. GameLift Jika Amazon GameLift Streams tidak dapat mencapai port ini, itu dapat menyebabkan masalah streaming, seperti layar hitam atau abu-abu.
Aplikasi tidak berfungsi dengan Amazon GameLift Streams di Proton
Verifikasi bahwa aplikasi Anda kompatibel dengan Proton. Uji aplikasi Anda di lingkungan lokal tanpa server Amazon GameLift Streams untuk memverifikasi bahwa itu kompatibel dengan Proton. Untuk petunjuk, lihat Memecahkan masalah kompatibilitas dengan Proton untuk Amazon Streams GameLift .
Masalah aplikasi karena resolusi layar
Aplikasi mungkin macet, macet, atau di-render secara tidak benar jika Anda mencoba menggunakan resolusi layar penuh yang bukan 1920x1080. Kami menyarankan Anda menggunakan jendela layar penuh tanpa batas untuk menjalankan aplikasi Anda dan jangan mencoba mengubah resolusi.
Masukan kunci tampak macet di klien macOS
Pada klien macOS, kunci mungkin tiba-tiba tampak macet ketika tombol pengubah Perintah dan tombol lain ditekan secara bersamaan, mengulangi peristiwa kunci. Misalnya, tombol panah mungkin macet ketika tombol Command juga ditekan. Dalam permainan, jika tombol panah digunakan untuk memutar kamera, ini akan membuat kamera berputar tanpa henti.
-
Masalah: Tombol Command di macOS memetakan ke peristiwa kunci Meta, yang dipetakan ke kunci Windows di Microsoft Windows. Masalahnya adalah bug
yang memengaruhi browser macOS saat Command dan tombol lain ditekan secara bersamaan, di mana tombol Meta diatur ulang saat dirilis tetapi tombol panah tidak diatur ulang karena browser tidak menangkap peristiwa keyup untuk tombol panah, jadi klien SDK Web tidak akan mengirim acara keyup ke server dan aplikasi streaming masih berpikir tombol sedang ditekan. -
Solusi: Jika Anda tidak menggunakan tombol Command, Anda dapat memfilternya menggunakan mekanisme filter keyboard Web SDK (
keyboardFilter
) yang ditemukan di antarmuka Web SDK.InputConfiguration
Gerakan mouse berperilaku berbeda di Amazon Streams GameLift
Jika gerakan mouse berperilaku berbeda saat streaming dengan Amazon GameLift Streams, seperti bergerak lebih cepat dari yang diharapkan, Anda mungkin perlu menyesuaikan penanganan mouse dan logika manajemen kursor dalam aplikasi Anda.
-
Masalah: Amazon GameLift Streams menggunakan heuristik untuk memilih apakah akan mengirimkan peristiwa mouse dalam mode “relatif” atau “absolut”. Dalam mode relatif, pembaruan mouse baru disediakan sebagai perbedaan kecil dan bertahap dari pembaruan sebelumnya. Dalam mode absolut, kursor mouse terus-menerus dipaksa ke posisi layar yang disinkronkan dengan klien. Ketika kursor sistem operasi terlihat melalui konten yang dialirkan, heuristik selalu memilih koordinat absolut. Ini dapat menyebabkan delta pergerakan besar yang tidak terduga jika aplikasi Anda mengharapkan pembaruan relatif kecil.
-
Solusi: Jika aplikasi Anda mengharapkan gerakan mouse relatif (misalnya, kontrol kamera gaya FPS atau interaksi berbasis drag), sembunyikan kursor sistem operasi selama interaksi mouse. Misalnya, sembunyikan kursor pada mouse-down dan tampilkan lagi pada mouse-up. Ini memastikan gerakan menyeret menggunakan koordinat relatif, dengan posisi absolut disinkronkan hanya ketika tombol dilepaskan.
Untuk informasi lebih lanjut tentang gerakan mouse di Amazon GameLift Streams, lihatPenanganan gerakan mouse.
Aplikasi Unreal Engine mogok atau membutuhkan dependensi tambahan
Jika aplikasi Unreal Engine Anda macet, macet, atau mengharuskan Anda menginstal dependensi tambahan, seperti Microsoft Visual C ++ Runtime, coba yang berikut ini.
Gunakan executable yang benar. Agar aplikasi Anda berfungsi dengan benar dengan Amazon GameLift Streams, atur jalur aplikasi ke executable penuh yang terletak di
Binaries/Win64/
subfolder, atau yang serupa. Unreal Engine menghasilkan dua executable: executable kecil (shortcut) di root folder, dan executable penuh di subfolder.Binaries/Win64/
Jika executable penuh hilang, aplikasi mungkin belum dibangun dengan benar. Misalnya, lihat struktur folder berikut untuk contoh aplikasi Unreal:BuildApp |-> MyUnrealApp.exe |-> MyUnrealApp |-> Binaries |-> Win64 |-> MyUnrealApp.exe
Matikan Unreal Engine Asserts. Nonaktifkan Periksa, Verifikasi, dan Pastikan makro. Ini dapat mencegah aplikasi membuat crash dumps, yang jika tidak menyebabkan aplikasi macet di Amazon GameLift Streams. Jika Asserts diaktifkan, Anda harus mengharapkan penundaan. Untuk informasi selengkapnya, lihat Menegaskan dalam dokumentasi Unreal Engine
. Setel
USE_CHECKS_IN_SHIPPING=0
untuk menonaktifkan Periksa dan Verifikasi makro.Setel
handleensurepercent=0
untuk menonaktifkan Pastikan makro.
Aplikasi Windows berakhir saat peluncuran
Jika aplikasi Windows Anda berakhir saat peluncuran, aplikasi Anda mungkin hilang diperlukan DLLs. Jika aplikasi Anda adalah build debug, maka aplikasi tersebut secara khusus memerlukan versi debug perpustakaan Visual C++. DLLs
Untuk mengatasi ini, kami sarankan Anda mengemas build dan DLLs side-by-side. Untuk instruksi, lihat Mempersiapkan mesin uji untuk menjalankan debug yang dapat dieksekusi oleh Microsoft
Dengan paket build dan DLLs, uji aplikasi Anda pada mesin yang bersih, seperti EC2 instans Amazon. Saat Anda siap mencobanya di Amazon GameLift Streams, buat aplikasi baru menggunakan paket ini. Pastikan untuk memilih executable yang benar yang akan menjalankan build dengan yang disertakan. DLLs
Secara umum, kami menyarankan Anda menguji build Anda di mesin yang bersih terlebih dahulu, sebelum mencoba Amazon GameLift Streams. Untuk petunjuk tentang pengujian pada EC2 instans Amazon, lihatSiapkan mesin jarak jauh.
Akses ditolak saat membuat permintaan ke layanan Amazon GameLift Streams
Jika Anda menemukan pengecualian “akses ditolak” saat mencoba melakukan tindakan Amazon GameLift Streams atau menggunakan sumber daya, peran AWS Identity and Access Management (IAM) Anda mungkin memiliki izin yang tidak mencukupi. Ini disebabkan oleh membuat permintaan ke layanan Amazon GameLift Streams, seperti panggilan ke StartStreamSession.
Pastikan kebijakan peran IAM yang terpengaruh memiliki izin yang tepat untuk Amazon GameLift Streams. Periksa hal-hal berikut:
-
Jika peran IAM memiliki kebijakan “tolak semua” eksplisit, Anda harus secara eksplisit mencantumkan Amazon GameLift Streams sebagai pengecualian pada kebijakan tersebut dengan menambahkan elemen tersebut.
"gameliftstreams:*"
NotAction Misalnya:{ "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"} } }
-
Untuk pemecahan masalah tambahan, tinjau pesan kesalahan akses pemecahan masalah ditolak di Panduan Pengguna IAM.