Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Interactions entre Amazon GameLift et le serveur du jeu
Cette rubrique décrit les interactions entre le client du jeu, un service principal, un serveur de jeu et AmazonGameLift.
Le schéma suivant illustre les interactions entre le client du jeu, le service principal, le GameLift SDK Amazon, le serveur de jeu EC2 géré, le SDK du GameLift serveur Amazon et Amazon. GameLift Pour une description détaillée des interactions présentées, consultez les sections suivantes de cette page.
Initialiser un serveur de jeu
Les étapes suivantes décrivent les interactions qui se produisent lorsque vous préparez votre serveur de jeu à héberger des sessions de jeu.
-
Amazon GameLift lance l'exécutable du serveur sur une instance Amazon Elastic Compute Cloud (Amazon EC2).
-
Le serveur de jeu appelle :
-
InitSDK()
pour initialiser le kit SDK Server. -
ProcessReady()
pour communiquer l'état de préparation de la session de jeu, les informations de connexion et l'emplacement des fichiers journaux des sessions de jeu.
Le processus du serveur attend ensuite un rappel d'Amazon. GameLift
-
-
Amazon GameLift met à jour l'état du processus du serveur pour
ACTIVE
permettre le placement des sessions de jeu. -
Amazon GameLift commence à appeler le
onHealthCheck
rappel et continue de l'appeler régulièrement pendant que le processus du serveur est actif. Le processus du serveur peut signaler qu'il est sain ou non en moins d'une minute.
Créer une session de jeu
Une fois que vous avez initialisé votre serveur de jeu, les interactions suivantes se produisent lorsque vous créez des sessions de jeu pour héberger vos joueurs.
-
Le service principal appelle l'opération du SDK.
StartGameSessionPlacement()
-
Amazon GameLift crée un nouveau
GameSessionPlacement
ticket avec le statutPENDING
et le renvoie au service principal. -
Le service principal obtient le statut d'un ticket de placement à partir d'une file d'attente. Pour plus d'informations, veuillez consulter Configurer une notification d'événement pour le placement des sessions de jeu.
-
Amazon GameLift commence par placer les sessions de jeu en sélectionnant une flotte appropriée et en recherchant un processus de serveur actif dans une flotte contenant des sessions de
0
jeu. Lorsqu'Amazon GameLift localise un processus serveur, Amazon GameLift effectue les opérations suivantes :-
Crée un
GameSession
objet avec les paramètres de session de jeu et les données du joueur à partir de la demande de placement avec unACTIVATING
statut. -
Invoque le
onStartGameSession
rappel sur le processus serveur. Amazon GameLift transmet des informations à l'GameSession
objet indiquant que le processus du serveur peut configurer la session de jeu. -
Modifie le nombre de sessions de jeu du processus serveur en
1
.
-
-
Le processus serveur exécute la fonction de
onStartGameSession
rappel. Lorsque le processus serveur est prêt à accepter les connexions des joueurs, il appelleActivateGameSession()
et attend les connexions des joueurs. -
Amazon GameLift met à jour l'
GameSession
objet avec les informations de connexion pour le processus serveur. (Ces informations incluent le paramètre de port qui a été signalé avecProcessReady()
.) Amazon change GameLift également le statut enACTIVE
. -
Le service principal appelle
DescribeGameSessionPlacement()
pour détecter l'état mis à jour du ticket. Le service principal utilise ensuite les informations de connexion pour connecter le client du jeu au processus serveur et rejoindre la session de jeu.
Ajouter un joueur à un jeu
Cette séquence décrit le processus d'ajout d'un joueur à une session de jeu existante. Les sessions des joueurs peuvent également être demandées dans le cadre d'une demande de placement de session de jeu.
-
Le service principal appelle l'opération de l'API client à l'
CreatePlayerSession()
aide d'un identifiant de session de jeu. -
Amazon GameLift vérifie l'état de la session de jeu (doit l'être
ACTIVE
) et recherche un emplacement de joueur ouvert pendant la session de jeu. Si un emplacement est disponible, Amazon GameLift procède comme suit :-
Crée un nouvel
PlayerSession
objet et définit son statut surRESERVED
. -
Répond à la demande de service principal avec l'
PlayerSession
objet.
-
-
Le service principal connecte le client du jeu directement au processus du serveur à l'aide de l'identifiant de session du joueur.
-
Le serveur appelle l'opération de l'API du serveur
AcceptPlayerSession()
pour valider l'ID de session du joueur. En cas de validation, Amazon GameLift transmet l'PlayerSession
objet au processus du serveur. Le processus serveur accepte ou refuse la connexion. -
Amazon GameLift effectue l'une des opérations suivantes :
-
Si la connexion est acceptée, Amazon GameLift définit le
PlayerSession
statut surACTIVE
. -
Si aucune réponse n'est reçue dans les 60 secondes suivant l'
CreatePlayerSession()
appel initial du serveur principal, Amazon GameLift change lePlayerSession
statutTIMEDOUT
et ouvre à nouveau l'emplacement du joueur pendant la session de jeu.
-
Supprimer un joueur
Lorsque vous supprimez des joueurs d'une session de jeu pour créer de l'espace pour que de nouveaux joueurs puissent y participer, les interactions suivantes se produisent.
-
Un joueur se déconnecte du jeu.
-
Le serveur détecte la perte de connexion et appelle l'opération de l'API du serveur
RemovePlayerSession()
. -
Amazon GameLift change le
PlayerSession
statutCOMPLETED
et ouvre à nouveau l'emplacement du joueur pendant la session de jeu.
Arrêter la session de jeu
Cette séquence d'interactions se produit lorsqu'un processus serveur arrête la session de jeu en cours.
-
Le serveur ferme la session de jeu et le serveur.
-
Le serveur appelle
ProcessEnding()
AmazonGameLift. -
Amazon GameLift effectue les opérations suivantes :
-
Importe les journaux des sessions de jeu vers Amazon Simple Storage Service (Amazon S3).
-
Remplace le
GameSession
statut parTERMINATED
. -
Modifie l'état du processus du serveur en
TERMINATED
. -
Recycle les ressources de l'instance.
-