AWS GameLift
Complete GameLift service API and provider-neutral hosting and FlexMatch
AWS GameLift
AWSIKGameLift wraps all 120 operations in the pinned AWS SDK for C++ 1.11.878. Every operation has a C++/Blueprint async action, a typed request and result, generated nested model types, validation, cancellation-safe lifetime handling, and normalized errors. The Win64 service library is packaged independently from AWS Core and the GameLift Servers SDK.
The raw API and unified providers are separate surfaces:
- Use Blueprint nodes under
AWS Integration Kit|GameLift|...for provider-specific GameLift, FleetIQ, FlexMatch, fleet, container, Anywhere, build, alias, and session workflows. - Use
IUCIKHostingProviderandIIMIK_MatchmakingProviderwhen gameplay should switch between GameLift, Edgegap, or another provider without rewiring.
SDK coverage
Source/AWSIKGameLift/GameLiftCoverage.json is the generated coverage manifest. Scripts/awsik-sdk/validate_gamelift_coverage.py compares it with both GameLiftClient.h and the pinned AWS service model. The check fails if an SDK upgrade adds an operation without a wrapper or if generated declarations drift.
All 27 token-paginated operations expose bRetrieveAllPages. Leave it disabled to receive one page and its NextToken, or enable it to aggregate every page. Repeated tokens fail instead of looping forever.
AWS optional fields have adjacent bSet... properties. A value is sent only when its presence flag is enabled, preserving the difference between omitted, empty, zero, and false. The 526-value EC2InstanceType model is represented as a string because Unreal Blueprint enums cannot losslessly contain that many entries.
Configuration and credentials
Common region, endpoint, proxy, retry, timeout, logging, and credential-chain settings remain in AWS Integration Kit. AWS GameLift settings contain only GameLift provider defaults:
- fleet ID, alias ID, queue name, location, and maximum players for hosting;
- FlexMatch configuration, default team, and optional matchmaking region override;
- registration switches for the hosting and FlexMatch providers, read once at startup so they need an editor restart.
Do not ship long-lived IAM access keys in a game client. Fleet administration, builds, queues, aliases, scaling, container management, and most control-plane operations are classified trusted-backend in the coverage manifest. The small player-facing set is classified separately, but still requires a correctly scoped temporary credential source such as Cognito. Dedicated servers should use workload credentials or an IAM role.
Unified hosting
The GameLift hosting provider supports direct CreateGameSession and queue-backed StartGameSessionPlacement through one interface. A configured queue takes precedence; omit it to use exactly one fleet or alias. The provider supports polling, termination, session search, region enumeration, UDP latency beacons, player reservations, and PlayerSessionId join tokens.
Provider-specific overrides use namespaced FUCIK_ServerRequest::Metadata keys:
| Key | Meaning |
|---|---|
aws.gamelift.fleet_id | Fleet ID or ARN for direct placement |
aws.gamelift.alias_id | Alias ID or ARN for direct placement |
aws.gamelift.queue_name | Game session queue name or ARN |
aws.gamelift.location | GameLift location |
aws.gamelift.session_name | Game session name |
aws.gamelift.session_data | Opaque game session data |
Queue placement handles can be passed directly to the unified Request Player Slots node; after fulfillment the adapter resolves the produced game session and creates player sessions. Each returned FUCIK_ConnectInfo::Token is the corresponding PlayerSessionId.
FlexMatch
The GameLift matchmaking provider implements ticket creation, describe, cancellation, acceptance, start backfill, and cancel backfill. MIK attributes and latency hints map to GameLift player attributes and per-region latency maps.
Set Matchmaking Region Override when FlexMatch is unavailable in the AWS Core region. AWSIK then keeps hosting calls on the core-region client and routes every raw and unified FlexMatch call through a second regional client. A FlexMatch configuration in that region can target a game session queue ARN from the hosting region.
Managed FlexMatch allocation returns bServerProvidedByService = true with portable connection information. Standalone FlexMatch returns bServerProvidedByService = false and a server request hint, allowing MIK to select GameLift hosting, Edgegap, or another host independently. Managed matches preserve every per-player session token under aws.gamelift.player_session.<player-id> metadata while exposing the first token through the portable connection field.
Use aws.gamelift.matchmaking_configuration and aws.gamelift.game_session_arn metadata to override the configured FlexMatch values.
GameLift Servers SDK
AWSIKGameLiftServers packages Amazon GameLift Servers C++ Server SDK 5.6.0 separately from the GameLift control-plane SDK. It is available only to Editor and dedicated Server targets on Win64, Linux x64, and Linux ARM64. Player-client and ordinary Game targets cannot link or stage either server module.
Get UAWSIKGameLiftServersSubsystem from the game instance. Its Blueprint functions under AWS Integration Kit|GameLift Servers|... cover all 19 public SDK actions, including both managed-fleet and Anywhere initialization, metrics, custom logging, process readiness, activation, player-session acceptance/removal, session queries, FlexMatch backfill, compute certificates, fleet-role credentials, container network information, ending, and destruction. Source/AWSIKGameLiftServers/GameLiftServersCoverage.json and Scripts/awsik-sdk/validate_gamelift_servers_coverage.py fail when the pinned SDK and wrapper surface drift.
The normal managed-fleet lifecycle is:
- Optionally call
InitMetricsandInitCustomLogger. - Call
InitSdkfor managed EC2, orInitSdkForAnywherewith a short-lived compute authentication token. The AWS access-key initialization overload remains available to trusted C++ server bootstrap code for complete SDK coverage, but access keys are deliberately absent from Blueprint pins. - Bind
OnStartGameSession,OnUpdateGameSession, andOnProcessTerminatebefore callingProcessReady. - Load the assigned map and session configuration in
OnStartGameSession, then callActivateGameSessionwhen gameplay can accept players. - Call
AcceptPlayerSessionafter validating a connecting player'sPlayerSessionId; callRemovePlayerSessionwhen that player leaves. - On termination, stop accepting players, persist required state, call
ProcessEnding, and exit. Unreal shutdown invokes the idempotentProcessEnding/Destroyfallback if gameplay did not.
SDK callbacks may originate on SDK threads. The integration copies their data and dispatches every Blueprint event on the game thread. Health checks never touch a UObject: SetHealthy updates the atomic value returned synchronously to the SDK. ProcessEnding and Destroy are guarded so repeated Blueprint, subsystem, and module shutdown paths still execute each native teardown action at most once.
OnSdkLog receives raw SDK text and is opt-in through InitCustomLogger; do not forward it to public telemetry without applying your own data policy. Fleet-role credential results are intentionally lossless so trusted server code can use them, but must never be printed or replicated.
The server SDK participates in the same GameLift deployment selected through IUCIKHostingProvider and the same FlexMatch workflow selected through IIMIK_MatchmakingProvider. It does not register another hosting or matchmaking provider: the control-plane adapter allocates the server, while this server-only module implements the process running inside that allocation.
Platform boundary
The GameLift control-plane service module currently packages Win64. Its other native service packages remain separate deliverables. GameLift Servers is independently pinned and source-packaged for Win64, Linux x64, and Linux ARM64 because its release cadence, lifecycle, and target boundary differ from the service SDK.