Tambahkan Amazon GameLift Servers ke server game Anda - Amazon GameLift Servers

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

Tambahkan Amazon GameLift Servers ke server game Anda

Topik ini menjelaskan cara memodifikasi kode server game Anda sehingga proses server game dapat berkomunikasi dengan Amazon GameLift Servers layanan. Gunakan instruksi ini untuk server game yang Anda rencanakan untuk digunakan Amazon GameLift Servers EC2 armada terkelola, armada kontainer terkelola, atau armada Anywhere.

Proses server game berkomunikasi dengan Amazon GameLift Servers layanan untuk menerima instruksi dari layanan dan melaporkan kesehatan proses server dan status sesi permainan. Untuk informasi rinci tentang interaksi antara komponen solusi hosting game Anda (server game, layanan backend, klien game, dan Amazon GameLift Servers), lihatInteraksi klien/server game dengan Amazon GameLift Servers.

Untuk mempersiapkan game Anda untuk hosting, tambahkan SDK server untuk Amazon GameLift Servers ke proyek server game Anda. Jika Anda menggunakan Amazon GameLift Servers plugin untuk Unreal Engine atau Unity, SDK server dibangun dan siap digunakan. Server SDK tersedia dalam beberapa bahasa. Untuk informasi selengkapnya tentang dukungan alat untuk server game, termasuk SDK server, lihatDapatkan alat Amazon GameLift Servers pengembangan.

Referensi API SDK Server:

Inisialisasi proses server

