Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Interaksi klien/server game dengan Amazon GameLift
Komponen dalam solusi GameLift hosting Amazon Anda berinteraksi satu sama lain dengan cara tertentu untuk menjalankan sesi permainan dalam menanggapi permintaan pemain. Topik ini menjelaskan bagaimana komponen berkomunikasi satu sama lain ketika server game Anda di-host di armada yang GameLift dikelola Amazon, EC2 armada Amazon GameLift Anywhere yang dikelola sendiri, atau solusi hybrid.
Komponen solusi hosting termasuk server game, GameLift layanan Amazon, layanan backend sisi klien, dan klien game. Server game menggunakan GameLift server Amazon SDK untuk berinteraksi dengan GameLift layanan Amazon. Layanan backend menggunakan GameLift layanan Amazon API (bagian dari AWS SDK) untuk berinteraksi dengan layanan atas nama klien game. Saat bergabung dengan sesi permainan, klien game terhubung langsung ke sesi game menggunakan alamat IP dan nomor port unik sesi game.
Diagram interaksi
Diagram berikut menggambarkan bagaimana komponen hosting game Anda berinteraksi sehingga GameLift layanan Amazon dapat melacak status ketersediaan server game dan memulai sesi permainan dalam menanggapi permintaan pemain.
Perilaku interaksi
Bagian berikut menjelaskan urutan peristiwa di setiap interaksi kunci.
Menginisialisasi proses server game
Saat startup, proses server game membangun komunikasi dengan GameLift layanan Amazon dan melaporkan statusnya sebagai siap untuk menjadi tuan rumah sesi game.
-
Proses baru dari server game yang dapat dieksekusi mulai berjalan pada sumber daya hosting.
-
Proses server game memanggil SDK operasi server berikut secara berurutan:
-
InitSDK()
untuk menginisialisasi serverSDK, mengautentikasi proses server, dan menjalin komunikasi dengan layanan Amazon GameLift . -
ProcessReady()
untuk mengkomunikasikan kesiapan untuk menyelenggarakan sesi permainan. Panggilan ini juga melaporkan informasi koneksi proses, yang digunakan klien game untuk terhubung ke sesi permainan, dan informasi lainnya.
Proses server kemudian menunggu permintaan dari layanan Amazon GameLift .
-
-
Amazon GameLift memperbarui status proses server
ACTIVE
dan tersedia untuk meng-host sesi permainan baru. -
Amazon GameLift mulai memanggil panggilan
onHealthCheck
balik secara berkala untuk meminta status kesehatan dari proses server. Panggilan ini berlanjut saat proses server tetap dalam status aktif. Proses server harus merespon sehat atau tidak sehat dalam satu menit. Jika proses server merespons tidak sehat atau tidak merespons, pada titik tertentu GameLift layanan Amazon mengubah status aktif proses server dan berhenti mengirim permintaan untuk memulai sesi permainan.
Membuat sesi game
GameLift Layanan Amazon memulai sesi permainan baru sebagai tanggapan atas permintaan dari pemain untuk memainkan game.
-
Seorang pemain yang menggunakan klien game meminta untuk bergabung dengan sesi permainan. Bergantung pada bagaimana game Anda menangani proses bergabung pemain, klien game mengirimkan permintaan ke layanan backend.
-
Jika proses bergabung pemain memerlukan memulai sesi permainan baru, layanan backend mengirimkan permintaan untuk sesi permainan baru ke layanan Amazon GameLift . Permintaan ini memanggil API operasi layanan
StartGameSessionPlacement()
. (Sebagai alternatif, layanan backend mungkin memanggilStartMatchmaking()
, atauCreateGameSession()
.) -
GameLift Layanan Amazon merespons dengan membuat
GameSessionPlacement
tiket baru dengan statusPENDING
. Ini mengembalikan informasi tiket ke layanan backend, sehingga dapat melacak status tiket penempatan dan menentukan kapan sesi permainan siap untuk pemain. Untuk informasi selengkapnya, lihat Atur notifikasi kejadian untuk penempatan sesi game. -
GameLift Layanan Amazon memulai proses penempatan sesi permainan. Ini mengidentifikasi armada mana yang harus dilihat dan mencari armada tersebut untuk proses server aktif yang tidak menghosting sesi permainan. Saat menemukan proses server yang tersedia, GameLift layanan Amazon melakukan hal berikut:
-
Membuat
GameSession
objek dengan pengaturan sesi permainan dan data pemain dari permintaan penempatan, dan menetapkan status keACTIVATING
. -
Meminta proses server untuk memulai sesi permainan. Layanan memanggil
onStartGameSession
callback proses server dan meneruskan objek.GameSession
-
Mengubah jumlah sesi permainan proses server menjadi
1
.
-
-
Proses server menjalankan fungsi
onStartGameSession
callback-nya. Ketika proses server siap menerima koneksi pemain, ia memanggil SDK operasi serverActivateGameSession()
dan menunggu koneksi pemain. -
GameLift Layanan Amazon memperbarui
GameSession
objek dengan informasi koneksi untuk proses server (seperti yang dilaporkan dalam panggilan keProcessReady()
) dan menetapkan status sesi game keACTIVE
. Ini juga memperbarui statusGameSessionPlacement
tiket keFULFILLED
. -
Layanan backend memanggil
DescribeGameSessionPlacement()
untuk memeriksa status tiket dan mendapatkan informasi sesi permainan. Saat sesi permainan aktif, layanan backend memberi tahu klien game dan meneruskan informasi koneksi sesi game. -
Klien game menggunakan informasi koneksi untuk terhubung langsung ke proses server game dan bergabung dengan sesi permainan.
Menambahkan pemain ke game
Sebuah game secara opsional dapat menggunakan sesi pemain untuk melacak koneksi pemain ke sesi permainan. Sesi pemain dapat dibuat secara individual atau sebagai bagian dari permintaan penempatan sesi permainan.
-
Layanan backend memanggil API operasi layanan
CreatePlayerSession()
dengan ID sesi game. -
GameLift Layanan Amazon memeriksa status sesi permainan (harus
ACTIVE
), dan mencari slot pemain terbuka di sesi permainan. Jika slot tersedia, maka layanan melakukan hal berikut:-
Membuat
PlayerSession
objek baru dan menetapkan status keRESERVED
. -
Menanggapi permintaan layanan backend dengan informasi sesi pemain.
-
-
Layanan backend meneruskan informasi sesi pemain ke klien game bersama dengan informasi koneksi sesi game.
-
Klien game menggunakan informasi koneksi dan ID sesi pemain untuk terhubung langsung ke proses server game dan meminta untuk bergabung dengan sesi permainan.
-
Menanggapi upaya bergabung klien game, proses server game memanggil API operasi layanan
AcceptPlayerSession()
untuk memvalidasi ID sesi pemain. Proses server bisa menerima atau menolak connection. -
GameLift Layanan Amazon melakukan salah satu hal berikut:
-
Jika koneksi diterima, maka Amazon GameLift menetapkan
PlayerSession
status keACTIVE
dan meneruskanPlayerSession
ke proses server game. -
Jika proses server game tidak memanggil
AcceptPlayerSession()
ID sesi pemain dalam jangka waktu tertentu setelahCreatePlayerSession()
permintaan asli, GameLift layanan Amazon mengubahPlayerSession
statusTIMEDOUT
dan membuka kembali slot pemain di sesi permainan.
-
Menghapus pemain
Untuk game yang menggunakan sesi pemain, proses server game memberi tahu GameLift layanan Amazon saat pemain terputus. Layanan ini menggunakan informasi ini untuk melacak status slot pemain dalam sesi permainan dan dapat memungkinkan pemain baru untuk menggunakan slot terbuka.
-
Seorang pemain terputus dari sesi permainan.
-
Proses server game mendeteksi koneksi yang hilang dan memanggil SDK operasi
RemovePlayerSession()
server. -
GameLift Layanan Amazon mengubah status sesi pemain
COMPLETED
dan membuka kembali slot pemain di sesi permainan.
Mematikan sesi permainan
Di akhir sesi permainan, atau saat mematikan sesi permainan, proses server memberi tahu GameLift layanan Amazon tentang status sesi game.
-
Proses server game mengakhiri sesi permainan dan memulai proses shutdown dengan memanggil SDK operasi
ProcessEnding()
server. -
GameLift Layanan Amazon melakukan hal berikut:
-
Mengunggah log sesi game ke Amazon Simple Storage Service (Amazon S3).
-
Mengubah status sesi game menjadi
TERMINATED
. -
Mengubah status proses server menjadi
TERMINATED
. -
Bergantung pada bagaimana solusi hosting dirancang, sumber daya hosting yang baru tersedia dialokasikan untuk menjalankan proses server game baru.
-