Test your integration using Amazon GameLift Anywhere fleets
You can use an Amazon GameLift Anywhere fleet to iteratively build and test your game integration
with Amazon GameLift. Set up your own hardware as an Anywhere fleet with a connection to the
Amazon GameLift service, then install and run your game server on it. Use a test app to run
scenarios such as starting/stopping game sessions, tracking player connections, and handling
matchmaking backfills. With an Anywhere fleet, you can update your game server build as
needed and have full visibility into hosting activity.
You can Amazon GameLift Anywhere fleets with games integrated with Amazon GameLift Server SDK version 5 or
greater.
Initial development
You've developed your game and are integrating it with the Amazon GameLift server SDK. To test
your integration, you could upload each new iteration of your game server build to Amazon GameLift
and create a fleet. Alternatively, using an Anywhere fleet with your development
laptop gives you a more efficient way to do iterative development and testing.
Use the following procedures to create an Anywhere fleet and start a game session on
your laptop using the Amazon GameLift console or the AWS Command Line Interface (AWS CLI).
- Console
-
-
Open the Amazon GameLift
console.
-
In the navigation pane, under Hosting, choose
Locations.
-
Choose Create location.
-
In the Create location dialog box, do the
following:
-
Enter a Location name. This labels
the location of your compute resources that Amazon GameLift uses to
run your games in Anywhere fleets. Custom location names
must start with custom-.
-
Choose Create.
-
To create an Anywhere fleet, do the following:
-
In the navigation pane, under
Hosting, choose
Fleets.
-
On the Fleets page, choose
Create fleet.
-
On the Choose compute type step,
choose Anywhere, and then choose
Next.
-
On the Define fleet details step,
define your new fleet. For more information, see Create a new Amazon GameLift fleet.
-
On the Select locations step, select
the custom location that you created.
-
Complete the remaining fleet creation steps to create your
Anywhere fleet.
-
Register your laptop as a compute resource in the fleet that you
created. Use the register-compute
command (or the
RegisterCompute
API operation).
Include the fleet-id
created in the previous step and
add a compute-name
and your laptop's
ip-address
.
aws gamelift register-compute \
--compute-name DevLaptop
\
--fleet-id fleet-1234
\
--ip-address 10.1.2.3
\
--location custom-location-1
Example output:
Compute {
FleetId = fleet-1234,
ComputeName = DevLaptop,
Status = ACTIVE,
IpAddress = 10.1.2.3,
GameLiftServiceSdkEndpoint = wss://12345678.execute-api.amazonaws.com/,
Location = custom-location-1
}
-
Start a debug session of your game server.
-
Get the authorization token for your laptop in the fleet
that you created. Use the get-compute-auth-token
command
(or the GetComputeAuthToken
API
operation).
aws gamelift get-compute-auth-token \
--fleet-id fleet-1234
\
--compute-name DevLaptop
Example output:
ComputeAuthToken {
FleetId = fleet-1234,
ComputeName = DevLaptop,
AuthToken = abcdefg123,
ExpirationTime = 1897492857.11
}
-
Run a debug instance of your game server executable. To
run the debug instance, your game server must call InitSDK(). After the process is ready to host a game session, the
game server calls ProcessReady().
-
Create a game session to test out your first integration with
Amazon GameLift Anywhere. Use the create-game-session
command (or the
CreateGameSession
API operation).
Specify the fleet's custom location.
aws gamelift create-game-session \
--fleet-id fleet-1234
\
--name DebugSession
\
--maximum-player-session-count 2
\
--location custom-location-1
Example output:
GameSession {
FleetId = fleet-1234,
GameSessionId = 1111-1111,
Name = DebugSession,
IpAddress = 10.1.2.3,
Port = 1024,
...
}
Amazon GameLift sends an onStartGameSession()
message to your
registered server process. The message contains the
GameSession
object from the previous step with game
properties, game sessions data, matchmaker data, and more about the
game session.
-
Add logic to your game server so that your server process responds
to the onStartGameSession()
message with
ActivateGameSession()
. The operation sends an
acknowledgement to Amazon GameLift that your server received and accepted the
create game session message. For more information see, Amazon GameLift server SDK reference.
Your game server is now running a game session for you to test out and use
for iteration. To learn how to iterate on your game server, continue to the
next section.
- AWS CLI
-
-
Create a custom location using the create-location
command (or the CreateLocation
API operation). A
custom location labels the location of your hardware that Amazon GameLift uses
to run your games in Anywhere fleets.
aws gamelift create-location \
--location-name custom-location-1
Example output:
{
Location {
LocationName = custom-location-1
}
}
-
Create an Anywhere fleet with your custom location using the
create-fleet
command (or the CreateFleet
API operation). Amazon GameLift
creates the fleet in your home Region and the custom locations that
you provide.
aws gamelift create-fleet \
--name LaptopFleet
\
--compute-type ANYWHERE \
--locations "location=custom-location-1
"
Example output:
Fleet {
Name = LaptopFleet,
ComputeType = ANYWHERE,
FleetId = fleet-1234,
Status = ACTIVE
...
}
-
Register your laptop as a compute resource in the fleet that you
created. Use the register-compute
command (or the
RegisterCompute
API operation).
Include the fleet-id
created in the previous step and
add a compute-name
and your laptop's public
ip-address
.
aws gamelift register-compute \
--compute-name DevLaptop
\
--fleet-id fleet-1234
\
--ip-address 10.1.2.3
\
--location custom-location-1
Example output:
Compute {
FleetId = fleet-1234,
ComputeName = DevLaptop,
Status = ACTIVE,
IpAddress = 10.1.2.3,
GameLiftServiceSdkEndpoint = wss://12345678.execute-api.amazonaws.com/,
Location = custom-location-1
}
-
Start a debug session of your game server.
-
Get the authorization token for your laptop in the fleet
that you created. Use the get-compute-auth-token
command
(or the GetComputeAuthToken
API
operation).
aws gamelift get-compute-auth-token \
--fleet-id fleet-1234
\
--compute-name DevLaptop
Example output:
ComputeAuthToken {
FleetId = fleet-1234,
ComputeName = DevLaptop,
AuthToken = abcdefg123,
ExpirationTime = 1897492857.11
}
-
Run a debug instance of your game server executable. To
run the debug instance, your game server must call
InitSDK()
. After the process is ready to
host a game session, the game server calls
ProcessReady()
.
-
Create a game session to test out your first integration with
Amazon GameLift Anywhere. Use the create-game-session
command (or the
CreateGameSession
API
operation).
aws gamelift create-game-session \
--fleet-id fleet-1234
\
--name DebugSession
\
--maximum-player-session-count 2
Example output:
GameSession {
FleetId = fleet-1234,
GameSessionId = 1111-1111,
Name = DebugSession,
IpAddress = 10.1.2.3,
Port = 1024,
...
}
Amazon GameLift sends an onStartGameSession()
message to your
registered server process. The message contains the
GameSession
object from the previous step with game
properties, game sessions data, matchmaker data, and more about the
game session.
-
Add logic to your game server so that your server process responds
to the onStartGameSession()
message with
ActivateGameSession()
. The operation sends an
acknowledgement to Amazon GameLift that your server received and accepted the
create game session message. For more information see, Amazon GameLift server SDK reference.
Your game server is now running a game session for you to test out and use
for iteration. To learn how to iterate on your game server, continue to the
next section.
Iterate on your game server
In this use case, consider a scenario where you've set up and tested your game server
and found a bug. With Amazon GameLift Anywhere, you can iterate on your code and avoid the heavy
setup of using an Amazon EC2 fleet.
-
Clean up your existing GameSession
, if possible. If the game
server crashes or it won't call ProcessEnding()
, Amazon GameLift cleans up
the GameSession
after the game server stops sending health
checks.
-
Make the code changes to your game server, compile, and prepare for the next
test.
-
Your previous Anywhere fleet is still active and your laptop is still
registered as a compute resource in the fleet. To begin testing again, create a
new debug instance.
-
Retrieve the authorization token for your laptop in the fleet that you
created. Use the get-compute-auth-token
command (or the
GetComputeAuthToken
API operation).
aws gamelift get-compute-auth-token \
--fleet-id fleet-1234
\
--compute-name DevLaptop
Example output:
ComputeAuthToken {
FleetId = fleet-1234,
ComputeName = DevLaptop,
AuthToken = hijklmnop456,
ExpirationTime = 1897492857.11
}
-
Run a debug instance of your game server executable. To run the debug
instance, your game server must call InitSDK()
. After the
process is ready to host a game session, the game server calls
ProcessReady()
.
-
Your fleet now has an available server process. Create your game session and
perform your next tests. Use the create-game-session
command (or the CreateGameSession
API operation).
aws gamelift create-game-session \
--fleet-id fleet-1234
\
--name SecondDebugSession
\
--maximum-player-session-count 2
Amazon GameLift sends an onStartGameSession()
message to your registered
server process. The message contains the GameSession
object from
the previous step with game properties, game session data, matchmaker data, and
more about the game session.
-
Add logic to your game server so that your server process responds to the
onStartGameSession()
message with
ActivateGameSession()
. The operation sends an acknowledgement
to Amazon GameLift that your server received and accepted the create game session message.
For more information see, Amazon GameLift server SDK reference.
After you finish testing your game server, you can continue to use Amazon GameLift for your
fleet and game server management. For more information, see Create a Amazon GameLift Anywhere fleet.