Referensi SDK GameLift server Amazon (C #): Tindakan - Amazon GameLift

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

Referensi SDK GameLift server Amazon (C #): Tindakan

Anda dapat menggunakan referensi SDK server Amazon GameLift C# ini untuk membantu Anda mempersiapkan game multipemain untuk digunakan dengan Amazon. GameLift Untuk detail tentang proses integrasi, lihatTambahkan Amazon GameLift ke server game Anda.

AcceptPlayerSession()

Memberitahu GameLift layanan Amazon bahwa pemain dengan ID sesi pemain tertentu telah terhubung ke proses server dan memerlukan validasi. Amazon GameLift memverifikasi bahwa ID sesi pemain valid—yaitu, ID pemain telah memesan slot pemain dalam sesi permainan. Setelah divalidasi, Amazon GameLift mengubah status slot pemain dari RESERVED menjadi AKTIF.

Sintaks

GenericOutcome AcceptPlayerSession(String playerSessionId)

Parameter

playerSessionId

ID unik yang dikeluarkan oleh Amazon GameLift saat sesi pemain baru dibuat. ID sesi pemain ditentukan dalam PlayerSession objek, yang dikembalikan sebagai respons terhadap panggilan klien ke tindakan GameLiftAPI StartGameSessionPlacement,, CreateGameSessionDescribeGameSessionPlacement, atau DescribePlayerSessions.

Tipe: String

Wajib: Ya

Nilai kembali

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 ID sesi pemain yang tidak valid.

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

ActivateGameSession()

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

Sintaks

GenericOutcome ActivateGameSession()

Parameter

Tindakan ini tidak memiliki parameter.

Nilai kembali

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 var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); }

DescribePlayerSessions()

Mengambil data sesi pemain, termasuk 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

describePlayerSessionsPermintaan

Sebuah objek DescribePlayerSessionsRequest yang menjelaskan sesi pemain mana yang diambil.

Wajib: Ya

Nilai kembali

Jika berhasil, ini mengembalikan objek DescribePlayerSessionsOutcome yang berisi satu set objek sesi pemain yang sesuai dengan parameter permintaan. Objek sesi pemain memiliki struktur yang identik dengan tipe PlayerSessiondata AWS SDK Amazon GameLift API.

Contoh

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

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

GetGameSessionId()

Mengambil ID dari sesi game yang saat ini sedang di-host oleh proses server, jika proses server aktif.

Untuk proses idle yang belum diaktifkan dengan sesi permainan, panggilan kembali Success = True dan GameSessionId = "" (string kosong).

Sintaks

AwsStringOutcome GetGameSessionId()

Parameter

Tindakan ini tidak memiliki parameter.

Nilai kembali

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

Contoh

var getGameSessionIdOutcome = GameLiftServerAPI.GetGameSessionId();

GetInstanceCertificate()

Mengambil lokasi file sertifikat TLS yang dikodekan pem-yang dikaitkan dengan armada dan instansinya. AWS Certificate Managermenghasilkan sertifikat ini ketika Anda membuat armada baru dengan konfigurasi sertifikat diatur ke GENERATED. Gunakan sertifikat ini untuk membuat koneksi yang aman dengan client game dan untuk mengenkripsi komunikasi client/server.

Sintaks

GetInstanceCertificateOutcome GetInstanceCertificate();

Parameter

Tindakan ini tidak memiliki parameter.

Nilai kembali

Jika berhasil, mengembalikan GetInstanceCertificateOutcome objek yang berisi lokasi file sertifikat TLS armada dan rantai sertifikat, yang disimpan pada instance. File sertifikat root, yang diekstrak dari rantai sertifikat, juga disimpan pada instance. Jika tidak berhasil, ini mengembalikan pesan kesalahan.

Untuk informasi selengkapnya tentang data sertifikat dan rantai sertifikat, lihat Elemen GetCertificate Respons di Referensi AWS Certificate Manager API.

Contoh

var getInstanceCertificateOutcome = GameLiftServerAPI.GetInstanceCertificate();

GetSdkVersion()

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

Sintaks

AwsStringOutcome GetSdkVersion()

Parameter

Tindakan ini tidak memiliki parameter.

Nilai kembali

Jika berhasil, ini mengembalikan versi SDK saat ini sebagai objek AwsStringOutcome. String yang dikembalikan mencakup nomor versi saja (mis. "3.1.5"). Jika tidak berhasil, ini mengembalikan pesan kesalahan.

Contoh

var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();

GetTerminationTime()

