https://github.com/dplusic/gamelift-nodejs-serversdk
Unofficial GameLift Server SDK for Node.js
https://github.com/dplusic/gamelift-nodejs-serversdk
aws gamelift nodejs
Last synced: about 1 year ago
JSON representation
Unofficial GameLift Server SDK for Node.js
- Host: GitHub
- URL: https://github.com/dplusic/gamelift-nodejs-serversdk
- Owner: dplusic
- License: apache-2.0
- Created: 2018-05-19T14:00:26.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2018-12-27T15:44:28.000Z (over 7 years ago)
- Last Synced: 2025-03-28T12:33:43.969Z (about 1 year ago)
- Topics: aws, gamelift, nodejs
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/@dplusic/gamelift-nodejs-serversdk
- Size: 68.4 KB
- Stars: 25
- Watchers: 5
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GameLift-Nodejs-ServerSDK
Unofficial GameLift Server SDK for Node.js
(A port of GameLift-CSharp-ServerSDK)
## Example Code
```javascript
//This is an example of a simple integration with GameLift server SDK that will make game server processes go active on GameLift!
const exitHook = require('exit-hook');
const { 'default': GameLiftServerAPI, ProcessParameters, LogParameters } = require('gamelift-nodejs-serversdk')
exitHook(() => {
GameLiftServerAPI.Destroy()
});
const listeningPort = 7777;
//InitSDK will establish a local connection with GameLift's agent to enable further communication.
const initSDKOutcome = GameLiftServerAPI.InitSDK()
if (initSDKOutcome.Success) {
const processParameters = new ProcessParameters(
(gameSession) => {
//When a game session is created, GameLift 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()
GameLiftServerAPI.ActivateGameSession();
},
(updateGameSession) => {
//When a game session is updated (e.g. by FlexMatch backfill), GameLiftsends a request to the game
//server containing the updated game session object. The game server can then examine the provided
//matchmakerData and handle new incoming players appropriately.
//updateReason is the reason this update is being supplied.
},
() => {
//OnProcessTerminate callback. GameLift 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 GameLift we are indeed going to shutdown.
GameLiftServerAPI.ProcessEnding();
},
() => {
//This is the HealthCheck callback.
//GameLift will invoke this callback every 60 seconds or so.
//Here, a game server might want to check the health of dependencies and such.
//Simply return true if healthy, false otherwise.
//The game server has 60 seconds to respond with its health status. GameLift will default to 'false' if the game server doesn't respond in time.
//In this case, we're always healthy!
return true;
},
listeningPort, //This game server tells GameLift that it will listen on port 7777 for incoming player connections.
new LogParameters([
//Here, the game server tells GameLift what set of files to upload when the game session ends.
//GameLift will upload everything specified here for the developers to fetch later.
'/local/game/logs/myserver.log'
]));
(async () => {
try {
//Calling ProcessReady tells GameLift this game server is ready to receive incoming game sessions!
const processReadyOutcome = await GameLiftServerAPI.ProcessReady(processParameters);
if (processReadyOutcome.Success)
{
console.log("ProcessReady success.");
}
else
{
console.log("ProcessReady failure : " + processReadyOutcome.Error.toString());
}
} catch (e) {
console.log(e);
}
})()
} else {
console.log("InitSDK failure : " + initSDKOutcome.Error.toString());
}
```