

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
<a name="troubleshoot"></a>

## Akses ditolak saat membuat permintaan ke layanan Amazon GameLift Streams
<a name="troubleshoot-access-denied"></a>

Jika Anda menemukan AccessDenied pengecualian saat melakukan panggilan ke Amazon GameLift Streams API atau bekerja dengan resource di konsol, peran AWS Identity and Access Management (IAM) Anda mungkin memiliki izin yang tidak memadai untuk Amazon Streams. GameLift 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](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_notaction.html) Contoh:

  ```
  {
      "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 informasi selengkapnya, lihat [Identity and Access Management untuk Amazon GameLift Streams](security-iam.md) di bagian Keamanan, dan tinjau [pesan kesalahan akses pemecahan masalah ditolak](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_access-denied.html) di Panduan Pengguna *IAM*.

## Masalah aplikasi
<a name="troubleshoot-application"></a>

Bagian ini mengidentifikasi potensi penyebab masalah yang mencegah aplikasi berjalan atau menyebabkannya muncul secara berbeda di Amazon GameLift Streams.

### Pemeriksaan awal
<a name="troubleshoot-application-pre"></a>
+ 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.

### Masalah Proton
<a name="troubleshoot-application-proton"></a>
+ **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 [Menguji dan memecahkan masalah kompatibilitas dengan Proton untuk Amazon Streams GameLift](troubleshoot-compatibility-wp.md).

### Masalah aplikasi karena resolusi layar
<a name="troubleshoot-application-resolution"></a>

 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. 

### Aplikasi berakhir pada awal sesi streaming
<a name="troubleshoot-application-terminates"></a>

Jika aplikasi Anda segera berakhir saat sesi streaming dimulai, tinjau hal-hal berikut untuk mengetahui kemungkinan penyebab dan solusi:
+ **Verifikasi runtime.** Dalam konfigurasi aplikasi Amazon GameLift Streams, konfirmasikan bahwa file yang Anda tentukan di **jalur peluncuran yang dapat dieksekusi** adalah file atau skrip yang dapat dieksekusi dan benar untuk lingkungan runtime yang Anda pilih. Aplikasi Windows harus memiliki jenis file “.exe”, “.bat”, atau “.cmd” dan menargetkan runtime Windows atau Proton. Aplikasi Linux asli harus berupa file yang dapat dieksekusi yang menargetkan runtime Ubuntu 22.04 LTS.
+ **Verifikasi DLL yang diperlukan.** Aplikasi Windows Anda mungkin kehilangan DLL yang diperlukan. Misalnya, jika aplikasi Anda adalah build debug, maka aplikasi tersebut memerlukan versi debug dari pustaka runtime Microsoft C dan C\+\+ (MSVC). Untuk mengatasi hal ini, sebaiknya Anda mengemas build dan DLL secara berdampingan. Untuk instruksi, lihat [Mempersiapkan mesin uji untuk menjalankan debug yang dapat dieksekusi oleh Microsoft](https://learn.microsoft.com/en-us/cpp/windows/preparing-a-test-machine-to-run-a-debug-executable).

Secara umum, kami menyarankan Anda menguji build Anda di mesin yang bersih terlebih dahulu, sebelum mencoba Amazon GameLift Streams. Untuk petunjuk tentang pengujian pada instans Amazon EC2, lihat. [Siapkan mesin jarak jauh](troubleshoot-compatibility-setup-remote.md)

### Aplikasi Unreal Engine mogok atau membutuhkan dependensi tambahan
<a name="troubleshoot-application-unreal-crash"></a>

Jika aplikasi Unreal Engine Anda gagal memulai, mogok, atau mengharuskan Anda menginstal dependensi tambahan, seperti runtime Microsoft C dan C\+\+ (MSVC), 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 subfolder `Binaries/Win64/` (atau serupa). Unreal Engine menghasilkan dua executable: bootstrap kecil yang dapat dieksekusi di root folder, dan target platform yang dapat dieksekusi di subfolder. `Binaries/Win64/` Bootstrap yang dapat dieksekusi pada upaya root untuk memvalidasi pra-kondisi sudah benar dan dapat membuat positif palsu di Amazon GameLift Streams yang mencegah peluncuran aplikasi. Jika target platform yang dapat dieksekusi hilang, aplikasi mungkin tidak dibangun dengan benar. Misalnya, lihat struktur folder berikut dari contoh aplikasi Unreal:

  ```
  BuildApp
  |-> MyUnrealApp.exe
  |-> MyUnrealApp
              |-> Binaries
                      |-> Win64
                              |-> MyUnrealApp.exe
  ```
+ **Matikan Unreal Engine Asserts.** Nonaktifkan`check`,`verify`, dan `ensure` makro. Mereka dapat mencegah aplikasi membuat crash dumps. Untuk informasi selengkapnya, lihat [Menegaskan dalam dokumentasi Unreal Engine](https://dev.epicgames.com/documentation/en-us/unreal-engine/asserts-in-unreal-engine).
  + Tentukan `USE_CHECKS_IN_SHIPPING=0` di build Anda untuk menonaktifkan `check` dan `verify` makro.
  + Gunakan argumen `-handleensurepercent=0` baris perintah untuk menonaktifkan `ensure` makro.

## Masalah kinerja
<a name="troubleshoot-performance"></a>

Bagian ini mengidentifikasi potensi penyebab masalah performa game saat berjalan di Amazon GameLift Streams, dan menawarkan saran untuk mengoptimalkan streaming Anda di layanan.

### Performa game berkurang saat streaming di Amazon GameLift Streams
<a name="troubleshoot-performance-profile"></a>

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: 
  + gen4n: sebanding dengan GPU NVIDIA RTX 2060
  + gen5n: sebanding dengan NVIDIA RTX 3080 GPU
  + gen6n: sebanding dengan NVIDIA RTX 4060 GPU

   Ini memverifikasi bahwa pengaturan rendering aplikasi Anda kompatibel dengan GPU dan kinerjanya memenuhi harapan Anda.
+  Masalahnya mungkin karena koneksi jaringan Anda atau pengaturan Amazon GameLift Streams. Coba tips pemecahan masalah di bagian ini. [Masalah konektivitas streaming](#troubleshoot-stream-connectivity) 

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](profiling-ue.md) 

### Aplikasi Windows mengalami waktu muat yang lambat atau masalah gagap
<a name="troubleshoot-performance-shaders"></a>

Jika game Anda mengalami waktu muat yang lama atau perilaku gagap, kami merekomendasikan tindakan berikut:

1. Pastikan aplikasi Anda dikemas dan dioptimalkan untuk kinerja pemuatan menggunakan panduan vendor engine Anda seputar mengoptimalkan konten dan kinerja shader.

1. Pastikan aplikasi Anda disetel menjadi [aplikasi default](multi-apps.md#multi-apps-about-linking) dalam grup aliran.

1. Optimalkan peluncuran aplikasi pertama pada layanan dengan cache shader sebagai bagian dari kemasan aplikasi Anda.

Ada dua pendekatan untuk mengaktifkan cache shader:
+ **Driver-based caching** — 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.
+ **Engine-based caching** — Pendekatan ini memungkinkan shader caching 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**

1. 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.

1. *Sebelum* menutup aliran, aktifkan fitur ekspor di sesi streaming aktif Anda. Lihat perinciannya di [Ekspor file sesi streaming](stream-sessions-export-files.md).

1. Tutup aplikasi Anda dengan anggun dengan berhenti dari menu aplikasi atau dengan menggunakan perintah shutdown aplikasi. Ini memastikan bahwa cache shader siap untuk diekspor.

1. Unduh file ekspor sesi streaming .zip dari bucket Amazon S3 yang Anda tentukan saat Anda mengaktifkan fitur ekspor. Anda dapat menemukan tautan unduhan di konsol Amazon GameLift Streams di halaman **Sesi**.

1. 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.

1. 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.

1. 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 driver untuk aplikasi runtime Proton**

1. Mulai streaming aplikasi default Anda dengan penggantian variabel lingkungan berikut:

   ```
   "__GL_SHADER_DISK_CACHE_PATH" : "/home/unpriv/games"
   ```

1. Mainkan aplikasi secara ekstensif untuk menghasilkan shader.
**penting**  
 Pastikan untuk mengunjungi semua area atau tingkat lingkungan untuk menghasilkan shader sebanyak mungkin.

1. *Sebelum* menutup aliran, aktifkan fitur ekspor di sesi streaming aktif Anda. Lihat perinciannya di [Ekspor file sesi streaming](stream-sessions-export-files.md).

1. Tutup aplikasi Anda dengan anggun dengan berhenti dari menu aplikasi atau dengan menggunakan perintah shutdown aplikasi. Ini memastikan bahwa cache shader siap untuk diekspor.

1. Unduh file ekspor sesi streaming .zip dari bucket Amazon S3 yang Anda tentukan saat Anda mengaktifkan fitur ekspor. Anda dapat menemukan tautan unduhan di konsol Amazon GameLift Streams di halaman **Sesi**.

1. Temukan folder dan file shader dalam ekspor sesi aliran:

   1. `application\GLCache`folder

   1. jika aplikasi menggunakan file DX11: `application\{{path-to-exe\exe-name}}.dxvk-cache`

   1. jika aplikasi menggunakan file DX12: `application\{{path-to-exe}}\vkd3d-proton.cache.write`

1. Unggah file shader yang dihasilkan ke bucket Amazon S3 aplikasi Anda:

   1. Salin `GLCache` folder ke direktori root aplikasi Anda.

   1. Jika tersedia, salin file `.dxvk-cache` atau `vkd3d-proton.cache.write` cache ke folder yang berisi aplikasi yang dapat dieksekusi.

1. Buat aplikasi Amazon GameLift Streams baru dengan konfigurasi Proton yang sama.

1. Jalankan aplikasi dengan override variabel lingkungan yang sama:

   ```
   "__GL_SHADER_DISK_CACHE_PATH" : "/home/unpriv/games"
   ```

Ketika aplikasi Anda mulai streaming, itu akan menggunakan shader yang telah dibuat sebelumnya, 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.

**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](https://dev.epicgames.com/documentation/en-us/unreal-engine/manually-creating-bundled-pso-caches-in-unreal-engine), bagian “Alur Koleksi”.

1. Hasilkan shader untuk aplikasi Anda yang mengaktifkan PSO logging.

   1. Buat aplikasi Amazon GameLift Streams baru menggunakan paket build dengan aplikasi. PSO-enabled 

   1. 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.

   1. *Sebelum* menutup aliran, aktifkan fitur ekspor di sesi streaming aktif Anda. Lihat perinciannya di [Ekspor file sesi streaming](stream-sessions-export-files.md).

   1. Keluar dari aplikasi dari menu atau dengan menggunakan perintah shutdown Unreal. Jika Anda menutup aliran secara langsung, file pipeline shader Unreal tidak akan dibuat.

   1. 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**.

1. Package file pipeline Unreal shaders ke dalam aplikasi Amazon GameLift Streams Anda.

   1. Temukan file PSO yang direkam (`rec.pipelinecache`) dalam ekspor sesi aliran di bawah`Saved/CollectedPSOs`. Buka paket file PSO menggunakan perintah Unreal.

   1. Package build Unreal baru dengan output yang dihasilkan dari unpacking. Ikuti panduan Unreal, bagian [Mengonversi cache PSO dan Termasuk cache](https://dev.epicgames.com/documentation/en-us/unreal-engine/manually-creating-bundled-pso-caches-in-unreal-engine#convertingpsocaches) [PSO](https://dev.epicgames.com/documentation/en-us/unreal-engine/manually-creating-bundled-pso-caches-in-unreal-engine#includingpsocachesinyourapplication) 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 file SM6 sebagai input. Jika tidak, Anda akan mendapatkan kesalahan saat mengemas aplikasi baru.

   1. Buat aplikasi Amazon GameLift Streams baru untuk build paket baru dengan file PSO.

   1. 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.

## Konektivitas streaming dan masalah kinerja jaringan
<a name="troubleshoot-stream-connectivity"></a>

Saat [menyiapkan layanan backend Amazon GameLift Streams](sdk.md), 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. Lihat daftar lokasi tempat Anda dapat melakukan streaming. [Wilayah AWS dan lokasi streaming yang didukung oleh Amazon GameLift Streams](regions-quotas-rande.md) 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` cukup diatur untuk memungkinkan pengguna akhir banyak waktu untuk terhubung sebelum waktu klien web mereka habis.

