Integrasikan Amazon GameLift dengan proyek klien game Unity - Amazon GameLift

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

Integrasikan Amazon GameLift dengan proyek klien game Unity

catatan

Topik ini memberikan informasi untuk versi sebelumnya dari GameLift plugin Amazon untuk Unity. Versi 1.0.0 (dirilis pada tahun 2021) menggunakan GameLift server Amazon SDK 4.x atau yang lebih lama. Untuk dokumentasi tentang versi terbaru plugin, yang menggunakan server SDK 5.x dan mendukung Amazon GameLift Anywhere, lihat GameLift Plugin Amazon untuk panduan Unity untuk server SDK 5.x.

Topik ini membantu Anda mengatur klien game untuk terhubung ke sesi game yang GameLift dihosting Amazon melalui layanan backend. Gunakan Amazon GameLift APIs untuk memulai perjodohan, meminta penempatan sesi game, dan banyak lagi.

Tambahkan kode ke proyek layanan backend untuk memungkinkan komunikasi dengan layanan Amazon GameLift . Layanan backend menangani semua komunikasi klien game dengan layanan. GameLift Untuk informasi selengkapnya tentang layanan backend, lihat.

Server backend menangani tugas klien game berikut:

  • Sesuaikan otentikasi untuk pemain Anda.

  • Minta informasi tentang sesi permainan aktif dari GameLift layanan Amazon.

  • Buat sesi permainan baru.

  • Tambahkan pemain ke sesi permainan yang ada.

  • Hapus pemain dari sesi permainan yang ada.

Prasyarat

Sebelum mengatur komunikasi server game dengan GameLift klien Amazon, selesaikan tugas-tugas berikut:

Inisialisasi klien game

catatan

Topik ini mengacu pada GameLift plugin Amazon untuk Unity versi 1.0.0, yang menggunakan server SDK 4.x atau yang lebih lama.

Tambahkan kode untuk menginisialisasi klien game. Jalankan kode ini saat diluncurkan, ini diperlukan untuk GameLift fungsi Amazon lainnya.

  1. InisialisasiAmazonGameLiftClient. Panggil AmazonGameLiftClient dengan konfigurasi klien default atau konfigurasi khusus. Untuk informasi selengkapnya tentang cara mengkonfigurasi klien, lihatSiapkan Amazon GameLift di layanan backend.

  2. Hasilkan id pemain unik untuk setiap pemain untuk terhubung ke sesi permainan. Untuk informasi selengkapnya, lihat Hasilkan ID pemain.

    Contoh berikut menunjukkan cara mengatur GameLift klien Amazon.

    public class GameLiftClient { private GameLift gl; //A sample way to generate random player IDs. bool includeBrackets = false; bool includeDashes = true; string playerId = AZ::Uuid::CreateRandom().ToString<string>(includeBrackets, includeDashes); private Amazon.GameLift.Model.PlayerSession psession = null; public AmazonGameLiftClient aglc = null; public void CreateGameLiftClient() { //Access Amazon GameLift service by setting up a configuration. //The default configuration specifies a location. var config = new AmazonGameLiftConfig(); config.RegionEndpoint = Amazon.RegionEndpoint.USEast1; CredentialProfile profile = null; var nscf = new SharedCredentialsFile(); nscf.TryGetProfile(profileName, out profile); AWSCredentials credentials = profile.GetAWSCredentials(null); //Initialize GameLift Client with default client configuration. aglc = new AmazonGameLiftClient(credentials, config); } }

Buat sesi permainan pada armada tertentu

catatan

Topik ini mengacu pada GameLift plugin Amazon untuk Unity versi 1.0.0, yang menggunakan server SDK 4.x atau yang lebih lama.

Tambahkan kode untuk memulai sesi game baru di armada yang Anda gunakan dan sediakan untuk pemain. Setelah GameLift Amazon membuat sesi permainan baru dan mengembalikan aGameSession, Anda dapat menambahkan pemain ke dalamnya.

  • Tempatkan permintaan untuk sesi permainan baru.

    • Jika game Anda menggunakan armada, hubungi CreateGameSession() dengan ID armada atau alias, nama sesi, dan jumlah maksimum pemain bersamaan untuk game tersebut.

    • Jika game Anda menggunakan antrian, hubungi. StartGameSessionPlacement()

Contoh berikut menunjukkan cara membuat sesi permainan.

public Amazon.GameLift.Model.GameSession() { var cgsreq = new Amazon.GameLift.Model.CreateGameSessionRequest(); //A unique identifier for the alias with the fleet to create a game session in. cgsreq.AliasId = aliasId; //A unique identifier for a player or entity creating the game session cgsreq.CreatorId = playerId; //The maximum number of players that can be connected simultaneously to the game session. cgsreq.MaximumPlayerSessionCount = 4; //Prompt an available server process to start a game session and retrieves connection information for the new game session Amazon.GameLift.Model.CreateGameSessionResponse cgsres = aglc.CreateGameSession(cgsreq); string gsid = cgsres.GameSession != null ? cgsres.GameSession.GameSessionId : "N/A"; Debug.Log((int)cgsres.HttpStatusCode + " GAME SESSION CREATED: " + gsid); return cgsres.GameSession; }

Tambahkan pemain ke sesi permainan

catatan

Topik ini mengacu pada GameLift plugin Amazon untuk Unity versi 1.0.0, yang menggunakan server SDK 4.x atau yang lebih lama.

Setelah GameLift Amazon membuat sesi permainan baru dan mengembalikan GameSession objek, Anda dapat menambahkan pemain ke dalamnya.

  1. Pesan slot pemain dalam sesi permainan dengan membuat sesi pemain baru. Gunakan CreatePlayerSession atau CreatePlayerSessions dengan ID sesi permainan dan ID unik untuk setiap pemain.

  2. Connect ke sesi permainan. Ambil PlayerSession objek untuk mendapatkan informasi koneksi sesi permainan. Anda dapat menggunakan informasi ini untuk membuat koneksi langsung ke proses server:

    1. Gunakan port yang ditentukan dan DNS nama atau alamat IP dari proses server.

    2. Gunakan DNS nama dan port armada Anda. DNSNama dan port diperlukan jika armada Anda mengaktifkan pembuatan TLS sertifikat.

    3. Referensi ID sesi pemain. ID sesi pemain diperlukan jika server game Anda memvalidasi koneksi pemain yang masuk.

Contoh berikut menunjukkan cara memesan tempat pemain dalam sesi permainan.

public Amazon.GameLift.Model.PlayerSession CreatePlayerSession(Amazon.GameLift.Model.GameSession gsession) { var cpsreq = new Amazon.GameLift.Model.CreatePlayerSessionRequest(); cpsreq.GameSessionId = gsession.GameSessionId; //Specify game session ID. cpsreq.PlayerId = playerId; //Specify player ID. Amazon.GameLift.Model.CreatePlayerSessionResponse cpsres = aglc.CreatePlayerSession(cpsreq); string psid = cpsres.PlayerSession != null ? cpsres.PlayerSession.PlayerSessionId : "N/A"; return cpsres.PlayerSession; }

Kode berikut menggambarkan cara menghubungkan pemain dengan sesi permainan.

public bool ConnectPlayer(int playerIdx, string playerSessionId) { //Call ConnectPlayer with player ID and player session ID. return server.ConnectPlayer(playerIdx, playerSessionId); }

Menghapus pemain dari sesi permainan

catatan

Topik ini mengacu pada GameLift plugin Amazon untuk Unity versi 1.0.0, yang menggunakan server SDK 4.x atau yang lebih lama.

Anda dapat menghapus pemain dari sesi permainan ketika mereka meninggalkan permainan.

  1. Beri tahu GameLift layanan Amazon bahwa pemain telah terputus dari proses server. Panggil RemovePlayerSession dengan ID sesi pemain.

  2. Verifikasi RemovePlayerSession pengembalian ituSuccess. Kemudian, Amazon GameLift mengubah slot pemain agar tersedia, yang GameLift dapat ditetapkan Amazon ke pemain baru.

Contoh berikut menggambarkan cara menghapus sesi pemain.

public void DisconnectPlayer(int playerIdx) { //Receive the player session ID. string playerSessionId = playerSessions[playerIdx]; var outcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId); if (outcome.Success) { Debug.Log (":) PLAYER SESSION REMOVED"); } else { Debug.Log(":(PLAYER SESSION REMOVE FAILED. RemovePlayerSession() returned " + outcome.Error.ToString()); } }