Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tambahkan GameLift Server Amazon ke server game Anda dengan SDK server
Topik ini memberikan panduan umum tentang fungsionalitas SDK server yang perlu Anda tambahkan ke kode server game Anda/ Fungsionalitas ini memungkinkan proses server game berkomunikasi dengan Amazon GameLift Servers layanan. Gunakan petunjuk ini untuk server game yang Anda rencanakan untuk diterapkan ke armada EC2 Amazon GameLift Servers terkelola, armada kontainer terkelola, atau armada Anywhere.
Proses server game berkomunikasi dengan Amazon GameLift Servers layanan untuk menerima instruksi dari layanan dan untuk melaporkan kesehatan proses server dan status sesi game. Untuk informasi terperinci tentang interaksi antara komponen solusi hosting game Anda (server game, layanan backend, klien game, danAmazon GameLift Servers), lihatclient/server Interaksi permainan dengan GameLift Server Amazon.
Dapatkan SDK server
Untuk mempersiapkan game Anda untuk hosting, tambahkan SDK server Amazon GameLift Servers untuk proyek server game Anda. Server SDK tersedia dalam beberapa bahasa. Untuk informasi selengkapnya tentang dukungan alat untuk server game, termasuk SDK server, lihatDapatkan GameLift Server Amazon alat pengembangan.
Unduh SDK server untuk bahasa pengembangan Anda dari github. com/amazon-gamelift
catatan
Jika Anda mengembangkan menggunakan Unreal Engine atau Unity, unduh Amazon GameLift Servers plugin untuk mesin game ini. SDK server dibangun dan siap digunakan. Lihat tautan ini untuk informasi tambahan:
-
Unreal Engine (Unduh plugin
) (Panduan Mengintegrasikan GameLift Server Amazon menjadi proyek Unreal Engine integrasi) -
Unity (Unduh plugin
) (Panduan Mengintegrasikan GameLift Server Amazon menjadi proyek Unity )
Referensi API SDK Server:
Inisialisasi proses server
Tambahkan kode untuk menjalin komunikasi dengan Amazon GameLift Servers layanan dan laporkan ketika proses server game siap untuk menyelenggarakan sesi permainan. Kode ini harus dijalankan sebelum Amazon GameLift Servers kode apa pun.
-
Inisialisasi klien Amazon GameLift Servers API dengan memanggil
InitSdk(). Jika Anda mempersiapkan server game Anda untuk berjalan pada armada Amazon GameLift Servers EC2 terkelola, gunakan defaultInitSDK()(C++) (C#) (Unreal) (Go) (C++) Klien API menangani koneksi ke Amazon GameLift Servers layanan untuk Anda.Jika Anda sedang mempersiapkan server game Anda untuk digunakan pada GameLift Server Amazon Armada di mana saja:
Inisialisasi klien Amazon GameLift Servers API
InitSdk()dengan memanggil dengan yang berikut:ServerParameters-
URL dari websocket yang digunakan untuk terhubung ke server game Anda.
-
ID proses yang digunakan untuk meng-host server game Anda.
-
ID komputasi yang menghosting proses server game Anda.
-
ID armada yang berisi komputasi Any Amazon GameLift Servers where Anda.
-
Token otorisasi yang dihasilkan oleh Amazon GameLift Servers operasi
GetComputeAuthToken.
-
-
Beri tahu layanan bahwa proses server game siap untuk menyelenggarakan sesi game. Panggil
ProcessReady()(C++) (C#) (Unreal) (Go) (C++) dengan yang berikut ini.ProcessParametersSetiap proses server game harus memanggilProcessReady()hanya sekali.-
Nomor port untuk proses server. Ketika proses server memulai sesi permainan, ia menyediakan port ke Amazon GameLift Servers layanan, yang memperbarui informasi sesi game. 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 ingin Anda Amazon GameLift Servers simpan untuk Anda. Ini mungkin termasuk log sesi game dan file lain yang dihasilkan oleh proses server selama sesi permainan. Meskipun Amazon GameLift Servers menyimpan file-file ini sementara pada komputasi tempat proses server berjalan, ini hanya tersedia sampai instance dimatikan. Anda dapat mengakses file yang disimpan melalui Amazon GameLift Servers konsol
atau dengan memanggil operasi Amazon GameLift Servers API GetGameSessionLogUrl (). Jika Anda sedang mempersiapkan server game Anda untuk digunakan pada GameLift Server Amazon 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 prompt 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++)-
(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 isi ulang pertandingan. Fitur FlexMatch isi ulang membutuhkan panggilan balik 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 Hubungkan Anda GameLift Server Amazon server game yang di-host ke yang lain AWS sumber daya.
-
(Opsional) Laporkan kesehatan proses server
Tambahkan kode ke server game Anda untuk mengimplementasikan fungsi onHealthCheck() callback. Amazon GameLift Serversmemanggil metode callback ini secara berkala untuk mengumpulkan metrik kesehatan. Untuk menerapkan fungsionalitas callback ini, lakukan hal berikut:
-
Mengevaluasi status kesehatan 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 dalam 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, maka Amazon GameLift Servers anggap proses server sehat kecuali server tidak merespons.
Amazon GameLift ServersLayanan menggunakan kesehatan proses server untuk mengakhiri proses yang tidak sehat dan membersihkan sumber daya. Jika proses server terus dilaporkan sebagai tidak sehat atau tidak merespons selama tiga pemeriksaan kesehatan berturut-turut, maka layanan mungkin mematikan proses dan memulai yang baru. Layanan mengumpulkan metrik pada kesehatan proses server armada.
(Opsional) Dapatkan sertifikat TLS
Jika proses server berjalan pada armada yang telah 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++)
Mulai sesi game
Tambahkan kode untuk mengimplementasikan fungsi onStartGameSession callback. Amazon GameLift Serversmemanggil callback ini untuk memulai sesi permainan pada proses server.
onStartGameSessionFungsi mengambil GameSession objek 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
GameSessionobjek. -
Beri tahu Amazon GameLift Servers layanan ketika sesi permainan baru siap menerima pemain. Panggil operasi API server
ActivateGameSession()(C++) (C#) (Unreal) (Go) (C++) 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 Serversmelacak pemain saat ini dan slot sesi permainan yang tersedia.
Untuk validasi, klien game yang mencoba bergabung dengan sesi game harus menyertakan ID sesi pemain. Amazon GameLift Serversmenghasilkan ID ini saat game Anda memulai sesi permainan baru dengan memanggil StartGameSessionPlacement () atau StartMatchmaking (). Pada permintaan ini, slot terbuka dalam sesi permainan disediakan 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 disediakan 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 menolak koneksi.
(Opsional) Laporkan akhir sesi pemain
Jika Anda melacak status sesi pemain, tambahkan kode untuk memberi tahu Amazon GameLift Servers ketika pemain meninggalkan sesi permainan. Kode ini harus berjalan setiap kali proses server mendeteksi koneksi terputus. Amazon GameLift Serversmenggunakan 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 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 game 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 ProcessEnding() (C++) (C#) (Unreal) (Go) (C++) Panggilan ini memberi tahu Amazon GameLift Servers bahwa proses server dimatikan. Amazon GameLift Serversmengubah status sesi game dan status proses server menjadiTERMINATED. Setelah meneleponProcessEnding(), aman bagi proses untuk dimatikan.
Menanggapi notifikasi shutdown proses server
Tambahkan kode untuk mematikan proses server sebagai respons terhadap 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 dihentikan. Amazon GameLift Serversdapat menghentikan instance sebagai bagian dari peristiwa penurunan kapasitas, atau sebagai respons terhadap gangguan Instans Spot. Gangguan Instance Spot memberikan pemberitahuan dua menit, yang memberikan waktu proses server untuk memutuskan koneksi pemain dengan anggun, menyimpan data status permainan, dan melakukan tugas pembersihan lainnya.
Untuk menangani pemberitahuan shutdown, buat perubahan berikut pada kode server game Anda:
-
Menerapkan fungsi callback
onProcessTerminate()(C++) (C#) (Unreal) (Go) (C ++) Fungsi ini harus memanggil kode yang mematikan proses server. -
Panggil operasi API server
GetTerminationTime()(C++) (C#) (Unreal) (Go) (C++) dari kode shutdown server game Anda. Jika Amazon GameLift Servers telah mengeluarkan panggilan untuk menghentikan proses server, makaGetTerminationTime()mengembalikan perkiraan waktu penghentian. -
Pada awal kode shutdown server game Anda, panggil operasi API server
ProcessEnding()(C++) (C#) (Unreal) (Go) (C++) Panggilan ini memberi tahu Amazon GameLift Servers layanan bahwa proses server dimatikan. Layanan kemudian mengubah status proses server menjadiTERMINATED. Setelah meneleponProcessEnding(), aman bagi proses untuk dimatikan.