Sarankan pengguna akhir Anda untuk memeriksa hal-hal berikut:
+ Pastikan firewall memungkinkan akses ke rentang 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 Wi-Fi router dengan pita 2,4 GHz dan 5 GHz, coba sambungkan ke pita yang berbeda. Jika Anda tidak yakin cara mengalihkan router Anda ke band yang berbeda, kunjungi halaman dukungan produsen atau penyedia Wi-Fi router Anda. Anda juga dapat menghubungi layanan pelanggan mereka.
+ Identifikasi apakah orang lain di jaringan yang sama (terutama saat di rumah Wi-Fi) 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 berdampak pada gameplay.
+ Pastikan Anda menggunakan Wi-Fi bukan jaringan seluler saat bermain di iPad atau iPhone. Menggunakan jaringan seluler dapat menyebabkan masalah konektivitas.
+ Pengguna macOS harus menonaktifkan Layanan Lokasi karena akan menyebabkan jeda dari waktu ke waktu, yang akan menyebabkan pengalaman streaming yang buruk. Wi-Fi 

## Masalah masukan aliran
<a name="troubleshoot-stream-input"></a>

Bagian ini mengidentifikasi potensi penyebab dan solusi untuk masalah yang terkait dengan input pengguna dalam sesi streaming.

### Pemecahan masalah masukan umum
<a name="troubleshoot-input-general"></a>
+ Uji untuk melihat apakah masalahnya adalah browser-specifc. Secara keseluruhan, kami merekomendasikan Google Chrome, Microsoft Edge, atau aplikasi Chromium-based desktop khusus untuk pengalaman pengguna akhir terbaik dan kompatibilitas maksimum, terutama dengan pengontrol game.
+ Log peristiwa masukan yang dikirim dari klien dan diterima oleh aplikasi untuk mengidentifikasi di mana ada ketidakcocokan input dalam kode front end Anda.
+ Pastikan [Browser dan masukan yang didukung](sdk-browsers-input.md) untuk memeriksa informasi tambahan tentang browser dan perangkat input yang didukung, termasuk masalah dan batasan yang diketahui.

