Tambahkan Amazon GameLift ke server game Anda - Amazon GameLift

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

Tambahkan Amazon GameLift ke server game Anda

Server game kustom Anda harus berkomunikasi dengan Amazon GameLift, karena setiap proses server game harus dapat merespons peristiwa yang GameLift dimulai Amazon. Server game Anda juga harus GameLift memberi tahu Amazon tentang status proses server dan koneksi pemain. Untuk informasi selengkapnya tentang cara server game, layanan backend, klien game, dan Amazon GameLift bekerja sama untuk mengelola hosting game, lihat. Interaksi server klien Amazon GameLift dan game

Untuk mempersiapkan server game Anda berinteraksi dengan Amazon GameLift, tambahkan GameLift Server Amazon SDK ke proyek server game Anda dan buat fungsionalitas yang dijelaskan dalam topik ini. Server SDK tersedia dalam beberapa bahasa. Untuk informasi selengkapnya tentang Amazon GameLift ServerSDK, lihatDapatkan alat GameLift pengembangan Amazon.

SDKAPIReferensi server:

Inisialisasi proses server

Tambahkan kode untuk menjalin komunikasi dengan Amazon GameLift dan melaporkan bahwa proses server siap menjadi tuan rumah sesi permainan. Kode ini harus berjalan sebelum GameLift kode Amazon apa pun.

  1. Inisialisasi GameLift API klien Amazon dengan meneleponInitSdk(). Untuk menginisialisasi proses server game yang berjalan pada EC2 instance GameLift terkelola Amazon, gunakan default InitSDK()(C++) (C#) (Unreal) (Go) (C++) (C#) tanpa parameter. Amazon GameLift secara otomatis terhubung ke Amazon GameLift untuk Anda. Untuk menginisialisasi proses server game yang berjalan di Amazon GameLift Anywhere menghitung sumber daya, panggil InitSdk() dengan yang berikut ini: ServerParameters

    • Websocket URL 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 GameLift armada yang berisi Amazon Anda GameLift Anywhere menghitung.

    • Token otorisasi yang dihasilkan oleh GameLift operasi GetComputeAuthToken Amazon.

  2. Beri tahu Amazon GameLift bahwa proses server siap untuk meng-host sesi game. Panggil ProcessReady() (C++) (C#) (Unreal) (Go) (C++) dengan informasi berikut. (Perhatikan bahwa Anda harus menelepon ProcessReady() hanya sekali per proses server).

    • Nomor port yang digunakan oleh proses server. Layanan backend menyediakan nomor port dan alamat IP ke klien game untuk terhubung ke proses server dan bergabung dengan sesi permainan.

    • Lokasi file, seperti log sesi game, yang Anda GameLift ingin Amazon pertahankan. Proses server menghasilkan file-file ini selama sesi permainan. Mereka sementara disimpan pada instance di mana proses server berjalan, dan mereka hilang ketika instance dimatikan. File apa pun yang Anda daftar diunggah ke Amazon GameLift. Anda dapat mengakses file-file ini melalui GameLift konsol Amazon atau dengan memanggil GameLift API operasi Amazon GetGameSessionLogUrl().

    • Nama-nama fungsi callback yang GameLift dapat dipanggil Amazon ke proses server Anda. Server game Anda harus menerapkan fungsi-fungsi ini. Untuk informasi lebih lanjut, lihat (C ++) (C #) (Unreal) (Go) (C++)Unreal).

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

      • onStartGameSession— Amazon GameLift memanggil fungsi ini sebagai tanggapan atas permintaan klien CreateGameSession().

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

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

    Anda juga dapat mengatur server game untuk mengakses AWS sumber daya 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 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 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 callback pemeriksaan kesehatan, Amazon GameLift menganggap proses server menjadi sehat kecuali server tidak merespons.

Amazon GameLift 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 Amazon GameLift mungkin menutup proses dan memulai yang baru. Amazon GameLift mengumpulkan metrik pada kesehatan proses server armada.

(Opsional) Dapatkan TLS sertifikat

Jika proses server berjalan pada armada yang telah mengaktifkan pembuatan TLS sertifikat, maka Anda dapat mengambil TLS sertifikat 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 memanggil callback ini untuk memulai sesi permainan di 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.

  • Beri tahu Amazon GameLift saat sesi permainan baru siap menerima pemain. Panggil API operasi server ActivateGameSession()(C ++) (C #) (Tidak nyata) (Go) (C ++)Tidak nyata). Menanggapi panggilan yang berhasil, Amazon GameLift 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 melacak pemain saat ini dan slot sesi permainan yang tersedia.

Untuk validasi, klien game yang meminta akses ke sesi permainan harus menyertakan ID sesi pemain. Amazon GameLift secara otomatis menghasilkan ID ini ketika pemain meminta untuk bergabung dengan game menggunakan StartGameSessionPlacement() atau StartMatchmaking(). Sesi pemain kemudian memesan slot terbuka dalam sesi permainan.

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 memverifikasi bahwa ID sesi pemain sesuai dengan slot terbuka yang dicadangkan dalam sesi permainan. Setelah Amazon GameLift memvalidasi ID sesi pemain, proses server menerima koneksi. Pemain kemudian dapat bergabung dengan sesi permainan. Jika Amazon GameLift tidak memvalidasi ID sesi pemain, maka proses server menolak koneksi.

(Opsional) Laporkan akhir sesi pemain

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

Untuk menangani koneksi yang terputus, dalam kode Anda, tambahkan panggilan ke API operasi 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 saat sesi game berakhir. Untuk mendaur ulang dan menyegarkan sumber daya hosting, Amazon GameLift menutup proses server setelah sesi permainan selesai.

Pada awal kode shutdown proses server, panggil API operasi server (C ++) ProcessEnding() (C #) (Unreal) (Go) g (C ++) (. Panggilan ini memberi tahu Amazon GameLift bahwa proses server dimatikan. Amazon GameLift 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. Amazon GameLift mengirimkan pemberitahuan ini ketika proses server secara konsisten melaporkan tidak sehat, atau jika instance di mana proses server berjalan sedang dihentikan. Amazon GameLift dapat menghentikan instans sebagai bagian dari peristiwa penurunan skala kapasitas, atau sebagai respons terhadap gangguan Instans Spot.

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

  • Menerapkan fungsionalitas panggilan balik onProcessTerminate(). fungsionalitas ini harus memanggil kode yang menutup proses server. Saat Amazon menjalankan GameLift operasi ini, interupsi Instans Spot memberikan pemberitahuan dua menit. Pemberitahuan ini memberi waktu proses server untuk memutuskan sambungan pemain dengan anggun, menyimpan data status game, dan melakukan tugas pembersihan lainnya.

  • Panggil API operasi server GetTerminationTime() (C ++) (C #) (Unreal) (Go) (C ++) server game Anda. Jika Amazon GameLift telah mengeluarkan panggilan untuk menghentikan proses server, maka GetTerminationTime() mengembalikan perkiraan waktu penghentian.

  • Pada awal kode shutdown server game Anda, panggil API operasi server (C ++) ProcessEnding() (C #) (Unreal) (Go) (C ++) (C #). Panggilan ini memberi tahu Amazon GameLift bahwa proses server dimatikan, dan Amazon GameLift kemudian mengubah status proses server menjadi. TERMINATED Setelah meneleponProcessEnding(), aman untuk proses ditutup.