

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Uji integrasi Anda menggunakan Amazon GameLift Servers Lokal
<a name="integration-testing-local"></a>

**catatan**  
Topik ini mencakup pengujian untuk game yang terintegrasi dengan SDK server untuk Amazon GameLift Servers versi 3.x dan 4.x saja. Paket SDK server Anda menyertakan versi Amazon GameLift Servers Lokal yang kompatibel. Jika Anda menggunakan SDK server versi 5.x, lihat [Pengujian lokal dengan GameLift Server SDK 5.x untuk pengujian](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/integration-testing-local.html) lokal dengan armada Anywhere. Amazon GameLift Servers Untuk panduan tentang migrasi dari SDK 4.x ke 5.x, lihat [Migrasi](https://docs.aws.amazon.com/gamelift/latest/developerguide/reference-serversdk5-migration.html) ke Server SDK 5.x. GameLift 

Gunakan Amazon GameLift Servers Lokal untuk menjalankan versi terbatas dari Amazon GameLift Servers layanan terkelola pada perangkat lokal dan uji integrasi game Anda terhadapnya. Alat ini berguna ketika melakukan pengembangan berulang pada integrasi game Anda. Alternatif—mengunggah setiap build baru Amazon GameLift Servers dan mengonfigurasi armada untuk menghosting game Anda—dapat memakan waktu beberapa atau lebih setiap kali. 

Dengan Amazon GameLift Servers Local, Anda dapat memverifikasi hal-hal berikut:
+ Server game Anda terintegrasi dengan benar dengan Server SDK dan berkomunikasi dengan benar dengan Amazon GameLift Servers layanan untuk memulai sesi permainan baru, menerima pemain baru, dan melaporkan kesehatan dan status. 
+ Klien game Anda terintegrasi dengan benar dengan AWS SDK untuk Amazon GameLift Servers dan dapat mengambil informasi tentang sesi permainan yang ada, memulai sesi permainan baru, bergabung dengan pemain ke game dan terhubung ke sesi permainan.

Amazon GameLift ServersLokal adalah alat baris perintah yang memulai versi mandiri dari layanan terkelola. Amazon GameLift Servers Amazon GameLift Servers Local juga menyediakan log peristiwa yang berjalan dari inisialisasi proses server, pemeriksaan kesehatan, dan panggilan dan respons API. Amazon GameLift Servers Local mengenali subset tindakan AWS SDK untuk. Amazon GameLift Servers Anda dapat melakukan panggilan dari AWS CLI atau dari klien game Anda. Semua tindakan API dilakukan secara lokal seperti yang mereka lakukan di layanan Amazon GameLift Servers web.

Setiap proses server seharusnya hanya meng-host satu sesi permainan. Sesi permainan adalah executable yang Anda gunakan untuk terhubung ke Amazon GameLift Servers Lokal. Ketika sesi permainan selesai, Anda harus menelepon `GameLiftServerSDK::ProcessEnding` dan kemudian keluar dari proses. Saat menguji secara Amazon GameLift Servers lokal dengan Local, Anda dapat memulai beberapa proses server. Setiap proses akan terhubung ke Amazon GameLift Servers Lokal. Anda kemudian dapat membuat satu sesi permainan untuk setiap proses server. Ketika sesi permainan Anda berakhir, proses server game Anda harus keluar. Anda kemudian harus secara manual memulai proses server lain. 

Amazon GameLift Serverslokal mendukung yang berikut APIs:
+ CreateGameSession
+ CreatePlayerSession
+ CreatePlayerSessions
+ DescribeGameSessions
+ DescribePlayerSessions

## Menyiapkan Amazon GameLift Servers lokal
<a name="integration-testing-local-start"></a>

Amazon GameLift Servers[Lokal disediakan sebagai `.jar` file yang dapat dieksekusi yang dibundel dengan Server SDK.](https://aws.amazon.com/gamelift/servers/getting-started/) Ini dapat dijalankan di Windows atau Linux dan digunakan dengan bahasa apa pun yang Amazon GameLift Servers didukung. Untuk SDK versi 4.0.2, Anda dapat mengunduhnya dari rilis [resmi GitHub ](https://github.com/amazon-gamelift/amazon-gamelift-servers-csharp-server-sdk/releases). GameLiftLocalFile.jar disertakan dalam artefak GameLift-CSharp-ServerSDK -4.0.2.zip.

Sebelum menjalankan Local, Anda juga harus memiliki berikut yang diinstal.
+ Sebuah build SDK server untuk Amazon GameLift Servers versi 3.1.5 hingga 4.x.
+ Java 8 

## Uji server game
<a name="integration-testing-local-server"></a>

Jika Anda ingin menguji server game Anda saja, Anda dapat menggunakan AWS CLI untuk mensimulasikan panggilan klien game ke layanan Amazon GameLift Servers Lokal. Ini memverifikasi bahwa server game Anda melakukan seperti yang diharapkan dengan berikut ini: 
+ Server game diluncurkan dengan benar dan menginisialisasi SDK server untuk. Amazon GameLift Servers
+ Sebagai bagian dari proses peluncuran, server game memberi tahu Amazon GameLift Servers bahwa server siap untuk meng-host sesi game.
+ Server game mengirimkan status kesehatan ke Amazon GameLift Servers setiap menit saat berjalan.
+ Server game menanggapi permintaan untuk memulai sesi game baru.

1. **Mulai Amazon GameLift Servers Lokal.**

   Buka jendela command prompt, arahkan ke direktori yang berisi file `GameLiftLocal.jar` dan menjalankannya. Secara default, Local mendengarkan permintaan dari klien game pada port 8080. Untuk menentukan nomor port yang berbeda, gunakan parameter `-p`, seperti yang ditunjukkan dalam contoh berikut:

   ```
   java -jar GameLiftLocal.jar -p 9080
   ```

   Setelah Local dimulai, Anda melihat log yang menunjukkan bahwa dua server Local dimulai, satu mendengarkan untuk server game Anda dan satu mendengarkan untuk klien game Anda atau AWS CLI. Log terus melaporkan aktivitas pada dua server Local, termasuk komunikasi dan dari komponen game Anda.

1. **Mulai server game Anda.**

   Mulai server game Amazon GameLift Servers -terintegrasi Anda secara lokal. Anda tidak perlu mengubah titik akhir untuk server game. 

   Di jendela prompt perintah Lokal, pesan log menunjukkan bahwa server game Anda telah terhubung ke layanan Amazon GameLift Servers Lokal. Ini berarti server game Anda berhasil menginisialisasi SDK server untuk Amazon GameLift Servers (with`InitSDK()`). Ini telah memanggil `ProcessReady()` dengan jalur log yang ditampilkan dan, jika berhasil, siap untuk meng-host sesi game. Saat server game berjalan, Amazon GameLift Servers mencatat setiap laporan status kesehatan dari server game. Contoh log olah pesan berikut menunjukkan server game berhasil terintegrasi:

   ```
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK connected: /127.0.0.1:64247 
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - SDK pid is 17040, sdkVersion is 3.1.5 and sdkLanguage is CSharp
   16:50:53,217  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - NOTE: Only SDK versions 3.1.5 and above are supported in GameLiftLocal!
   16:50:53,451  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady received from: /127.0.0.1:64247 and ackRequest requested? true
   16:50:53,543  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onProcessReady data: logPathsToUpload: "C:\\game\\logs"
   logPathsToUpload: "C:\\game\\error"
   port: 1935
           
   16:50:53,544  INFO || - [HostProcessManager] nioEventLoopGroup-3-1 - Registered new process true, true,
   16:50:53,558  INFO || - [SDKListenerImpl] nioEventLoopGroup-3-1 - onReportHealth received from /127.0.0.1:64247 with health status: healthy
   ```

   Kemungkinan kesalahan dan pesan peringatan meliputi berikut ini:
   + Kesalahan: "ProcessReady tidak menemukan proses dengan PID:*<process ID>*\$1 Apakah initSDK () dipanggil?”
   + Peringatan: “Status proses sudah ada untuk proses dengan PID:*<process ID>*\$1 Apakah ProcessReady (...) dipanggil lebih dari sekali?”

1. **Mulai AWS CLI.**

   Setelah server game Anda berhasil memanggil `ProcessReady()`, Anda dapat mulai melakukan panggilan klien. Buka jendela prompt perintah lain dan mulai AWS CLI alat. Secara AWS CLI default menggunakan endpoint layanan Amazon GameLift Servers web. Anda harus mengganti ini dengan titik akhir Local di setiap permintaan menggunakan parameter `--endpoint-url`, seperti yang ditunjukkan dalam permintaan contoh berikut.

   ```
   AWS gamelift describe-game-sessions --endpoint-url http://localhost:9080  --fleet-id fleet-123
   ```

   Di jendela AWS CLI command prompt, `AWS gamelift` perintah menghasilkan respons seperti yang didokumentasikan dalam [AWS CLI Command Reference](https://docs.aws.amazon.com/cli/latest/reference/gamelift).

1. **Buat sesi permainan.**

   Dengan AWS CLI, kirimkan permintaan [CreateGameSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.html). Permintaan harus mengikuti sintaks yang diharapkan. Untuk Local, parameter `FleetId` dapat diatur ke string yang valid()`^fleet-\S+`.

   ```
   AWS gamelift create-game-session --endpoint-url http://localhost:9080 --maximum-player-session-count 2 --fleet-id
       fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
   ```

   Di jendela prompt perintah Lokal, pesan log menunjukkan bahwa Amazon GameLift Servers Local telah mengirim `onStartGameSession` panggilan balik server game Anda. Jika sesi game berhasil dibuat, server game Anda merespon dengan menerapkan `ActivateGameSession`.

   ```
   13:57:36,129  INFO || - [SDKInvokerImpl]
           Thread-2 - Finished sending event to game server to start a game session:
           arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6.
           Waiting for ack response.13:57:36,143  INFO || - [SDKInvokerImpl]
           Thread-2 - Received ack response: true13:57:36,144  INFO || -
           [CreateGameSessionDispatcher] Thread-2 - GameSession with id:
           arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-ab423a4b-b827-4765-aea2-54b3fa0818b6
           created13:57:36,227  INFO || - [SDKListenerImpl]
           nioEventLoopGroup-3-1 - onGameSessionActivate received from: /127.0.0.1:60020 and ackRequest
           requested? true13:57:36,230  INFO || - [SDKListenerImpl]
           nioEventLoopGroup-3-1 - onGameSessionActivate data: gameSessionId:
           "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890"
   ```

   Di AWS CLI jendela, Amazon GameLift Servers merespons dengan objek sesi permainan termasuk ID sesi game. Perhatikan bahwa status sesi game baru adalah Mengaktifkan. Status berubah menjadi Aktif setelah server game Anda dipanggil. ActivateGameSession Jika Anda ingin melihat status yang diubah, gunakan AWS CLI untuk memanggil`DescribeGameSessions()`.

   ```
   {
       "GameSession": {
         "Status": "ACTIVATING",
         "MaximumPlayerSessionCount": 2,
         "FleetId": "fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d",
         "GameSessionId": "arn:aws:gamelift:local::gamesession/fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d/gsess-abcdef12-3456-7890-abcd-ef1234567890",
         "IpAddress": "127.0.0.1",
         "Port": 1935
       }
   }
   ```

## Uji server game dan klien
<a name="integration-testing-local-client"></a>

Untuk memeriksa integrasi game lengkap Anda, termasuk menghubungkan pemain ke game, Anda dapat menjalankan server game dan klien secara Local. Ini memungkinkan Anda untuk menguji panggilan terprogram dari klien game Anda ke Amazon GameLift Servers Lokal. Anda dapat memverifikasi tindakan berikut: 
+ Klien game berhasil membuat permintaan AWS SDK ke layanan Amazon GameLift Servers Lokal, termasuk membuat sesi game, mengambil informasi tentang sesi game yang ada, dan membuat sesi pemain.
+ Server game betul memvalidasi pemain ketika mereka mencoba untuk bergabung dengan sesi game. Untuk pemain divalidasi, server game dapat mengambil data pemain (jika diimplementasikan).
+ Server game melaporkan connection terputus ketika pemain meninggalkan game.
+ Laporan server game mengakhiri sesi game.

1. **Mulai Amazon GameLift Servers Lokal.**

   Buka jendela command prompt, arahkan ke direktori yang berisi file `GameLiftLocal.jar` dan menjalankannya. Secara default, Local mendengarkan permintaan dari klien game pada port 8080. Untuk menentukan nomor port yang berbeda, gunakan parameter `-p`, seperti yang ditunjukkan dalam contoh berikut.

   ```
   ./gamelift-local -p 9080
   ```

   Setelah Local dimulai, Anda melihat log yang menunjukkan bahwa dua server Local dimulai, satu mendengarkan server game Anda dan satu mendengarkan untuk klien game Anda atau AWS CLI.

1. **Mulai server game Anda.**

   Mulai server game Amazon GameLift Servers -terintegrasi Anda secara lokal. Lihat [Uji server game](#integration-testing-local-server) untuk detail lebih lanjut tentang log pesan.

1. **Konfigurasikan klien game Anda untuk Lokal dan mulai.**

   Untuk menggunakan klien game Anda dengan layanan Amazon GameLift Servers Lokal, Anda harus membuat perubahan berikut pada pengaturan klien game Anda, seperti yang dijelaskan dalam[Siapkan Amazon GameLift Servers API](gamelift-sdk-client-api.md#gamelift-sdk-client-api-initialize):
   + Mengubah `ClientConfiguration` objek untuk menunjuk ke titik akhir Local Anda, seperti `http://localhost:9080`.
   + Atur nilai ID armada target. Untuk Local, Anda tidak memerlukan ID armada nyata; atur armada target ke string yang valid (`^fleet-\S+`), seperti `fleet-1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d`.
   + Tetapkan AWS kredensil. Untuk Local, Anda tidak perlu kredensial nyata AWS ; Anda dapat mengatur access key dan kunci rahasia ke string apapun. 

   Di jendela prompt perintah Lokal, setelah Anda memulai klien game, pesan log harus menunjukkan bahwa ia telah menginisialisasi `GameLiftClient` dan berhasil dikomunikasikan dengan layanan. Amazon GameLift Servers 

1. **Uji panggilan klien game ke Amazon GameLift Servers layanan.**

   Verifikasi bahwa klien game Anda berhasil membuat salah satu atau semua panggilan API berikut:
   + [CreateGameSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreateGameSession.html)
   + [DescribeGameSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeGameSessions.html)
   + [CreatePlayerSession()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreatePlayerSession.html)
   + [CreatePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_CreatePlayerSessions.html)
   + [DescribePlayerSessions()](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribePlayerSessions.html)

   Di jendela prompt perintah Local, hanya panggilan ke `CreateGameSession()` yang menghasilkan log olah pesan. Pesan log ditampilkan ketika Amazon GameLift Servers Local meminta server game Anda untuk memulai sesi permainan (`onStartGameSession`callback) dan berhasil `ActivateGameSession` ketika server game Anda memanggilnya. Di jendela AWS CLI , semua panggilan API menghasilkan respons atau pesan kesalahan seperti yang didokumentasikan. 

1. **Verifikasi bahwa server game Anda memvalidasi koneksi pemain baru.**

   Setelah membuat sesi game dan sesi pemain, buat connection langsung ke sesi game.

   Di jendela prompt perintah Local, log olah pesan harus menunjukkan bahwa server game telah mengirim `AcceptPlayerSession()` untuk memvalidasi connection pemain baru. Jika Anda menggunakan AWS CLI to call`DescribePlayerSessions()`, status sesi pemain harus berubah dari Reserved ke Active.

1. **Verifikasi bahwa server game Anda melaporkan status game dan pemain ke Amazon GameLift Servers layanan.**

   Amazon GameLift ServersUntuk mengelola permintaan pemain dan melaporkan metrik dengan benar, server game Anda harus melaporkan berbagai status kembali. Amazon GameLift Servers Verifikasi bahwa Local mencatat peristiwa yang terkait dengan tindakan berikut. Anda mungkin juga ingin menggunakan AWS CLI untuk melacak perubahan status.
   + **Pemain terputus dari sesi permainan** - Pesan log Amazon GameLift Servers lokal harus menunjukkan bahwa server game Anda memanggil`RemovePlayerSession()`. Sebuah AWS CLI panggilan ke `DescribePlayerSessions()` harus mencerminkan perubahan status dari `Active` ke `Completed`. Anda juga dapat menghubungi `DescribeGameSessions()` untuk memeriksa bahwa jumlah pemain sesi game saat ini berkurang satu per satu.
   + **Sesi permainan berakhir** - Pesan log Amazon GameLift Servers lokal harus menunjukkan bahwa server game Anda memanggil`TerminateGameSession()`. 
**catatan**  
Bimbingan sebelumnya adalah memanggil `TerminateGameSession()` saat mengakhiri sesi game. Metode ini tidak digunakan lagi dengan Amazon GameLift Servers Server SDK v4.0.1. Lihat [Mengakhiri sesi game](gamelift-sdk-server-api.md#gamelift-sdk-server-shutdownsession). 
   + **Proses server dihentikan** - Pesan log Amazon GameLift Servers lokal harus menunjukkan bahwa server game Anda memanggil`ProcessEnding()`. AWS CLI Panggilan ke `DescribeGameSessions()` harus mencerminkan perubahan status dari `Active` ke `Terminated` (atau`Terminating`).

## Variasi dengan lokal
<a name="integration-testing-local-special"></a>

Saat menggunakan Amazon GameLift Servers Lokal, ingatlah hal berikut:
+ Berbeda dengan layanan Amazon GameLift Servers web, Local tidak melacak status kesehatan server dan memulai `onProcessTerminate` callback. Local hanya berhenti mencatat laporan kondisi untuk server game.
+ Untuk panggilan ke AWS SDK, armada tidak IDs divalidasi, dan dapat berupa nilai string apa pun yang memenuhi persyaratan parameter ()`^fleet-\S+`.
+ Sesi permainan IDs yang dibuat dengan Lokal memiliki struktur yang berbeda. Mereka termasuk string `local`, seperti yang ditunjukkan di sini:

  ```
  arn:aws:gamelift:local::gamesession/fleet-123/gsess-56961f8e-db9c-4173-97e7-270b82f0daa6
  ```