Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Interaksi server klien Amazon GameLift dan game
Topik ini menjelaskan interaksi antara klien game, layanan backend, server game, dan Amazon. GameLift
Diagram berikut menggambarkan interaksi antara klien game, layanan backend, Amazon GameLift SDK, server game EC2 terkelola, SDK GameLift server Amazon, dan Amazon. GameLift Untuk penjelasan rinci tentang interaksi yang ditampilkan, lihat bagian berikut di halaman ini.
Inisialisasi server game
Langkah-langkah berikut menjelaskan interaksi yang terjadi saat Anda menyiapkan server game untuk menyelenggarakan sesi game.
-
Amazon GameLift meluncurkan server yang dapat dieksekusi pada instans Amazon Elastic Compute Cloud (Amazon EC2).
-
Panggilan server game:
-
InitSDK()
untuk menginisialisasi server SDK. -
ProcessReady()
untuk mengkomunikasikan kesiapan sesi permainan, informasi koneksi, dan lokasi file log sesi game.
Proses server kemudian menunggu callback dari Amazon. GameLift
-
-
Amazon GameLift memperbarui status proses server
ACTIVE
untuk mengaktifkan penempatan sesi game. -
Amazon GameLift mulai memanggil
onHealthCheck
callback dan terus memanggilnya secara berkala saat proses server aktif. Proses server dapat melaporkan sehat atau tidak sehat dalam satu menit.
Buat sesi game
Setelah Anda menginisialisasi server game Anda, interaksi berikut terjadi saat Anda membuat sesi game untuk meng-host pemain Anda.
-
Layanan backend memanggil operasi SDK.
StartGameSessionPlacement()
-
Amazon GameLift membuat
GameSessionPlacement
tiket baru dengan statusPENDING
dan mengembalikannya ke layanan backend. -
Layanan backend memperoleh status tiket penempatan dari antrian. Untuk informasi selengkapnya, lihat Atur notifikasi kejadian untuk penempatan sesi game.
-
Amazon GameLift memulai penempatan sesi game dengan memilih armada yang sesuai dan mencari proses server aktif dalam armada dengan sesi
0
game. Saat Amazon GameLift menemukan proses server, Amazon GameLift melakukan hal berikut:-
Membuat
GameSession
objek dengan pengaturan sesi permainan dan data pemain dari permintaan penempatan denganACTIVATING
status. -
Memanggil callback
onStartGameSession
pada proses server. Amazon GameLift meneruskan informasi keGameSession
objek yang menunjukkan bahwa proses server dapat mengatur sesi permainan. -
Mengubah jumlah sesi game proses server menjadi
1
.
-
-
Proses server menjalankan fungsi
onStartGameSession
callback. Ketika proses server siap menerima koneksi pemain, ia memanggilActivateGameSession()
dan menunggu koneksi pemain. -
Amazon GameLift memperbarui
GameSession
objek dengan informasi koneksi untuk proses server. (Informasi ini mencakup pengaturan port yang dilaporkan denganProcessReady()
.) Amazon GameLift juga mengubah statusnya menjadiACTIVE
. -
Layanan backend memanggil
DescribeGameSessionPlacement()
untuk mendeteksi status tiket yang diperbarui. Layanan backend kemudian menggunakan informasi koneksi untuk menghubungkan klien game ke proses server dan bergabung dengan sesi permainan.
Menambahkan pemain ke permainan
Urutan ini menjelaskan proses menambahkan pemain ke sesi game yang ada. Sesi pemain juga dapat diminta sebagai bagian dari permintaan penempatan sesi game.
-
Layanan backend memanggil operasi API klien
CreatePlayerSession()
dengan ID sesi game. -
Amazon GameLift memeriksa status sesi permainan (harus
ACTIVE
), dan mencari slot pemain terbuka di sesi permainan. Jika slot tersedia, maka Amazon GameLift melakukan hal berikut:-
Menciptakan
PlayerSession
objek baru dan menetapkan status untukRESERVED
. -
Menanggapi permintaan layanan backend dengan objek.
PlayerSession
-
-
Layanan backend menghubungkan klien game langsung ke proses server dengan ID sesi pemain.
-
Server memanggil operasi API server
AcceptPlayerSession()
untuk memvalidasi ID sesi pemain. Jika divalidasi, maka Amazon GameLift meneruskanPlayerSession
objek ke proses server. Proses server bisa menerima atau menolak connection. -
Amazon GameLift melakukan salah satu dari berikut ini:
-
Jika koneksi diterima, maka Amazon GameLift menetapkan
PlayerSession
statusnyaACTIVE
. -
Jika tidak ada respons yang diterima dalam 60 detik dari
CreatePlayerSession()
panggilan asli server backend, maka Amazon GameLift mengubahPlayerSession
statusnyaTIMEDOUT
dan membuka kembali slot pemain di sesi permainan.
-
Menghapus pemain
Saat menghapus pemain dari sesi permainan untuk menciptakan ruang bagi pemain baru untuk bergabung, interaksi berikut terjadi.
-
Seorang pemain terputus dari permainan.
-
Server mendeteksi koneksi yang hilang dan memanggil operasi
RemovePlayerSession()
API server. -
Amazon GameLift mengubah
PlayerSession
statusCOMPLETED
dan membuka kembali slot pemain di sesi permainan.
Matikan sesi permainan
Urutan interaksi ini terjadi ketika proses server mematikan sesi permainan saat ini.
-
Server mematikan sesi permainan dan server.
-
Server memanggil
ProcessEnding()
ke AmazonGameLift. -
Amazon GameLift melakukan hal berikut:
-
Mengunggah log sesi game ke Amazon Simple Storage Service (Amazon S3).
-
Mengubah
GameSession
status menjadiTERMINATED
. -
Mengubah status proses server menjadi
TERMINATED
. -
Mendaur ulang sumber daya contoh.
-