Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
SDK server C++ (Unreal) 5.x untuk GameLift Server Amazon -- Tindakan
Gunakan referensi Amazon GameLift Servers Unreal server SDK 5.x untuk membantu Anda mempersiapkan game multipemain Anda untuk digunakan bersama. Amazon GameLift Servers Untuk detail tentang proses integrasi, lihatTambahkan GameLift Server Amazon ke server game Anda dengan SDK server. Jika Anda menggunakan Amazon GameLift Servers plugin untuk Unreal, lihat jugaGameLift Server Amazon plugin untuk Unreal Engine.
catatan
Topik ini menjelaskan Amazon GameLift Servers C++ API yang dapat Anda gunakan saat membangun untuk Unreal Engine. Secara khusus, dokumentasi ini berlaku untuk kode yang Anda kompilasi dengan -DBUILD_FOR_UNREAL=1 opsi.
SDK server C++ (Unreal) 5.x untuk GameLift Server Amazon - Tipe data
Topik
GetSdkVersion()
Mengembalikan nomor versi SDK saat ini yang dibangun ke dalam proses server.
Sintaks
FGameLiftStringOutcome GetSdkVersion();
Nilai yang ditampilkan
Jika berhasil, ini mengembalikan versi SDK saat ini sebagai objek FGameLiftStringOutcome. Objek yang dikembalikan menyertakan nomor versi (contoh5.0.0). Jika tidak berhasil, ini mengembalikan pesan kesalahan.
Contoh
Aws::GameLift::AwsStringOutcome SdkVersionOutcome = Aws::GameLift::Server::GetSdkVersion();
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
FGameLiftGenericOutcome InitSDK()
Nilai yang ditampilkan
Jika berhasil, mengembalikan InitSdkOutcome objek yang menunjukkan bahwa proses server siap untuk dipanggilProcessReady().
Contoh
//Call InitSDK to establish a local connection with the Amazon GameLift Servers Agent to enable further communication. FGameLiftGenericOutcome initSdkOutcome = GameLiftSdkModule->InitSDK();
InitSDK()
Menginisialisasi Amazon GameLift Servers SDK untuk armada Anywhere atau armada kontainer terkelola. 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
FGameLiftGenericOutcome InitSDK(serverParameters)
Parameter
- FServerParameters
-
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 yang 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 FServerParameters serverParameters; serverParameters.m_authToken = "1111aaaa-22bb-33cc-44dd-5555eeee66ff"; serverParameters.m_fleetId = "arn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa"; serverParameters.m_hostId = "HardwareAnywhere"; serverParameters.m_processId = "PID1234"; serverParameters.m_webSocketUrl = "wss://us-west-1.api.amazongamelift.com"; //Call InitSDK to establish a local connection with the Amazon GameLift Servers Agent to enable further communication. FGameLiftGenericOutcome initSdkOutcome = GameLiftSdkModule->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(const Aws::GameLift::Server::ProcessParameters
&processParameters);
Parameter
- processParameters
-
Ob FProcessParameters jek yang mengkomunikasikan informasi berikut tentang proses server:
-
Nama metode callback yang diimplementasikan dalam kode server game yang dipanggil Amazon GameLift Servers layanan untuk berkomunikasi dengan proses server.
-
Nomor port yang didengarkan oleh proses server.
-
Jalur ke file khusus sesi game apa pun yang Amazon GameLift Servers ingin Anda tangkap dan simpan.
-
Nilai yang dikembalikan
Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.
Contoh
Contoh ini menggambarkan panggilan ProcessReady() dan mendelegasi implementasi fungsi.
//Calling ProcessReady tells Amazon GameLift Servers this game server is ready to receive incoming game sessions! UE_LOG(GameServerLog, Log, TEXT("Calling Process Ready")); FGameLiftGenericOutcome processReadyOutcome = GameLiftSdkModule->ProcessReady(*params);
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 hasilnyaProcessEnding(), 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
FGameLiftGenericOutcome ProcessEnding()
Nilai yang ditampilkan
Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.
Contoh
//OnProcessTerminate callback. Amazon GameLift Servers will invoke this callback before shutting down an instance hosting this game server. //It gives this game server a chance to save its state, communicate with services, etc., before being shut down. //In this case, we simply tell Amazon GameLift Servers we are indeed going to shutdown. params->OnTerminate.BindLambda([=]() { UE_LOG(GameServerLog, Log, TEXT("Game Server Process is terminating")); GameLiftSdkModule->ProcessEnding(); });
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
FGameLiftGenericOutcome ActivateGameSession()
Nilai yang ditampilkan
Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.
Contoh
Contoh ini menunjukkan di ActivateGameSession() panggil sebagai bagian dari fungsi onStartGameSession() delegasi.
//When a game session is created, Amazon GameLift Servers sends an activation request to the game server and passes along the game session object containing game properties and other settings. //Here is where a game server should take action based on the game session object. //Once the game server is ready to receive incoming player connections, it should invoke GameLiftServerAPI.ActivateGameSession() auto onGameSession = [=](Aws::GameLift::Server::Model::GameSession gameSession) { FString gameSessionId = FString(gameSession.GetGameSessionId()); UE_LOG(GameServerLog, Log, TEXT("GameSession Initializing: %s"), *gameSessionId); GameLiftSdkModule->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
FGameLiftGenericOutcome UpdatePlayerSessionCreationPolicy(EPlayerSessionCreationPolicy policy)
Parameter
- pemain CreationSessionPolicy
-
Nilai string yang menunjukkan apakah sesi game 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.
FGameLiftGenericOutcome outcome = GameLiftSdkModule->UpdatePlayerSessionCreationPolicy(Aws::GameLift::Model::EPlayerSessionCreationPolicy::ACCEPT_ALL);
GetGameSessionId()
Mengambil ID sesi game yang dihosting oleh proses server aktif.
Untuk proses idle yang tidak diaktifkan dengan sesi game, panggilan mengembalikan aFGameLiftError.
Sintaks
FGameLiftStringOutcome GetGameSessionId()
Parameter
Tindakan ini tidak memiliki parameter.
Nilai yang dikembalikan
Jika berhasil, ini mengembalikan ID sesi game sebagai objek FGameLiftStringOutcome. Jika tidak berhasil, ini mengembalikan pesan kesalahan.
Untuk proses idle yang tidak diaktifkan dengan sesi game, panggilan mengembalikan Success = True dan GameSessionId ="".
Contoh
//When a game session is created, Amazon GameLift Servers sends an activation request to the game server and passes along the game session object containing game properties and other settings. //Here is where a game server should take action based on the game session object. //Once the game server is ready to receive incoming player connections, it should invoke GameLiftServerAPI.ActivateGameSession() auto onGameSession = [=](Aws::GameLift::Server::Model::GameSession gameSession) { FString gameSessionId = FString(gameSession.GetGameSessionId()); UE_LOG(GameServerLog, Log, TEXT("GameSession Initializing: %s"), *gameSessionId); GameLiftSdkModule->ActivateGameSession(); };
GetTerminationTime()
Mengembalikan waktu yang merupakan jadwal proses server akan ditutup, jika waktu penghentian tersedia. Proses server mengambil tindakan 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.
Jika proses belum menerima
ProcessParameters.OnProcessTerminate() panggilan balik, pesan kesalahan dikembalikan. Untuk informasi selengkapnya tentang mematikan proses server, lihatMenanggapi notifikasi shutdown proses server.
Contoh
AwsDateTimeOutcome TermTimeOutcome = GameLiftSdkModule->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
FGameLiftGenericOutcome AcceptPlayerSession(const FString& 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
Contoh ini menangani permintaan koneksi yang mencakup memvalidasi dan menolak ID sesi pemain yang tidak valid.
bool GameLiftManager::AcceptPlayerSession(const FString& playerSessionId, const FString& playerId) { #if WITH_GAMELIFT UE_LOG(GameServerLog, Log, TEXT("Accepting GameLift PlayerSession: %s . PlayerId: %s"), *playerSessionId, *playerId); FString gsId = GetCurrentGameSessionId(); if (gsId.IsEmpty()) { UE_LOG(GameServerLog, Log, TEXT("No GameLift GameSessionId. Returning early!")); return false; } if (!GameLiftSdkModule->AcceptPlayerSession(playerSessionId).IsSuccess()) { UE_LOG(GameServerLog, Log, TEXT("PlayerSession not Accepted.")); return false; } // Add PlayerSession from internal data structures keeping track of connected players connectedPlayerSessionIds.Add(playerSessionId); idToPlayerSessionMap.Add(playerSessionId, PlayerSession{ playerId, playerSessionId }); return true; #else return false; #endif }
RemovePlayerSession()
Member Amazon GameLift Servers itahu bahwa pemain telah terputus dari proses server. Sebagai tanggapan, Amazon GameLift Servers ubah slot pemain menjadi tersedia.
Sintaks
FGameLiftGenericOutcome RemovePlayerSession(const FString& playerSessionId)
Parameter
playerSessionId-
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
bool GameLiftManager::RemovePlayerSession(const FString& playerSessionId) { #if WITH_GAMELIFT UE_LOG(GameServerLog, Log, TEXT("Removing GameLift PlayerSession: %s"), *playerSessionId); if (!GameLiftSdkModule->RemovePlayerSession(playerSessionId).IsSuccess()) { UE_LOG(GameServerLog, Log, TEXT("PlayerSession Removal Failed")); return false; } // Remove PlayerSession from internal data structures that are keeping track of connected players connectedPlayerSessionIds.Remove(playerSessionId); idToPlayerSessionMap.Remove(playerSessionId); // end the session if there are no more players connected if (connectedPlayerSessionIds.Num() == 0) { EndSession(); } return true; #else return false; #endif }
DescribePlayerSessions()
Mengambil data sesi pemain yang mencakup pengaturan, metadata sesi, dan data pemain. Gunakan metode ini untuk mendapatkan informasi tentang hal berikut:
-
Sesi pemain tunggal
-
Semua sesi pemain dalam sesi permainan
-
Semua sesi pemain yang terkait dengan ID pemain tunggal
Sintaks
FGameLiftDescribePlayerSessionsOutcome DescribePlayerSessions(const FGameLiftDescribePlayerSessionsRequest &describePlayerSessionsRequest)
Parameter
- FGameLiftDescribePlayerSessionsRequest
-
Ob FGameLiftDescribePlayerSessionsRequest jek yang menjelaskan sesi pemain mana yang akan diambil.
Nilai yang dikembalikan
Jika berhasil, ini mengembalikan objek FGameLiftDescribePlayerSessionsOutcome yang berisi satu set objek sesi pemain yang sesuai dengan parameter permintaan.
Contoh
Contoh ini meminta semua sesi pemain yang terhubung secara aktif ke sesi permainan tertentu. Dengan menghilangkan NextToken dan mengatur nilai Limit ke 10, Amazon GameLift Servers mengembalikan 10 catatan sesi pemain pertama yang cocok dengan permintaan.
void GameLiftManager::DescribePlayerSessions() { #if WITH_GAMELIFT FString localPlayerSessions; for (auto& psId : connectedPlayerSessionIds) { PlayerSession ps = idToPlayerSessionMap[psId]; localPlayerSessions += FString::Printf(TEXT("%s : %s ; "), *(ps.playerSessionId), *(ps.playerId)); } UE_LOG(GameServerLog, Log, TEXT("LocalPlayerSessions: %s"), *localPlayerSessions); UE_LOG(GameServerLog, Log, TEXT("Describing PlayerSessions in this GameSession")); FGameLiftDescribePlayerSessionsRequest request; request.m_gameSessionId = GetCurrentGameSessionId(); FGameLiftDescribePlayerSessionsOutcome outcome = GameLiftSdkModule->DescribePlayerSessions(request); LogDescribePlayerSessionsOutcome(outcome); #endif }
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
FGameLiftStringOutcome StartMatchBackfill (FStartMatchBackfillRequest &startBackfillRequest);
Parameter
- FStartMatchBackfillRequest
-
Ob StartMatchBackfillRequest jek yang mengkomunikasikan informasi berikut:
-
ID tiket untuk ditetapkan ke permintaan backfill. Informasi ini opsional; jika tidak ada ID yang diberikan, Amazon GameLift Servers akan menghasilkan satu.
-
Matchmaker untuk dikirimi permintaan. ARN konfigurasi penuh diperlukan. Nilai ini ada dalam data matchmaker sesi game.
-
ID sesi permainan untuk diisi ulang.
-
Data perjodohan yang tersedia untuk pemain sesi game saat ini.
-
Nilai yang dikembalikan
Mengembalikan StartMatchBackfillOutcome objek dengan ID tiket isi ulang pertandingan, atau kegagalan dengan pesan kesalahan.
Contoh
FGameLiftStringOutcome FGameLiftServerSDKModule::StartMatchBackfill(const FStartMatchBackfillRequest& request) { #if WITH_GAMELIFT Aws::GameLift::Server::Model::StartMatchBackfillRequest sdkRequest; sdkRequest.SetTicketId(TCHAR_TO_UTF8(*request.m_ticketId)); sdkRequest.SetGameSessionArn(TCHAR_TO_UTF8(*request.m_gameSessionArn)); sdkRequest.SetMatchmakingConfigurationArn(TCHAR_TO_UTF8(*request.m_matchmakingConfigurationArn)); for (auto player : request.m_players) { Aws::GameLift::Server::Model::Player sdkPlayer; sdkPlayer.SetPlayerId(TCHAR_TO_UTF8(*player.m_playerId)); sdkPlayer.SetTeam(TCHAR_TO_UTF8(*player.m_team)); for (auto entry : player.m_latencyInMs) { sdkPlayer.WithLatencyMs(TCHAR_TO_UTF8(*entry.Key), entry.Value); } std::map<std::string, Aws::GameLift::Server::Model::AttributeValue> sdkAttributeMap; for (auto attributeEntry : player.m_playerAttributes) { FAttributeValue value = attributeEntry.Value; Aws::GameLift::Server::Model::AttributeValue attribute; switch (value.m_type) { case FAttributeType::STRING: attribute = Aws::GameLift::Server::Model::AttributeValue(TCHAR_TO_UTF8(*value.m_S)); break; case FAttributeType::DOUBLE: attribute = Aws::GameLift::Server::Model::AttributeValue(value.m_N); break; case FAttributeType::STRING_LIST: attribute = Aws::GameLift::Server::Model::AttributeValue::ConstructStringList(); for (auto sl : value.m_SL) { attribute.AddString(TCHAR_TO_UTF8(*sl)); }; break; case FAttributeType::STRING_DOUBLE_MAP: attribute = Aws::GameLift::Server::Model::AttributeValue::ConstructStringDoubleMap(); for (auto sdm : value.m_SDM) { attribute.AddStringAndDouble(TCHAR_TO_UTF8(*sdm.Key), sdm.Value); }; break; } sdkPlayer.WithPlayerAttribute((TCHAR_TO_UTF8(*attributeEntry.Key)), attribute); } sdkRequest.AddPlayer(sdkPlayer); } auto outcome = Aws::GameLift::Server::StartMatchBackfill(sdkRequest); if (outcome.IsSuccess()) { return FGameLiftStringOutcome(outcome.GetResult().GetTicketId()); } else { return FGameLiftStringOutcome(FGameLiftError(outcome.GetError())); } #else return FGameLiftStringOutcome(""); #endif }
StopMatchBackfill()
Membatalkan permintaan isi ulang kecocokan yang aktif. Untuk informasi selengkapnya, lihat FlexMatch fitur isi ulang.
Sintaks
FGameLiftGenericOutcome StopMatchBackfill (FStopMatchBackfillRequest &stopBackfillRequest);
Parameter
- FStopMatchBackfillRequest
-
Ob StopMatchBackfillRequest jek yang mengidentifikasi tiket perjodohan untuk dibatalkan:
-
ID tiket yang ditetapkan untuk permintaan isi ulang.
-
Matchmaker tempat permintaan isi ulang dikirim.
-
Sesi permainan yang terkait dengan permintaan isi ulang.
-
Nilai yang dikembalikan
Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.
Contoh
FGameLiftGenericOutcome FGameLiftServerSDKModule::StopMatchBackfill(const FStopMatchBackfillRequest& request) { #if WITH_GAMELIFT Aws::GameLift::Server::Model::StopMatchBackfillRequest sdkRequest; sdkRequest.SetTicketId(TCHAR_TO_UTF8(*request.m_ticketId)); sdkRequest.SetGameSessionArn(TCHAR_TO_UTF8(*request.m_gameSessionArn)); sdkRequest.SetMatchmakingConfigurationArn(TCHAR_TO_UTF8(*request.m_matchmakingConfigurationArn)); auto outcome = Aws::GameLift::Server::StopMatchBackfill(sdkRequest); if (outcome.IsSuccess()) { return FGameLiftGenericOutcome(nullptr); } else { return FGameLiftGenericOutcome(FGameLiftError(outcome.GetError())); } #else return FGameLiftGenericOutcome(nullptr); #endif }
GetComputeCertificate()
Mengambil jalur ke sertifikat TLS yang digunakan untuk mengenkripsi koneksi jaringan antara sumber daya komputasi Any Amazon GameLift Servers where Anda dan. Amazon GameLift Servers Anda dapat menggunakan jalur sertifikat saat mendaftarkan perangkat komputasi ke armada Any Amazon GameLift Servers where. Untuk informasi selengkapnya, lihat RegisterCompute.
Sintaks
FGameLiftGetComputeCertificateOutcome FGameLiftServerSDKModule::GetComputeCertificate()
Nilai yang ditampilkan
Mengembalikan GetComputeCertificateResponse objek yang berisi berikut ini:
-
CertificatePath: Jalur ke sertifikat TLS pada sumber daya komputasi Anda.
-
HostName: Nama host sumber daya komputasi Anda.
Contoh
FGameLiftGetComputeCertificateOutcome FGameLiftServerSDKModule::GetComputeCertificate() { #if WITH_GAMELIFT auto outcome = Aws::GameLift::Server::GetComputeCertificate(); if (outcome.IsSuccess()) { auto& outres = outcome.GetResult(); FGameLiftGetComputeCertificateResult result; result.m_certificate_path = UTF8_TO_TCHAR(outres.GetCertificatePath()); result.m_computeName = UTF8_TO_TCHAR(outres.GetComputeName()); return FGameLiftGetComputeCertificateOutcome(result); } else { return FGameLiftGetComputeCertificateOutcome(FGameLiftError(outcome.GetError())); } #else return FGameLiftGetComputeCertificateOutcome(FGameLiftGetComputeCertificateResult()); #endif }
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
FGameLiftGetFleetRoleCredentialsOutcome FGameLiftServerSDKModule::GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest &request)
Parameter
FGameLiftGetFleetRoleCredentialsRequest
Nilai yang dikembalikan
Mengembalikan objek FGameLiftGetFleetRoleCredentialsOutcome.
Contoh
FGameLiftGetFleetRoleCredentialsOutcome FGameLiftServerSDKModule::GetFleetRoleCredentials(const FGameLiftGetFleetRoleCredentialsRequest &request) { #if WITH_GAMELIFT Aws::GameLift::Server::Model::GetFleetRoleCredentialsRequest sdkRequest; sdkRequest.SetRoleArn(TCHAR_TO_UTF8(*request.m_roleArn)); sdkRequest.SetRoleSessionName(TCHAR_TO_UTF8(*request.m_roleSessionName)); auto outcome = Aws::GameLift::Server::GetFleetRoleCredentials(sdkRequest); if (outcome.IsSuccess()) { auto& outres = outcome.GetResult(); FGameLiftGetFleetRoleCredentialsResult result; result.m_assumedUserRoleArn = UTF8_TO_TCHAR(outres.GetAssumedUserRoleArn()); result.m_assumedRoleId = UTF8_TO_TCHAR(outres.GetAssumedRoleId()); result.m_accessKeyId = UTF8_TO_TCHAR(outres.GetAccessKeyId()); result.m_secretAccessKey = UTF8_TO_TCHAR(outres.GetSecretAccessKey()); result.m_sessionToken = UTF8_TO_TCHAR(outres.GetSessionToken()); result.m_expiration = FDateTime::FromUnixTimestamp(outres.GetExpiration()); return FGameLiftGetFleetRoleCredentialsOutcome(result); } else { return FGameLiftGetFleetRoleCredentialsOutcome(FGameLiftError(outcome.GetError())); } #else return FGameLiftGetFleetRoleCredentialsOutcome(FGameLiftGetFleetRoleCredentialsResult()); #endif }
ListContainersNetworkInfo()
Mengambil informasi jaringan untuk semua kontainer yang berjalan pada instans 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
FGameLiftListContainersNetworkInfoOutcome FGameLiftServerSDKModule::ListContainersNetworkInfo()
Nilai yang ditampilkan
Mengembalikan objek FGameLiftListContainersNetworkInfoOutcome.
Contoh
FGameLiftListContainersNetworkInfoOutcome FGameLiftServerSDKModule::ListContainersNetworkInfo() { #if WITH_GAMELIFT auto outcome = Aws::GameLift::Server::ListContainersNetworkInfo(); if (outcome.IsSuccess()) { auto& outres = outcome.GetResult(); FGameLiftListContainersNetworkInfoResult result; const int count = outres.GetContainersNetworkInfoCount(); if (count > 0) { const auto* containersNetworkInfo = outres.GetContainersNetworkInfo(); result.m_containersNetworkInfo.Reserve(count); for (int i = 0; i < count; ++i) { const auto& info = containersNetworkInfo[i]; FContainerNetworkInfo& dst = result.m_containersNetworkInfo.AddDefaulted_GetRef(); dst.m_containerName = UTF8_TO_TCHAR(info.GetContainerName()); dst.m_containerId = UTF8_TO_TCHAR(info.GetContainerId()); dst.m_ipAddress = UTF8_TO_TCHAR(info.GetIpAddress()); switch (info.GetContainerGroupType()) { case Aws::GameLift::Server::Model::ContainerGroupType::GAME_SERVER: dst.m_containerGroupType = EContainerGroupType::GAME_SERVER; break; case Aws::GameLift::Server::Model::ContainerGroupType::PER_INSTANCE: dst.m_containerGroupType = EContainerGroupType::PER_INSTANCE; break; default: dst.m_containerGroupType = EContainerGroupType::GAME_SERVER; break; } } } return FGameLiftListContainersNetworkInfoOutcome(result); } else { return FGameLiftListContainersNetworkInfoOutcome(FGameLiftError(outcome.GetError())); } #else return FGameLiftListContainersNetworkInfoOutcome(FGameLiftListContainersNetworkInfoResult()); #endif }
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
FGameLiftGenericOutcome Destroy();
Parameter
Tidak ada parameter.
Nilai yang dikembalikan
Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.
Contoh
// First call ProcessEnding() FGameLiftGenericOutcome processEndingOutcome = GameLiftSdkModule->ProcessEnding(); // Then call Destroy() to free the SDK from memory FGameLiftGenericOutcome destroyOutcome = GameLiftSdkModule->Destroy(); // Exit the process with success or failure if (processEndingOutcome.IsSuccess() && destroyOutcome.IsSuccess()) { UE_LOG(GameServerLog, Log, TEXT("Server process ending successfully")); } else { if (!processEndingOutcome.IsSuccess()) { const FGameLiftError& error = processEndingOutcome.GetError(); UE_LOG(GameServerLog, Error, TEXT("ProcessEnding() failed. Error: %s"), error.m_errorMessage.IsEmpty() ? TEXT("Unknown error") : *error.m_errorMessage); } if (!destroyOutcome.IsSuccess()) { const FGameLiftError& error = destroyOutcome.GetError(); UE_LOG(GameServerLog, Error, TEXT("Destroy() failed. Error: %s"), error.m_errorMessage.IsEmpty() ? TEXT("Unknown error") : *error.m_errorMessage); } }