Mengembalikan waktu yang merupakan jadwal proses server akan ditutup, jika waktu penghentian tersedia. Proses server mengambil tindakan ini setelah menerima onProcessTerminate() callback dari GameLift layanan Amazon. Amazon GameLift dapat memanggil onProcessTerminate() karena alasan berikut: (1) untuk kesehatan yang buruk (proses server telah melaporkan kesehatan port atau belum merespons AmazonGameLift, (2) saat mengakhiri instans selama peristiwa penurunan skala, atau (3) saat instans dihentikan karena gangguan instans.

Jika proses telah menerima callback onProcessTerminate(), nilai yang dikembalikan adalah perkiraan waktu penghentian. Jika proses belum menerima callback onProcessTerminate(), pesan kesalahan dikembalikan. Pelajari selengkapnya tentang mematikan proses server.

Sintaks

AwsDateTimeOutcome GetTerminationTime()

Parameter

Tindakan ini tidak memiliki parameter.

Nilai kembali

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

Contoh

var getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();

InitSDK()

Menginisialisasi Amazon GameLift SDK. Metode ini harus dipanggil pada peluncuran, sebelum inisialisasi GameLift terkait Amazon lainnya terjadi.

Sintaks

InitSDKOutcome InitSDK()

Parameter

Tindakan ini tidak memiliki parameter.

Nilai kembali

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

Contoh

var initSDKOutcome = GameLiftServerAPI.InitSDK();

ProcessEnding()

Memberitahu GameLift layanan Amazon bahwa proses server dimatikan. Metode ini harus dipanggil setelah semua tugas pembersihan lainnya, termasuk mematikan semua sesi game aktif. Metode ini harus keluar dengan kode keluar 0; sebuah kode non-nol menghasilkan pesan kejadian bahwa proses tidak keluar dengan bersih.

Setelah metode keluar dengan kode 0, Anda dapat mengakhiri proses dengan kode keluar yang sukses. Anda juga dapat keluar dari proses dengan kode kesalahan. Jika Anda keluar dengan kode kesalahan, kejadian armada akan menunjukkan proses yang dihentikan secara tidak normal (SERVER_PROCESS_TERMINATED_UNHEALTHY).

Sintaks

GenericOutcome ProcessEnding()

Parameter

Tindakan ini tidak memiliki parameter.

Nilai kembali

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

Contoh

var processEndingOutcome = GameLiftServerAPI.ProcessEnding(); if (processReadyOutcome.Success) Environment.Exit(0); // otherwise, exit with error code Environment.Exit(errorCode);

ProcessReady()

Memberitahu GameLift layanan Amazon bahwa proses server siap untuk menyelenggarakan sesi game. Panggil metode ini setelah berhasil meminta InitSDK() dan menyelesaikan tugas penyiapan yang diperlukan sebelum proses server dapat menjadi host sesi game. Metode ini harus dipanggil hanya satu kali per proses.

Sintaks

GenericOutcome ProcessReady(ProcessParameters processParameters)

Parameter

processParameters

Sebuah objek ProcessParameters yang mengomunikasikan informasi berikut tentang proses server:

  • Nama metode callback, diimplementasikan dalam kode server game, yang dipanggil GameLift layanan Amazon untuk berkomunikasi dengan proses server.

  • Nomor port yang didengarkan oleh proses server.

  • Jalur ke file khusus sesi game apa pun yang Anda GameLift ingin Amazon tangkap dan simpan.

Wajib: Ya

Nilai kembali

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

Contoh

Contoh ini menggambarkan panggilan ProcessReady() dan mendelegasi implementasi fungsi.

// Set parameters and call ProcessReady var processParams = new ProcessParameters( this.OnGameSession, this.OnProcessTerminate, this.OnHealthCheck, this.OnGameSessionUpdate, port, new LogParameters(new List<string>() // Examples of log and error files written by the game server { "C:\\game\\logs", "C:\\game\\error" }) ); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams); // Implement callback functions void OnGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // When ready to receive players var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession(); } void OnProcessTerminate() { // game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup var ProcessEndingOutcome = GameLiftServerAPI.ProcessEnding(); } bool OnHealthCheck() { bool isHealthy; // complete health evaluation within 60 seconds and set health return isHealthy; }

RemovePlayerSession()

Memberitahu GameLift layanan Amazon bahwa pemain dengan ID sesi pemain tertentu telah terputus dari proses server. Sebagai tanggapan, Amazon GameLift mengubah slot pemain menjadi tersedia, yang memungkinkannya ditugaskan ke pemain baru.

Sintaks

GenericOutcome RemovePlayerSession(String playerSessionId)

Parameter

playerSessionId

ID unik yang dikeluarkan oleh Amazon GameLift saat sesi pemain baru dibuat. ID sesi pemain ditentukan dalam PlayerSession objek, yang dikembalikan sebagai respons terhadap panggilan klien ke tindakan GameLiftAPI StartGameSessionPlacement,, CreateGameSessionDescribeGameSessionPlacement, atau DescribePlayerSessions.

Tipe: String

Wajib: Ya

Nilai kembali

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

Contoh

Aws::GameLift::GenericOutcome disconnectOutcome = Aws::GameLift::Server::RemovePlayerSession(playerSessionId);

StartMatchBackfill()

Mengirim permintaan untuk menemukan pemain baru untuk slot terbuka dalam sesi permainan yang dibuat denganFlexMatch. Lihat juga tindakan AWS SDK StartMatchBackfill(). Dengan tindakan ini, permintaan backfill match dapat dimulai dengan proses server game yang menjadi host sesi game. Pelajari lebih lanjut tentang fitur FlexMatch isi ulang.

Tindakan ini asinkron. Jika pemain baru berhasil dicocokkan, GameLift layanan Amazon mengirimkan data mak comblang yang diperbarui menggunakan fungsi callback. 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 objek StartMatchBackfillRequest yang mengkomunikasikan informasi berikut:

  • ID tiket untuk ditetapkan ke permintaan backfill. Informasi ini bersifat opsional; jika tidak ada ID yang disediakan, Amazon GameLift akan membuat satu secara otomatis.

  • Matchmaker untuk dikirimi permintaan. ARN konfigurasi penuh diperlukan. Nilai ini dapat diperoleh dari data matchmaker sesi game.

  • ID dari sesi game yang sedang di-backfill.

  • Data matchmaking yang tersedia untuk pemain sesi game saat ini.

Wajib: Ya

Nilai kembali

Mengembalikan StartMatchBackfillOutcome objek dengan ID tiket pengurukan pertandingan atau kegagalan dengan pesan kesalahan.

Contoh

// Build a backfill request var startBackfillRequest = new AWS.GameLift.Server.Model.StartMatchBackfillRequest() { TicketId = "a ticket ID", //optional MatchmakingConfigurationArn = "the matchmaker configuration ARN", GameSessionId = GameLiftServerAPI.GetGameSessionId().Result, // gets ID for current game session //get player data for all currently connected players 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 var 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 backfill match aktif yang dibuat dengan StartMatchBackfill(). Lihat juga tindakan AWS SDK StopMatchmaking(). Pelajari lebih lanjut tentang fitur FlexMatch isi ulang.

Sintaks

GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);