Tambahkan kode untuk menjalin komunikasi dengan Amazon GameLift Servers layanan dan laporan ketika proses server game siap untuk menjadi tuan rumah sesi permainan. Kode ini harus dijalankan sebelum Amazon GameLift Servers kode.

  1. Inisialisasi sebuah Amazon GameLift Servers Klien API dengan meneleponInitSdk(). Jika Anda sedang mempersiapkan server game Anda untuk berjalan Amazon GameLift Servers EC2 armada terkelola, gunakan default InitSDK()(C ++) (C#) (Unreal) (Go) (C++) tanpa parameter. Klien API menangani koneksi ke Amazon GameLift Servers layanan untuk Anda.

    Jika Anda sedang mempersiapkan server game Anda untuk digunakan pada Amazon GameLift Servers Armada di mana saja:

    Inisialisasi Amazon GameLift Servers Klien API dengan menelepon InitSdk() dengan yang berikutServerParameters:

    • URL websocket yang digunakan untuk terhubung ke server game Anda.

    • ID dari proses yang digunakan untuk meng-host server game Anda.

    • ID komputasi yang menghosting proses server game Anda.

    • ID armada yang berisi Amazon GameLift Servers Di mana saja menghitung.

    • Token otorisasi yang dihasilkan oleh Amazon GameLift Servers operasiGetComputeAuthToken.

  2. Beri tahu layanan bahwa proses server game siap untuk menjadi tuan rumah sesi permainan. Panggil ProcessReady() (C++) (C #) (Unreal) (Go) (C++) dengan yang berikut ini. ProcessParameters Setiap proses server game harus menelepon ProcessReady() hanya sekali.

    • Nomor port untuk proses server. Ketika proses server memulai sesi permainan, ia menyediakan port ke Amazon GameLift Serverslayanan, yang memperbarui informasi sesi permainan. Game Anda dapat mengambil informasi ini dan memberikannya kepada klien game, yang menggunakannya untuk terhubung ke proses server dan bergabung dengan sesi permainan.

    • Lokasi file yang Anda inginkan Amazon GameLift Servers untuk menyimpan untuk Anda. Ini mungkin termasuk log sesi game dan file lain yang dihasilkan oleh proses server selama sesi game. Meskipun Amazon GameLift Servers menyimpan file-file ini sementara pada komputasi di mana proses server berjalan, ini hanya tersedia sampai instance dimatikan. Anda dapat mengakses file yang disimpan melalui Amazon GameLift Servers konsol atau dengan memanggil Amazon GameLift Servers Operasi API GetGameSessionLogUrl().

      Jika Anda sedang mempersiapkan server game Anda untuk digunakan pada Amazon GameLift Servers armada kontainer yang dikelola:

      Anda tidak perlu menentukan parameter log untuk armada kontainer. Sebagai gantinya, kirim sesi game dan data log lainnya ke output standar. Armada kontainer secara otomatis menangkap semua output standar kontainer sebagai aliran log.

    • Fungsi callback berikut yang memungkinkan Amazon GameLift Servers untuk mengirim pesan atau petunjuk ke proses server game. Anda harus menerapkan masing-masing fungsi ini dalam kode server game Anda. Untuk informasi lebih lanjut, lihat ProcessParameters(C ++) (C #) (Unreal) (Go) (C++)Unreal).

      • (Opsional) onHealthCheck - Amazon GameLift Servers memanggil fungsi ini secara teratur untuk meminta laporan status kesehatan dari server.

      • onStartGameSession – Amazon GameLift Servers memanggil fungsi ini sebagai respons terhadap permintaan klien CreateGameSession().

      • onProcessTerminate – Amazon GameLift Servers memaksa proses server berhenti, membiarkannya dimatikan dengan anggun.

      • (Opsional) onUpdateGameSession - Amazon GameLift Servers mengirimkan objek sesi game yang diperbarui ke server game atau memberikan pembaruan status pada permintaan pengisian ulang pertandingan. Sebuah FlexMatchfitur backfill membutuhkan callback ini.

    Anda juga dapat mengatur server game sehingga dapat mengakses AWS sumber daya lain yang Anda miliki atau kendalikan dengan aman. Untuk informasi selengkapnya, lihat Berkomunikasi dengan AWS sumber daya lain dari armada Anda.

(Opsional) Laporkan kesehatan proses server

Tambahkan kode ke server game Anda untuk mengimplementasikan fungsi onHealthCheck() callback. Amazon GameLift Servers memanggil metode callback ini secara berkala untuk mengumpulkan metrik kesehatan. Untuk menerapkan fungsionalitas callback ini, lakukan hal berikut:

  • Mengevaluasi status kesehatan dari proses server. Misalnya, Anda mungkin melaporkan proses server sebagai tidak sehat jika ada dependensi eksternal yang gagal.

  • Selesaikan evaluasi kondisi dan tanggapi panggilan balik dalam waktu 60 detik. Jika Amazon GameLift Servers tidak menerima respons pada waktu itu, secara otomatis menganggap proses server tidak sehat.

  • Kembalikan nilai Boolean: true untuk sehat, false untuk tidak sehat.

Jika Anda tidak menerapkan panggilan balik pemeriksaan kesehatan, maka Amazon GameLift Servers menganggap proses server menjadi sehat kecuali server tidak merespons.

Bagian Amazon GameLift Servers Layanan menggunakan kesehatan proses server untuk mengakhiri proses yang tidak sehat dan membersihkan sumber daya. Jika proses server terus melaporkan sebagai tidak sehat atau tidak merespons untuk tiga pemeriksaan kesehatan berturut-turut, maka layanan mungkin mematikan proses dan memulai yang baru. Layanan ini mengumpulkan metrik pada kesehatan proses server armada.

(Opsional) Dapatkan sertifikat TLS

Jika proses server berjalan pada armada yang mengaktifkan pembuatan sertifikat TLS, maka Anda dapat mengambil sertifikat TLS untuk membuat koneksi aman dengan klien game dan untuk mengenkripsi komunikasi server klien. Salinan sertifikat disimpan pada instans. Untuk mendapatkan lokasi file, panggil GetComputeCertificate()(C ++) (C #) (Unreal) (Go) (C++)Unreal).

Mulai sesi game

Menambahkan kode untuk mengimplementasikan fungsionalitas callback onStartGameSession. Amazon GameLift Servers memanggil callback ini untuk memulai sesi permainan pada proses server.

onStartGameSessionFungsi mengambil GameSessionobjek sebagai parameter input. Objek ini mencakup informasi sesi permainan utama, seperti pemain maksimum. Ini juga dapat mencakup data game dan data pemain. Implementasi fungsi harus melakukan tugas-tugas berikut:

  • Lakukan tindakan untuk membuat sesi game baru berbasickan GameSessionproperti. Minimal, server game harus mengaitkan ID sesi game, yang dirujuk klien game saat menghubungkan ke proses server.

  • Data proses game dan data pemain yang diperlukan. Data ini ada di GameSession objek.

  • Beritahu Amazon GameLift Servers layanan ketika sesi permainan baru siap menerima pemain. Panggil operasi API server ActivateGameSession()(C ++) (C #) (Unreal) (Go) (C ++)Tidak nyata). Menanggapi panggilan yang berhasil, layanan mengubah status sesi game menjadiACTIVE.

(Opsional) Validasi pemain baru

Jika Anda melacak status sesi pemain, tambahkan kode untuk memvalidasi pemain baru saat mereka terhubung ke server game. Amazon GameLift Servers melacak pemain saat ini dan slot sesi permainan yang tersedia.

Untuk validasi, klien game yang mencoba bergabung dengan sesi permainan harus menyertakan ID sesi pemain. Amazon GameLift Servers menghasilkan ID ini saat game Anda memulai sesi permainan baru dengan memanggil StartGameSessionPlacement() atau StartMatchmaking(). Atas permintaan ini, slot terbuka dalam sesi permainan dicadangkan untuk sesi pemain.

Ketika proses server game menerima permintaan koneksi klien game, ia memanggil AcceptPlayerSession() (C ++) (C #) (Unreal) (Go) (C ++) dengan ID sesi pemain. Sebagai tanggapan, Amazon GameLift Servers memverifikasi bahwa ID sesi pemain sesuai dengan slot terbuka yang dicadangkan dalam sesi permainan. Setelah Amazon GameLift Servers memvalidasi ID sesi pemain, proses server menerima koneksi. Pemain kemudian dapat bergabung dengan sesi permainan. Jika Amazon GameLift Servers tidak memvalidasi ID sesi pemain, maka proses server menyangkal koneksi.

(Opsional) Laporkan akhir sesi pemain

Jika Anda melacak status sesi pemain, tambahkan kode untuk memberi tahu Amazon GameLift Servers Ketika seorang pemain meninggalkan sesi permainan. Kode ini harus berjalan setiap kali proses server mendeteksi connection jatuh. Amazon GameLift Servers menggunakan pemberitahuan ini untuk melacak pemain saat ini dan slot yang tersedia di sesi permainan.

Untuk menangani koneksi terputus dalam kode Anda, tambahkan panggilan ke operasi API server RemovePlayerSession() (C++) (C#) (Unreal) (Go) (C++) dengan ID sesi pemain yang sesuai.

Mengakhiri sesi game

Tambahkan kode ke urutan shutdown proses server untuk memberi tahu Amazon GameLift Servers ketika sesi permainan berakhir. Untuk mendaur ulang dan menyegarkan sumber daya hosting, matikan setiap proses server setelah sesi permainan selesai.

Pada awal kode shutdown proses server, panggil operasi API server (C ++) ProcessEnding() (C #) (Unreal) (Go) g (C ++) (. Panggilan ini memberitahukan Amazon GameLift Servers bahwa proses server dimatikan. Amazon GameLift Servers mengubah status sesi game dan status proses server menjadiTERMINATED. Setelah meneleponProcessEnding(), aman untuk proses ditutup.

Menanggapi notifikasi shutdown proses server

Tambahkan kode untuk mematikan proses server sebagai tanggapan atas pemberitahuan dari Amazon GameLift Servers layanan. Layanan mengirimkan pemberitahuan ini ketika proses server secara konsisten melaporkan tidak sehat, atau jika instance di mana proses server berjalan sedang dihentikan. Amazon GameLift Servers dapat menghentikan instance sebagai bagian dari peristiwa penurunan skala kapasitas, atau sebagai respons terhadap gangguan Instans Spot. Interupsi Instans Spot memberikan pemberitahuan dua menit, yang memberi waktu proses server untuk memutuskan sambungan pemain dengan anggun, menyimpan data status game, dan melakukan tugas pembersihan lainnya.

Untuk menangani notifikasi shutdown, buat perubahan berikut pada kode server game Anda: