Amazon GameLift server SDK 5.x untuk C # dan Unity: Tindakan - Amazon GameLift

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

Amazon GameLift server SDK 5.x untuk C # dan Unity: Tindakan

Gunakan referensi Amazon GameLift C# server SDK 5.x untuk mengintegrasikan game multipemain Anda untuk hosting dengan Amazon. GameLift Untuk panduan tentang proses integrasi, lihatTambahkan Amazon GameLift ke server game Anda. Jika Anda menggunakan GameLift plugin Amazon untuk Unity, lihat juga GameLift Plugin Amazon untuk Unity (server SDK 5.x).

Amazon GameLift server SDK 5.x untuk C # dan Unity: Tipe data

GetSdkVersion()

Mengembalikan nomor versi saat ini dari SDK dibangun ke dalam proses server.

Sintaks

AwsStringOutcome GetSdkVersion();

Nilai yang ditampilkan

Jika berhasil, mengembalikan SDK versi saat ini sebagai AwsStringOutcome objek. String yang dikembalikan mencakup nomor versi (contoh5.0.0). Jika tidak berhasil, ini mengembalikan pesan kesalahan.

Contoh

var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();

Init SDK ()

Menginisialisasi Amazon GameLift SDK untuk EC2 armada yang dikelola. Panggil metode ini saat peluncuran, sebelum inisialisasi lain yang terkait dengan Amazon GameLift terjadi. Metode ini membaca parameter server dari lingkungan host untuk mengatur komunikasi antara server dan GameLift layanan Amazon.

Sintaks

GenericOutcome InitSDK();

Nilai yang ditampilkan

Jika berhasil, mengembalikan InitSdkOutcome objek untuk menunjukkan bahwa proses server siap untuk memanggilProcessReady().

Contoh

//Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK();

Init SDK ()

Menginisialisasi Amazon GameLift SDK untuk Anywhere armada. Panggil metode ini saat peluncuran, sebelum inisialisasi lain yang terkait dengan Amazon GameLift terjadi. Metode ini memerlukan parameter server eksplisit untuk mengatur komunikasi antara server dan GameLift layanan Amazon.

Sintaks

GenericOutcome InitSDK(ServerParameters serverParameters);

Parameter

ServerParameters

Untuk menginisialisasi server game di Amazon GameLift Anywhere armada, membangun ServerParameters objek dengan informasi berikut:

  • Yang URL WebSocket digunakan untuk terhubung ke server game Anda.

  • ID dari proses yang digunakan untuk meng-host server game Anda.

  • ID komputasi yang menghosting proses server game Anda.

  • ID GameLift armada Amazon yang berisi Amazon Anda GameLift Anywhere menghitung.

  • Token otorisasi yang dihasilkan oleh GameLift operasi Amazon.

Nilai yang dikembalikan

Jika berhasil, mengembalikan InitSdkOutcome objek untuk menunjukkan bahwa proses server siap untuk memanggilProcessReady().

catatan

Jika panggilan gagal untuk build game yang diterapkan ke InitSDK() armada Anywhere, periksa ServerSdkVersion parameter yang digunakan saat membuat sumber daya build. Anda harus secara eksplisit menetapkan nilai ini ke SDK versi server yang digunakan. Nilai default untuk parameter ini adalah 4.x, yang tidak kompatibel. Untuk mengatasi masalah ini, buat build baru dan terapkan ke armada baru.

Contoh

//Define the server parameters string websocketUrl = "wss://us-west-1.api.amazongamelift.com"; string processId = "PID1234"; string fleetId = "aarn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa"; string hostId = "HardwareAnywhere"; string authToken = "1111aaaa-22bb-33cc-44dd-5555eeee66ff"; ServerParameters serverParameters = new ServerParameters(webSocketUrl, processId, hostId, fleetId, authToken); //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters);

ProcessReady()

Memberitahu Amazon GameLift bahwa proses server siap untuk meng-host sesi game. Panggil metode ini setelah memanggilInit SDK (). Metode ini harus dipanggil hanya satu kali per proses.

Sintaks

GenericOutcome ProcessReady(ProcessParameters processParameters)

Parameter

ProcessParameters

Sebuah ProcessParameters objek menyimpan informasi tentang proses server.

Nilai yang dikembalikan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

Contoh ini menggambarkan baik metode dan delegasi implementasi fungsi.

// Set parameters and call ProcessReady ProcessParameters processParams = new ProcessParameters( this.OnStartGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnUpdateGameSession, port, new LogParameters(new List<string>() // Examples of log and error files written by the game server { "C:\\game\\logs", "C:\\game\\error" }) ); GenericOutcome processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);

