Menguji integrasi Anda menggunakan Amazon GameLift Local - Amazon GameLift

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

Menguji integrasi Anda menggunakan Amazon GameLift Local

catatan

Gunakan prosedur pengujian ini jika Anda menggunakan versi SDK GameLift server Amazon yang versi 4.x atau versi lebih lama. Paket SDK server Anda menyertakan versi Amazon GameLift Local yang kompatibel. Jika Anda menggunakan SDK server versi 5.x, lihat Uji integrasi Anda menggunakan GameLift Anywhere armada Amazon pengujian lokal dengan armada Amazon GameLiftAnywhere.

Gunakan Amazon GameLift Local untuk menjalankan versi terbatas dari GameLift layanan Amazon yang dikelola di perangkat lokal dan menguji integrasi game Anda terhadapnya. Alat ini berguna ketika melakukan pengembangan berulang pada integrasi game Anda. Alternatif—mengunggah setiap build baru ke Amazon GameLift dan mengonfigurasi armada untuk meng-host game Anda—dapat memakan waktu 30 menit atau lebih setiap kali.

Dengan Amazon GameLift Local, Anda dapat memverifikasi hal berikut:

  • Server game Anda terintegrasi dengan benar dengan Server SDK dan berkomunikasi dengan benar dengan GameLift layanan Amazon 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 dan dapat mengambil informasi tentang sesi game yang ada, memulai sesi permainan baru, bergabung dengan pemain ke game, dan terhubung ke sesi permainan.

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

Setiap proses server seharusnya hanya menjadi tuan rumah satu sesi permainan. Sesi permainan adalah executable yang Anda gunakan untuk terhubung ke Amazon GameLift Local. Ketika sesi permainan selesai, Anda harus menelepon GameLiftServerSDK::ProcessEndning dan kemudian keluar dari proses. Saat menguji secara lokal dengan Amazon GameLift Local, Anda dapat memulai beberapa proses server. Setiap proses akan terhubung ke Amazon GameLift Local. 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 lokal mendukung API berikut:

  • CreateGameSession

  • CreatePlayerSession

  • CreatePlayerSessions

  • DescribeGameSessions

  • DescribePlayerSessions

Mengatur Amazon GameLift lokal

Amazon GameLift Local disediakan sebagai .jar file yang dapat dieksekusi yang dibundel dengan Server SDK. Hal ini dapat dijalankan pada Windows atau Linux dan digunakan dengan bahasa Amazon GameLift -didukung.

Sebelum menjalankan Local, Anda juga harus memiliki berikut yang diinstal.

  • Pembuatan Amazon GameLift Server SDK versi 3.1.5 hingga 4.x.

  • Java 8

Menguji server game

Jika Anda ingin menguji server game Anda saja, Anda dapat menggunakan AWS CLI untuk mensimulasikan panggilan klien game ke layanan Amazon GameLift Local. Ini memverifikasi bahwa server game Anda melakukan seperti yang diharapkan dengan berikut ini:

  • Server game diluncurkan dengan benar dan menginisialisasi Amazon GameLift Server SDK.

  • Sebagai bagian dari proses peluncuran, server game memberi tahu Amazon GameLift bahwa server siap untuk menyelenggarakan sesi game.

  • Server game mengirimkan status kesehatan ke Amazon GameLift setiap menit saat berjalan.

  • Server game menanggapi permintaan untuk memulai sesi game baru.

  1. Mulai Amazon GameLift 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.

  2. Mulai server game Anda.

    Mulai server game GameLift terintegrasi Amazon 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 Local. Ini berarti server game Anda berhasil menginisialisasi Amazon GameLift Server SDK (denganInitSDK()). Ini telah memanggil ProcessReady() dengan jalur log yang ditampilkan dan, jika berhasil, siap untuk meng-host sesi game. Saat server game berjalan, Amazon GameLift 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: "ProcessReadytidak menemukan proses dengan PID:<process ID>! Apakah initSDK () dipanggil?”

    • Peringatan: “Status proses sudah ada untuk proses dengan PID:<process ID>! Apakah ProcessReady (...) dipanggil lebih dari sekali?”

  3. MulaiAWS 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 titik akhir layanan GameLift web Amazon. 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 AWS CLI Jendela prompt perintah, AWS gamelift menghasilkan tanggapan seperti yang didokumentasikan di Referensi Perintah AWS CLI.

  4. Buat sesi permainan.

    DenganAWS CLI, kirimkan permintaan CreateGameSession(). 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 Local telah mengirim onStartGameSession callback 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 merespons dengan objek sesi game 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 berubah, 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 } }

Menguji server game dan klien

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 Local. Anda dapat memverifikasi tindakan berikut:

  • Klien game berhasil membuat permintaan AWS SDK ke layanan Amazon GameLift Local, termasuk untuk 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 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.

  2. Mulai server game Anda.

    Mulai server game GameLift terintegrasi Amazon Anda secara lokal. Lihat Menguji server game untuk detail lebih lanjut tentang log pesan.

  3. Konfigurasikan klien game Anda untuk Lokal dan mulailah.

    Untuk menggunakan klien game Anda dengan layanan Amazon GameLift Local, Anda harus membuat perubahan berikut pada pengaturan klien game Anda, seperti yang dijelaskan dalamSiapkan Amazon GameLift di layanan backend:

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

    • Atur kredensial AWS. 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 AmazonGameLift.

  4. Uji panggilan klien game ke GameLift layanan Amazon.

    Verifikasi bahwa klien game Anda berhasil membuat salah satu atau semua panggilan API berikut:

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

  5. 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 memanggil DescribePlayerSessions(), status sesi pemain harus berubah dari Disimpan ke Aktif.

  6. Verifikasi bahwa server game Anda melaporkan status game dan pemain ke GameLift layanan Amazon.

    GameLiftAgar Amazon dapat mengelola permintaan pemain dan melaporkan metrik dengan benar, server game Anda harus melaporkan berbagai status kembali ke Amazon. GameLift 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 game — Pesan log GameLift lokal Amazon harus menunjukkan bahwa panggilan RemovePlayerSession() server game Anda. 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 game berakhir — Pesan log GameLift lokal Amazon harus menunjukkan bahwa server game Anda memanggilTerminateGameSession().

      catatan

      Bimbingan sebelumnya adalah memanggil TerminateGameSession() saat mengakhiri sesi game. Metode ini tidak digunakan lagi dengan Amazon GameLift Server SDK v4.0.1. Lihat Mengakhiri sesi game .

    • Proses server dihentikan — Pesan log GameLift lokal Amazon harus menunjukkan bahwa panggilan ProcessEnding() server game Anda. Sebuah AWS CLI panggilan ke DescribeGameSessions() harus mencerminkan perubahan status dari Active ke Terminated (atau Terminating).

Variasi dengan lokal

Saat menggunakan Amazon GameLift Local, ingatlah hal-hal berikut:

  • Berbeda dengan layanan GameLift web Amazon, Local tidak melacak status kesehatan server dan memulai onProcessTerminate callback. Local hanya berhenti mencatat laporan kondisi untuk server game.

  • Untuk panggilan ke SDK AWS, ID armada tidak divalidasi, dan dapat berupa nilai string apa pun yang memenuhi persyaratan parameter(^fleet-\S+).

  • ID sesi game dibuat dengan Local 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