### Input gamepad dan mikrofon tidak berfungsi pada aplikasi Linux asli
<a name="troubleshoot-input-on-linux"></a>

Input gamepad dan mikrofon tidak didukung dalam aplikasi Linux asli. Lihat [Browser dan masukan yang didukung](sdk-browsers-input.md) untuk informasi tambahan tentang perangkat input yang didukung, termasuk masalah dan batasan yang diketahui.

### Masukan kunci tampak macet di klien macOS
<a name="troubleshoot-input-stuck-key-macos"></a>

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](https://issues.chromium.org/issues/40880986) 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`

### Masukan macet saat Anda membuka elemen UI OS
<a name="troubleshoot-input-stuck-os-ui"></a>

Pada klien browser desktop dan seluler, peristiwa masukan seperti rilis kunci tidak diproses ketika elemen OS-level UI tertentu memiliki prioritas. Ini dapat menyebabkan karakter bergerak atau tindakan berulang seolah-olah kunci masih ditekan, meskipun Anda telah melepaskannya.
+ Masalah: Saat Anda membuka elemen OS-level UI tertentu (seperti bilah menu browser di desktop, atau Pusat Kontrol dan Pusat Pemberitahuan di iOS), browser berhenti menjalankan peristiwa input tanpa memicu peristiwa blur atau fokus. Hal ini menyebabkan server terus menerima status input terakhir. Ini adalah batasan tingkat browser yang tidak dapat dideteksi dengan andal.
+ Solusi: Gunakan mode layar penuh pada browser desktop untuk mencegah akses ke bilah menu browser. Untuk pengguna iOS dengan keyboard yang terhubung, sebaiknya buat pembungkus aplikasi asli dengan tampilan web di mana aplikasi asli dapat mendeteksi dan menangani kehilangan fokus dengan lebih baik, secara eksplisit memicu fokus jendela browser dan peristiwa blur. Atau, gunakan elemen HTML front-end atau UI dalam game untuk memberi tahu pengguna bahwa tombol masih ditekan, dan berikan informasi tentang batasan iOS ini.

### Gerakan mouse berperilaku berbeda di Amazon Streams GameLift
<a name="troubleshoot-input-mouse-movement"></a>

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 di atas 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 FPS-style kamera 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, lihat[Penanganan gerakan mouse](sdk-mouse-movement.md).

## Masalah sesi streaming
<a name="troubleshoot-stream-session"></a>

Bagian ini mengidentifikasi potensi penyebab dan solusi untuk masalah yang terkait dengan sesi streaming yang dimulai atau berakhir secara tidak terduga.

### Sesi streaming tidak dimulai
<a name="troubleshoot-stream-session-start"></a>

Penyebab potensial:
+ Aplikasi digantung atau macet. Lihat [Masalah aplikasi](#troubleshoot-application) bagian untuk instruksi pemecahan masalah.
+ Status grup streaming tidak`Active`. Verifikasi status grup streaming.
+ On-demand kapasitas membutuhkan waktu lebih lama untuk berputar daripada batas waktu yang ditentukan oleh `ConnectionTimeoutSeconds` dalam [StartStreamSession](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_StartStreamSession.html)API. Pada runtime Windows, waktu spin up sesuai permintaan dapat memakan waktu 5 menit atau lebih.
+ Tidak ada kapasitas yang tersedia di lokasi streaming. Pastikan kapasitas yang Anda alokasikan lebih besar dari kapasitas yang digunakan, atau bahwa Anda memiliki kapasitas sesuai permintaan yang tidak digunakan (kapasitas yang dialokasikan kurang dari kapasitas selalu aktif ditambah kapasitas sesuai permintaan). Di konsol, Anda dapat menemukan nilai-nilai ini dalam daftar grup aliran atau di halaman detail grup aliran. Menggunakan API layanan, Anda dapat menemukan nilai-nilai ini menggunakan [GetStreamGroup](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetStreamGroup.html). Beberapa skenario di mana kapasitas yang tersedia untuk sementara nol termasuk yang berikut:
  + Jika Anda baru saja meningkatkan kapasitas selalu aktif di lokasi streaming, tunggu beberapa menit hingga kapasitas dialokasikan.
  + Jika Anda hanya memiliki 1 kapasitas yang tersedia di lokasi streaming dan klien Anda tiba-tiba terputus, sesi sebelumnya mungkin masih dalam keadaan terputus. Tunggu beberapa menit hingga sesi habis dan coba lagi.
  + Jika Anda baru-baru ini menambahkan lokasi ke grup streaming Anda dan aplikasi tidak ada di lokasi, aplikasi mungkin belum selesai mereplikasi di sana. Periksa status replikasi pada halaman detail grup streaming di konsol. Atau, Anda dapat menggunakan [GetApplication](https://docs.aws.amazon.com/gameliftstreams/latest/apireference/API_GetApplication.html)API dan memeriksa `ReplicationStatuses` nilainya untuk memverifikasi bahwa lokasi streaming yang diinginkan adalah`COMPLETED`. `Status`
+ Kondisi jaringan sangat buruk sehingga frame, terutama frame pertama, tidak dikirim. Periksa kondisi jaringan antara klien dan lokasi streaming dan sesuaikan atau coba lokasi yang berbeda.

### Sesi streaming dihentikan
<a name="troubleshoot-stream-session-terminated"></a>

Sesi streaming secara otomatis berakhir ketika aplikasi mogok atau berhenti, atau ketika koneksi klien terputus. Sesi juga dapat dihentikan karena nilai batas waktu berikut:
+ Batas **waktu penempatan**: Nilai batas waktu untuk Amazon GameLift Streams untuk menemukan sumber daya komputasi untuk meng-host sesi streaming.
+ Batas **waktu koneksi**: Nilai batas waktu bagi klien untuk terhubung atau menyambung kembali ke sesi streaming.
+ Batas **waktu idle**: Waktu maksimum sesi streaming dapat menganggur tanpa masukan pengguna.
+ **Waktu tunggu lama sesi**: Waktu maksimum untuk sesi streaming.

Untuk penjelasan rinci tentang setiap batas waktu dan kemungkinan nilainya, lihat. [Nilai batas waktu yang memengaruhi sesi streaming](stream-sessions.md#stream-sessions-lifecycle-timeouts)

## Masalah SDK Web
<a name="troubleshoot-web-sdk"></a>

Bagian ini mengidentifikasi potensi penyebab masalah yang terkait dengan Amazon GameLift Streams Web SDK saat mengintegrasikan Amazon GameLift Streams ke dalam aplikasi web Anda.

### Konfigurasi elemen audio untuk kompatibilitas perangkat
<a name="troubleshoot-web-sdk-audio-element"></a>

Saat Anda membuat `GameLiftStreams` objek baru, kami sarankan Anda tidak menyediakan elemen audio yang terpisah. Menyediakan elemen audio yang berbeda berguna jika Anda memerlukan JavaScript kontrol khusus pada audio yang tidak boleh diterapkan ke elemen video. Namun, beberapa perangkat, seperti TV pintar tertentu, hanya mendukung satu elemen media pada halaman web pada satu waktu. Menyediakan elemen audio terpisah dapat menyebabkan kegagalan pemutaran pada perangkat ini.

### Audio tidak diputar saat streaming dimulai
<a name="troubleshoot-web-sdk-audio-not-playing"></a>

Jika audio tidak diputar saat streaming dimulai, verifikasi bahwa elemen media tidak dimatikan. Beberapa browser secara otomatis membisukan elemen media yang tidak aktif diputar. Browser yang berbeda memiliki kebijakan autoplay yang berbeda yang menentukan kapan elemen media diredam.

Untuk memecahkan masalah pemutaran audio, periksa hal berikut:
+ Verifikasi bahwa `muted` properti elemen video atau audio diatur ke`false`.
+ Pastikan volume pada elemen media tidak disetel ke`0`.
+ Periksa kebijakan putar otomatis browser Anda. Banyak browser memerlukan interaksi pengguna, seperti klik, sebelum memungkinkan pemutaran media yang tidak dibisukan.
+ Jika Anda memerlukan callback untuk saat sesi terhubung, gunakan `clientConnection.connectionState` di `GameLiftStreams` objek. Ini menyediakan callback ketika koneksi peer bertransisi ke status terhubung.