ProcessEnding()

Memberi tahu Amazon GameLift bahwa proses server berakhir. Panggil metode ini setelah semua tugas pembersihan lainnya (termasuk mematikan sesi permainan aktif) dan sebelum mengakhiri proses. Tergantung pada hasilProcessEnding(), proses keluar dengan sukses (0) atau kesalahan (-1) dan menghasilkan peristiwa armada. Jika proses berakhir dengan kesalahan, peristiwa armada yang dihasilkan adalahSERVER_PROCESS_TERMINATED_UNHEALTHY.

Sintaks

GenericOutcome ProcessEnding()

Nilai yang ditampilkan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

Contoh ini memanggil ProcessEnding() dan Destroy() sebelum menghentikan proses server dengan kode keluar sukses atau kesalahan.

GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); GameLiftServerAPI.Destroy(); if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); }

ActivateGameSession()

Memberi tahu Amazon GameLift bahwa proses server telah mengaktifkan sesi permainan dan sekarang siap menerima koneksi pemain. Tindakan ini harus dipanggil sebagai bagian dari fungsi onStartGameSession() callback, setelah semua inisialisasi sesi game.

Sintaks

GenericOutcome ActivateGameSession()

Nilai yang ditampilkan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

Contoh ini menunjukkan ActivateGameSession() yang dipanggil sebagai bagian dari fungsi delegasi onStartGameSession().

void OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players GenericOutcome activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }

UpdatePlayerSessionCreationPolicy()

Memperbarui kemampuan sesi game saat ini untuk menerima sesi pemain baru. Sesi game dapat diatur untuk menerima atau menolak semua sesi pemain baru.

Sintaks

GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)

Parameter

playerSessionPolicy

Nilai string yang menunjukkan apakah sesi permainan menerima pemain baru.

Nilai yang valid meliputi:

  • ACCEPT_ ALL — Terima semua sesi pemain baru.

  • DENY_ ALL — Tolak semua sesi pemain baru.

Nilai yang dikembalikan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

Contoh ini menetapkan kebijakan bergabung sesi game saat ini untuk menerima semua pemain.

GenericOutcome updatePlayerSessionPolicyOutcome = GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.ACCEPT_ALL);

GetGameSessionId()

Mengambil ID sesi permainan yang dihosting oleh proses server aktif.

Untuk proses idle yang tidak diaktifkan dengan sesi game, panggilan akan menampilkan file. GameLiftError

Sintaks

AwsStringOutcome GetGameSessionId()

Nilai yang ditampilkan

Jika berhasil, ini mengembalikan ID sesi game sebagai objek AwsStringOutcome. Jika tidak berhasil, mengembalikan pesan kesalahan.

Contoh

AwsStringOutcome getGameSessionIdOutcome = GameLiftServerAPI.GetGameSessionId();

GetTerminationTime()

Mengembalikan waktu yang merupakan jadwal proses server akan ditutup, jika waktu penghentian tersedia. Proses server mengambil tindakan ini setelah menerima onProcessTerminate() panggilan balik dari Amazon GameLift. Amazon GameLift onProcessTerminate() menyerukan alasan-alasan berikut:

  • Ketika proses server telah melaporkan kesehatan yang buruk atau belum menanggapi Amazon GameLift.

  • Saat mengakhiri instance selama acara scale-down.

  • Ketika sebuah instance dihentikan karena gangguan spot-instance.

Sintaks

AwsDateTimeOutcome GetTerminationTime()

Nilai yang ditampilkan

Jika berhasil, ini mengembalikan waktu penghentian sebagai objek AwsDateTimeOutcome. Nilainya adalah waktu penghentian, dinyatakan dalam kutu yang telah berlalu sejak. 0001 00:00:00 Misalnya, nilai waktu tanggal 2020-09-13 12:26:40 -000Z sama dengan 637355968000000000 kutu. Jika tidak ada waktu penghentian tersedia, pesan kesalahan ditampilkan.

Contoh

AwsDateTimeOutcome getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();

AcceptPlayerSession()

Memberi tahu Amazon GameLift bahwa pemain dengan ID sesi pemain yang ditentukan telah terhubung ke proses server dan memerlukan validasi. Amazon GameLift memverifikasi bahwa ID sesi pemain valid. Setelah sesi pemain divalidasi, Amazon GameLift mengubah status slot pemain dari RESERVED keACTIVE.

