Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
SDK server C # 5.x untuk GameLift Server Amazon -- Tindakan
Gunakan referensi server SDK 5.x untuk mengintegrasikan game multipemain Anda untuk hosting denganAmazon GameLift Servers. Untuk panduan tentang proses integrasi, lihatTambahkan GameLift Server Amazon ke server game Anda dengan SDK server. Jika Anda menggunakan Amazon GameLift Servers plugin untuk Unity, lihat jugaGameLift Server Amazon plugin untuk Unity (server SDK 5.x).
SDK server C # 5.x untuk GameLift Server Amazon - Tipe data
Topik
GetSdkVersion()
Mengembalikan nomor versi SDK saat ini yang dibangun ke dalam proses server.
Sintaks
AwsStringOutcome GetSdkVersion();
Nilai yang ditampilkan
Jika berhasil, ini mengembalikan versi SDK saat ini sebagai objek AwsStringOutcome. String yang dikembalikan menyertakan nomor versi (contoh5.0.0). Jika tidak berhasil, ini mengembalikan pesan kesalahan.
Contoh
var getSdkVersionOutcome = GameLiftServerAPI.GetSdkVersion();
InitMetrics()
Menginisialisasi sistem metrik untuk mengumpulkan dan melaporkan data kinerja server. Untuk hasil terbaik, panggil metode ini sebelumnya InitSDK() untuk mengaktifkan pengumpulan metrik selama inisialisasi SDK.
Sintaks
MetricsManagerOutcome InitMetrics(); MetricsManagerOutcome InitMetrics(MetricsParameters metricsParameters);
Parameter
- MetricsParameters (opsional)
-
Parameter konfigurasi untuk pengumpulan metrik. Jika tidak disediakan, menggunakan nilai default yang dapat diganti oleh variabel lingkungan.
Nilai yang dikembalikan
Jika berhasil, mengembalikan MetricsManagerOutcome objek yang berisi MetricsManager instance. Jika tidak berhasil, ini mengembalikan pesan kesalahan.
Contoh
// Initialize with default parameters (uses environment variables if available) var outcome = GameLiftServerAPI.InitMetrics(); if (outcome.Success) { var metricsManager = outcome.Result; } else { Console.WriteLine("Failed to initialize metrics: " + outcome.Error.ErrorMessage); } // Initialize with custom parameters var metricsParams = new MetricsParameters("localhost", 8125, "crash-host", 9999, 1000, 1024); var customOutcome = GameLiftServerAPI.InitMetrics(metricsParams); if (customOutcome.Success) { var metricsManager = customOutcome.Result; }
InitSDK()
Menginisialisasi Amazon GameLift Servers SDK untuk armada EC2 yang dikelola. Panggil metode ini saat peluncuran, sebelum inisialisasi lain yang terkait Amazon GameLift Servers terjadi. Metode ini membaca parameter server dari lingkungan host untuk mengatur komunikasi antara server dan Amazon GameLift Servers layanan. Ini menggunakan token idempotensi, jadi Anda mencoba kembali panggilan ini dengan aman ketika gagal.
Sintaks
GenericOutcome InitSDK();
Nilai yang ditampilkan
Jika berhasil, mengembalikan InitSdkOutcome objek untuk menunjukkan bahwa proses server siap untuk dipanggilProcessReady().
Contoh
//Call InitSDK to establish a local connection with the GameLift agent to enable further communication. GenericOutcome initSDKOutcome = GameLiftServerAPI.InitSDK();
InitSDK()
Menginisialisasi Amazon GameLift Servers SDK untuk armada Anywhere. Panggil metode ini saat peluncuran, sebelum inisialisasi lain yang terkait Amazon GameLift Servers terjadi. Metode ini memerlukan parameter server eksplisit untuk mengatur komunikasi antara server dan Amazon GameLift Servers layanan. Ini menggunakan token idempotensi, jadi Anda mencoba kembali panggilan ini dengan aman ketika gagal.
Sintaks
GenericOutcome InitSDK(ServerParameters serverParameters);
Parameter
- ServerParameters
-
Untuk menginisialisasi server game pada armada Any Amazon GameLift Servers where, buat
ServerParametersobjek dengan informasi berikut:-
URL yang WebSocket digunakan untuk terhubung ke server game Anda.
-
ID proses yang digunakan untuk meng-host server game Anda.
-
ID komputasi yang menghosting proses server game Anda.
-
ID Amazon GameLift Servers armada yang berisi komputasi Any Amazon GameLift Servers where Anda.
-
Token otorisasi yang dihasilkan oleh Amazon GameLift Servers operasi.
-
Nilai yang dikembalikan
Jika berhasil, mengembalikan InitSdkOutcome objek untuk menunjukkan bahwa proses server siap untuk dipanggilProcessReady().
catatan
Jika panggilan ke InitSDK() gagal untuk build game yang diterapkan ke armada Anywhere, periksa ServerSdkVersion parameter yang digunakan saat membuat sumber daya build. Anda harus secara eksplisit menetapkan nilai ini ke versi SDK 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()
Memberi tahu Amazon GameLift Servers bahwa proses server siap untuk menyelenggarakan sesi game. Panggil metode ini setelah memanggil. InitSDK() Metode ini harus dipanggil hanya satu kali per proses.
Sintaks
GenericOutcome ProcessReady(ProcessParameters processParameters)
Parameter
- ProcessParameters
-
Sebuah
ProcessParametersobjek 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 implementasi fungsi metode dan delegasi.
// 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()
Member Amazon GameLift Servers itahu bahwa proses server dihentikan. Panggil metode ini setelah semua tugas pembersihan lainnya (termasuk mematikan sesi permainan aktif) dan sebelum menghentikan proses. Bergantung 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 memang ProcessEnding() gil dan Destroy() sebelum mengakhiri 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 Servers bahwa proses server telah mengaktifkan sesi permainan dan sekarang siap untuk 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
- pemain SessionPolicy
-
Nilai string yang menunjukkan apakah sesi permainan menerima pemain baru.
Nilai yang valid meliputi:
-
ACCEPT_ALL — Menerima semua sesi pemain baru.
-
DENY_ALL — Menolak 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 game yang dihosting oleh proses server aktif.
Untuk proses idle yang tidak diaktifkan dengan sesi game, panggilan mengembalikan aGameLiftError.
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 dariAmazon GameLift Servers. Amazon GameLift Serversmemang onProcessTerminate() gil karena alasan berikut:
-
Ketika proses server telah melaporkan kesehatan yang buruk atau belum meresponsAmazon GameLift Servers.
-
Saat mengakhiri instance selama peristiwa penurunan skala.
-
Ketika sebuah instance dihentikan karena gangguan instans spot.
Sintaks
AwsDateTimeOutcome GetTerminationTime()
Nilai yang ditampilkan
Jika berhasil, ini mengembalikan waktu penghentian sebagai objek AwsDateTimeOutcome. Nilainya adalah waktu penghentian, dinyatakan dalam tanda centang yang telah berlalu sejak0001 00:00:00. Misalnya, nilai 2020-09-13
12:26:40 -000Z waktu tanggal sama dengan tanda cent 637355968000000000 ang. Jika tidak ada waktu penghentian tersedia, pesan kesalahan ditampilkan.
Contoh
AwsDateTimeOutcome getTerminationTimeOutcome = GameLiftServerAPI.GetTerminationTime();
AcceptPlayerSession()
Memberi tahu Amazon GameLift Servers bahwa pemain dengan ID sesi pemain yang ditentukan telah terhubung ke proses server dan perlu validasi. Amazon GameLift Serversmemverifikasi bahwa ID sesi pemain valid. Setelah sesi pemain divalidasi, Amazon GameLift Servers ubah status slot pemain dari RESERVED menjadi AKTIF.
Sintaks
GenericOutcome AcceptPlayerSession(String playerSessionId)
Parameter
- pemain SessionId
-
ID unik yang dikeluarkan 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 ID sesi pemain yang tidak valid.
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()
Member Amazon GameLift Servers itahu bahwa pemain telah terputus dari proses server. Sebagai tanggapan, Amazon GameLift Servers ubah slot pemain menjadi tersedia.
Sintaks
GenericOutcome RemovePlayerSession(String playerSessionId)
Parameter
- pemain SessionId
-
ID unik yang dikeluarkan Amazon GameLift Servers 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
-
Ob DescribePlayerSessionsRequest jek yang menjelaskan sesi pemain mana yang akan diambil.
Nilai yang dikembalikan
Jika berhasil, mengembalikan DescribePlayerSessionsOutcome objek yang berisi sekumpulan 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 NextToken dan mengatur nilai Limit ke 10, Amazon GameLift Servers akan mengembalikan 10 catatan sesi 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 denganFlexMatch. Untuk informasi selengkapnya, lihat FlexMatch fitur isi ulang.
Tindakan ini asinkron. Jika pemain baru dicocokkan, Amazon GameLift Servers memberikan data matchmaker 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
-
Ob
StartMatchBackfillRequestjek menyimpan informasi tentang permintaan isi ulang.
Nilai yang dikembalikan
Mengembalikan StartMatchBackfillOutcome objek dengan ID tiket isi ulang pertandingan, 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 isi ulang kecocokan yang aktif. Untuk informasi selengkapnya, lihat FlexMatch fitur isi ulang.
Sintaks
GenericOutcome StopMatchBackfill (StopMatchBackfillRequest stopBackfillRequest);
Parameter
- StopMatchBackfillRequest
-
Ob
StopMatchBackfillRequestjek yang memberikan rincian 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 sertifikat TLS yang digunakan untuk mengenkripsi koneksi jaringan antara server game dan klien game Anda. Anda dapat menggunakan jalur sertifikat saat mendaftarkan perangkat komputasi ke armada Any Amazon GameLift Servers where. Untuk informasi selengkapnya, lihat RegisterCompute.
Sintaks
GetComputeCertificateOutcome GetComputeCertificate();
Nilai yang ditampilkan
Mengembalikan GetComputeCertificateResponse objek yang berisi berikut ini:
-
CertificatePath: Jalur ke sertifikat TLS pada sumber daya komputasi Anda. Saat menggunakan armada yang Amazon GameLift Servers dikelola, jalur ini berisi:
-
certificate.pem: Sertifikat pengguna akhir. RanTAI sertifikat lengkap adalah kombinasi yangcertificateChain.pemditambahkan 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 kredentif peran IAM yang mengizinkan Amazon GameLift Servers untuk berinteraksi dengan orang lain. Layanan AWS Untuk informasi selengkapnya, lihat Hubungkan Anda GameLift Server Amazon server game yang di-host ke yang lain AWS sumber daya.
Sintaks
GetFleetRoleCredentialsOutcome GetFleetRoleCredentials(GetFleetRoleCredentialsRequest request);
Parameter
- GetFleetRoleCredentialsRequest
-
Kredentif 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);
ListContainersNetworkInfo()
Mengambil informasi jaringan untuk semua kontainer yang berjalan pada instance yang sama, termasuk nama, ID, alamat IP lokal, dan jenis grup kontainer masing-masing. Gunakan informasi ini untuk mengaktifkan proses server game untuk menemukan dan berkomunikasi dengan wadah lain yang berjalan pada instans yang sama.
Tindakan ini hanya didukung pada armada kontainer. Ketika dipanggil dari jenis komputasi lainnya, ia mengembalikan UNSUPPORTED_COMPUTE_TYPE_EXCEPTION kesalahan. Amazon GameLift Serversmemperoleh informasi jaringan dari server penemuan yang berjalan secara lokal pada instance.
Sintaks
ListContainersNetworkInfoOutcome ListContainersNetworkInfo();
Nilai yang ditampilkan
Mengembalikan objek ListContainersNetworkInfoOutcome.
Contoh
ListContainersNetworkInfoOutcome listContainersNetworkInfoOutcome = GameLiftServerAPI.ListContainersNetworkInfo();
Hancurkan ()
Membebaskan SDK server Amazon GameLift Servers game dari memori. Sebagai praktik terbaik, panggil metode ini setelah ProcessEnding() dan sebelum mengakhiri proses. Jika Anda menggunakan armada Anywhere dan Anda tidak menghentikan proses server setelah setiap sesi permainan, hubungi Destroy() dan kemudian InitSDK() inisialisasi ulang sebelum memberi tahu Amazon GameLift Servers bahwa proses siap untuk menyelenggarakan sesi permainan. 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); }