Interaksi server klien Amazon GameLift dan game - Amazon GameLift

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.

Interaksi klien/server game untuk kasus penggunaan yang tercantum di bagian berikut.

Inisialisasi server game

Langkah-langkah berikut menjelaskan interaksi yang terjadi saat Anda menyiapkan server game untuk menyelenggarakan sesi game.

  1. Amazon GameLift meluncurkan server yang dapat dieksekusi pada instans Amazon Elastic Compute Cloud (Amazon EC2).

  2. Panggilan server game:

    1. InitSDK() untuk menginisialisasi server SDK.

    2. ProcessReady()untuk mengkomunikasikan kesiapan sesi permainan, informasi koneksi, dan lokasi file log sesi game.

    Proses server kemudian menunggu callback dari Amazon. GameLift

  3. Amazon GameLift memperbarui status proses server ACTIVE untuk mengaktifkan penempatan sesi game.

  4. 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.

  1. Layanan backend memanggil operasi SDK. StartGameSessionPlacement()

  2. Amazon GameLift membuat GameSessionPlacement tiket baru dengan status PENDING dan mengembalikannya ke layanan backend.

  3. Layanan backend memperoleh status tiket penempatan dari antrian. Untuk informasi selengkapnya, lihat Atur notifikasi kejadian untuk penempatan sesi game.

  4. 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:

    1. Membuat GameSession objek dengan pengaturan sesi permainan dan data pemain dari permintaan penempatan dengan ACTIVATING status.

    2. Memanggil callback onStartGameSession pada proses server. Amazon GameLift meneruskan informasi ke GameSession objek yang menunjukkan bahwa proses server dapat mengatur sesi permainan.

    3. Mengubah jumlah sesi game proses server menjadi1.

  5. Proses server menjalankan fungsi onStartGameSession callback. Ketika proses server siap menerima koneksi pemain, ia memanggil ActivateGameSession() dan menunggu koneksi pemain.

  6. 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.

  7. 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.

  1. Layanan backend memanggil operasi API klien CreatePlayerSession() dengan ID sesi game.

  2. Amazon GameLift memeriksa status sesi permainan (harusACTIVE), dan mencari slot pemain terbuka di sesi permainan. Jika slot tersedia, maka Amazon GameLift melakukan hal berikut:

    1. Menciptakan PlayerSession objek baru dan menetapkan status untukRESERVED.

    2. Menanggapi permintaan layanan backend dengan objek. PlayerSession

  3. Layanan backend menghubungkan klien game langsung ke proses server dengan ID sesi pemain.

  4. Server memanggil operasi API server AcceptPlayerSession() untuk memvalidasi ID sesi pemain. Jika divalidasi, maka Amazon GameLift meneruskan PlayerSession objek ke proses server. Proses server bisa menerima atau menolak connection.

  5. Amazon GameLift melakukan salah satu dari berikut ini:

    1. Jika koneksi diterima, maka Amazon GameLift menetapkan PlayerSession statusnyaACTIVE.

    2. Jika tidak ada respons yang diterima dalam 60 detik dari CreatePlayerSession() panggilan asli server backend, maka Amazon GameLift mengubah PlayerSession statusnya TIMEDOUT 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.

  1. Seorang pemain terputus dari permainan.

  2. Server mendeteksi koneksi yang hilang dan memanggil operasi RemovePlayerSession() API server.

  3. Amazon GameLift mengubah PlayerSession status COMPLETED dan membuka kembali slot pemain di sesi permainan.

Matikan sesi permainan

Urutan interaksi ini terjadi ketika proses server mematikan sesi permainan saat ini.

  1. Server mematikan sesi permainan dan server.

  2. Server memanggil ProcessEnding() ke AmazonGameLift.

  3. Amazon GameLift melakukan hal berikut:

    1. Mengunggah log sesi game ke Amazon Simple Storage Service (Amazon S3).

    2. Mengubah GameSession status menjadiTERMINATED.

    3. Mengubah status proses server menjadiTERMINATED.

    4. Mendaur ulang sumber daya contoh.