Sintaks

GenericOutcome AcceptPlayerSession(String playerSessionId)

Parameter

playerSessionId

ID unik yang dikeluarkan oleh GameLift saat sesi pemain baru dibuat.

Nilai yang dikembalikan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

Contoh ini menggambarkan fungsi untuk menangani permintaan koneksi, termasuk memvalidasi dan menolak sesi pemain yang tidak valid. IDs

void ReceiveConnectingPlayerSessionID (Connection connection, String playerSessionId) { GenericOutcome acceptPlayerSessionOutcome = GameLiftServerAPI.AcceptPlayerSession(playerSessionId); if(acceptPlayerSessionOutcome.Success) { connectionToSessionMap.emplace(connection, playerSessionId); connection.Accept(); } else { connection.Reject(acceptPlayerSessionOutcome.Error.ErrorMessage); } }

RemovePlayerSession()

Memberitahu Amazon GameLift bahwa pemain telah terputus dari proses server. Sebagai tanggapan, Amazon GameLift mengubah slot pemain menjadi tersedia.

Sintaks

GenericOutcome RemovePlayerSession(String playerSessionId)

Parameter

playerSessionId

ID unik yang dikeluarkan oleh Amazon GameLift saat sesi pemain baru dibuat.

Nilai yang dikembalikan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

GenericOutcome removePlayerSessionOutcome = GameLiftServerAPI.RemovePlayerSession(playerSessionId);

DescribePlayerSessions()

Mengambil data sesi pemain yang mencakup pengaturan, metadata sesi, dan data pemain. Gunakan tindakan ini untuk mendapatkan informasi untuk satu sesi pemain, untuk semua sesi pemain dalam sesi game, atau untuk semua sesi pemain yang terkait dengan ID pemain tunggal.

Sintaks

DescribePlayerSessionsOutcome DescribePlayerSessions(DescribePlayerSessionsRequest describePlayerSessionsRequest)

Parameter

DescribePlayerSessionsRequest

DescribePlayerSessionsRequestObjek yang menggambarkan sesi pemain mana yang akan diambil.

Nilai yang dikembalikan

Jika berhasil, mengembalikan DescribePlayerSessionsOutcome objek yang berisi satu set objek sesi pemain yang sesuai dengan parameter permintaan.

Contoh

Contoh ini menggambarkan permintaan untuk semua sesi pemain yang secara aktif terhubung ke sesi game tertentu. Dengan menghilangkan NextTokendan menyetel nilai Batas ke 10, Amazon GameLift akan mengembalikan catatan sesi 10 pemain pertama yang cocok dengan permintaan.

// Set request parameters DescribePlayerSessionsRequest describePlayerSessionsRequest = new DescribePlayerSessionsRequest() { GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, //gets the ID for the current game session Limit = 10, PlayerSessionStatusFilter = PlayerSessionStatusMapper.GetNameForPlayerSessionStatus(PlayerSessionStatus.ACTIVE) }; // Call DescribePlayerSessions DescribePlayerSessionsOutcome describePlayerSessionsOutcome = GameLiftServerAPI.DescribePlayerSessions(describePlayerSessionsRequest);

StartMatchBackfill()

Mengirim permintaan untuk menemukan pemain baru untuk slot terbuka dalam sesi permainan yang dibuat dengan FlexMatch. Untuk informasi selengkapnya, lihat fitur FlexMatch isi ulang.

Tindakan ini asinkron. Jika pemain baru dicocokkan, Amazon GameLift mengirimkan data mak comblang yang diperbarui menggunakan fungsi panggilan balik. OnUpdateGameSession()

Proses server hanya dapat melakukan satu permintaan backfill match yang aktif dalam satu waktu. Untuk mengirim permintaan baru, panggil StopMatchBackfill() terlebih dahulu untuk membatalkan permintaan asli.

Sintaks

StartMatchBackfillOutcome StartMatchBackfill (StartMatchBackfillRequest startBackfillRequest);

Parameter

StartMatchBackfillRequest

Sebuah StartMatchBackfillRequest objek menyimpan informasi tentang permintaan isi ulang.

Nilai yang dikembalikan

Mengembalikan StartMatchBackfillOutcome objek dengan ID tiket isi ulang kecocokan, atau kegagalan dengan pesan kesalahan.

Contoh