Parameter

StopMatchBackfillRequest

Sebuah objek StopMatchBackfillRequest yang mengidentifikasi tiket matchmaking untuk membatalkan:

  • ID tiket yang ditetapkan ke permintaan backfill yang dibatalkan

  • matchmaker yang dikirimi permintaan backfill

  • sesi game yang terkait dengan permintaan backfill

Wajib: Ya

Nilai kembali

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

Contoh

// Set backfill stop request parameters var stopBackfillRequest = new AWS.GameLift.Server.Model.StopMatchBackfillRequest() { TicketId = "a ticket ID", //optional, if not provided one is autogenerated MatchmakingConfigurationArn = "the matchmaker configuration ARN", //from the game session matchmaker data GameSessionId = GameLiftServerAPI.GetGameSessionId().Result //gets the ID for the current game session }; var stopBackfillOutcome = GameLiftServerAPI.StopMatchBackfillRequest(stopBackfillRequest);

TerminateGameSession()

Metode ini tidak lagi digunakan dengan versi 4.0.1. Sebagai gantinya, proses server harus menelepon ProcessEnding() setelah sesi permainan berakhir.

Memberitahu GameLift layanan Amazon bahwa proses server telah mengakhiri sesi game saat ini. Tindakan ini dipanggil ketika proses server akan tetap aktif dan siap untuk menjadi host sesi game baru. Ini harus dipanggil hanya setelah prosedur penghentian sesi permainan Anda selesai, karena sinyal ke Amazon GameLift bahwa proses server segera tersedia untuk menjadi tuan rumah sesi permainan baru.

Tindakan ini tidak dipanggil jika proses server akan dimatikan setelah sesi game berhenti. Sebagai gantinya, panggil ProcessEnding() untuk memberi tahu bahwa sesi game dan proses server akan berakhir.

Sintaks

GenericOutcome TerminateGameSession()

Parameter

Tindakan ini tidak memiliki parameter.

Nilai kembali

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

Contoh

Contoh ini menggambarkan proses server pada akhir sesi game.

// game-specific tasks required to gracefully shut down a game session, // such as notifying players, preserving game state data, and other cleanup var terminateGameSessionOutcome = GameLiftServerAPI.TerminateGameSession(); var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParams);

UpdatePlayerSessionCreationPolicy()

Memperbarui kemampuan sesi game saat ini untuk menerima sesi pemain baru. Sesi game dapat diatur untuk menerima atau menolak semua sesi pemain baru. (Lihat juga tindakan UpdateGameSession() di Amazon GameLift Service API Reference).

Sintaks

GenericOutcome UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy playerSessionPolicy)

Parameter

newPlayerSessionKebijakan

Nilai string yang menunjukkan apakah sesi game menerima pemain baru.

Jenis: Enum PlayerSessionCreationPolicy. Nilai yang valid meliputi:

  • ACCEPT_ALL — Menerima semua sesi pemain baru.

  • DENY_ALL — Menolak semua sesi pemain baru.

Wajib: Ya

Nilai kembali

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.

var updatePlayerSessionCreationPolicyOutcomex = GameLiftServerAPI.UpdatePlayerSessionCreationPolicy(PlayerSessionCreationPolicy.ACCEPT_ALL);