// Build a backfill request StartMatchBackfillRequest startBackfillRequest = new StartMatchBackfillRequest() { TicketId = "1111aaaa-22bb-33cc-44dd-5555eeee66ff", //optional MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, // gets ID for current game session MatchmakerData matchmakerData = MatchmakerData.FromJson(gameSession.MatchmakerData), // gets matchmaker data for current players // get matchmakerData.Players // remove data for players who are no longer connected Players = ListOfPlayersRemainingInTheGame }; // Send backfill request StartMatchBackfillOutcome startBackfillOutcome = GameLiftServerAPI.StartMatchBackfill(startBackfillRequest); // Implement callback function for backfill void OnUpdateGameSession(GameSession myGameSession) { // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed }

StopMatchBackfill()

Membatalkan permintaan pengisian ulang pertandingan yang aktif. Untuk informasi selengkapnya, lihat fitur FlexMatch isi ulang.

Sintaks

GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);

Parameter

StopMatchBackfillRequest

StopMatchBackfillRequestObjek yang memberikan detail tentang tiket perjodohan yang Anda hentikan.

Nilai yang dikembalikan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

// Set backfill stop request parameters StopMatchBackfillRequest stopBackfillRequest = new StopMatchBackfillRequest(){ TicketId = "1111aaaa-22bb-33cc-44dd-5555eeee66ff", //optional, if not provided one is autogenerated MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result //gets the ID for the current game session }; GenericOutcome stopBackfillOutcome = GameLiftServerAPI.StopMatchBackfillRequest(stopBackfillRequest);

GetComputeCertificate()

Mengambil jalur ke TLS sertifikat yang digunakan untuk mengenkripsi koneksi jaringan antara server game dan klien game Anda. Anda dapat menggunakan jalur sertifikat saat mendaftarkan perangkat komputasi ke Amazon GameLift Anywhere armada. Untuk informasi lebih lanjut lihat, RegisterCompute.

Sintaks

GetComputeCertificateOutcome GetComputeCertificate();

Nilai yang ditampilkan

Mengembalikan GetComputeCertificateResponse objek yang berisi berikut:

  • CertificatePath: Jalur ke TLS sertifikat pada sumber daya komputasi Anda. Saat menggunakan armada GameLift terkelola Amazon, jalur ini berisi:

    • certificate.pem: Sertifikat pengguna akhir. Rantai sertifikat lengkap adalah kombinasi dari certificateChain.pem ditambahkan ke sertifikat ini.

    • certificateChain.pem: Rantai sertifikat yang berisi sertifikat root dan sertifikat perantara.

    • rootCertificate.pem: Sertifikat root.

    • privateKey.pem: Kunci pribadi untuk sertifikat pengguna akhir.

  • ComputeName: Nama sumber daya komputasi Anda.

Contoh

GetComputeCertificateOutcome getComputeCertificateOutcome = GameLiftServerAPI.GetComputeCertificate();

GetFleetRoleCredentials()

Mengambil kredensi IAM peran yang memberi wewenang kepada Amazon GameLift untuk berinteraksi dengan orang lain. Layanan AWS Untuk informasi selengkapnya, lihat Berkomunikasi dengan AWS sumber daya lain dari armada Anda.

Sintaks

GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(GetFleetRoleCredentialsRequest request);

Parameter

GetFleetRoleCredentialsRequest

Kredensi peran yang memperluas akses terbatas ke AWS sumber daya Anda ke server game.

Nilai yang dikembalikan

Mengembalikan objek GetFleetRoleCredentialsOutcome.

Contoh

// form the fleet credentials request GetFleetRoleCredentialsRequest getFleetRoleCredentialsRequest = new GetFleetRoleCredentialsRequest(){ RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction" }; GetFleetRoleCredentialsOutcome GetFleetRoleCredentialsOutcome credentials = GetFleetRoleCredentials(getFleetRoleCredentialsRequest);

Hancurkan ()

Membebaskan server GameLift game Amazon SDK dari memori. Sebagai praktik terbaik, hubungi metode ini setelah ProcessEnding() dan sebelum mengakhiri proses. Jika Anda menggunakan armada Anywhere dan Anda tidak menghentikan proses server setelah setiap sesi game, hubungi Destroy() dan kemudian InitSDK() inisialisasi ulang sebelum memberi tahu Amazon GameLift bahwa prosesnya siap untuk meng-host sesi game. ProcessReady()

Sintaks

GenericOutcome Destroy()

Nilai yang ditampilkan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

// Operations to end game sessions and the server process GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); // Shut down and destroy the instance of the GameLift Game Server SDK GenericOutcome destroyOutcome = GameLiftServerAPI.Destroy(); // Exit the process with success or failure if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); }