Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Go server SDK per Server Amazon GameLift -- Azioni
Usa il riferimento al server SDK 5.x per integrare il tuo gioco multiplayer su cui eseguire l'hosting. Amazon GameLift Servers Per indicazioni sul processo di integrazione, consulta. Add (Aggiungi) GameLift Server Amazon al tuo server di gioco con il server SDK
GameLiftServerAPI.godefinisce le azioni Go server SDK.
Go server SDK perAmazon GameLift Servers: tipi di dati
Azioni
GetSdkVersion()
Restituisce il numero di versione corrente dell'SDK integrato nel processo del server.
Sintassi
func GetSdkVersion() (string, error)
Valore restituito
In caso di successo, restituisce la versione SDK corrente come stringa. La stringa restituita include il numero di versione (esempio5.0.0). In caso contrario, restituisce un messaggio di errore comecommon.SdkVersionDetectionFailed.
Esempio
version, err := server.GetSdkVersion()
InitMetrics()
Inizializza la raccolta delle metriche per l'SDK. Amazon GameLift Servers Questo metodo imposta il reporting delle metriche per aiutare a monitorare le prestazioni e l'integrità del server. Chiama questo metodo dopo InitSDK() ma primaProcessReady().
Sintassi
func InitMetrics() error func InitMetrics(metricsParameters MetricsParameters) error
Parameters
- MetricsParameters (facoltativo)
-
Un
MetricsParametersoggetto che configura la raccolta di metriche. Se non viene fornita, viene utilizzata la configurazione predefinita delle metriche. La MetricsParameters struttura contiene i seguenti campi:-
StatsdHost- Il nome host o l'indirizzo IP del server StatsD. -
StatsdPort- Il numero di porta per il server StatsD. -
CrashReporterHost- Il nome host o l'indirizzo IP del servizio crash reporter. -
CrashReporterPort- Il numero di porta per il servizio crash reporter. -
FlushIntervalMs- L'intervallo in millisecondi per il lavaggio dei dati delle metriche. -
MaxPacketSize- La dimensione massima dei pacchetti di metriche in byte.
Per ulteriori informazioni sulla MetricsParameters struttura, vedere Server SDK 5.x per i tipi di dati C#.
-
Valore restituito
In caso di successo, restituisce un nil errore per indicare che la raccolta delle metriche è stata inizializzata correttamente.
Esempio
Inizializza le metriche con la configurazione predefinita:
err := server.InitMetrics()
Inizializza le metriche con una configurazione personalizzata:
metricsParams := MetricsParameters{ StatsdHost: "localhost", StatsdPort:8125, CrashReporterHost: "localhost", CrashReporterPort:9125, FlushIntervalMs:5000, MaxPacketSize:1024, } err := server.InitMetrics(metricsParams)
InitMetricsFromEnvironment()
Inizializza la raccolta delle metriche per l'Amazon GameLift ServersSDK utilizzando la configurazione dalle variabili di ambiente. Questo metodo imposta il reporting delle metriche utilizzando le impostazioni predefinite derivate dall'ambiente di runtime.
Chiama questo metodo dopo InitSDK() ma primaProcessReady().
Sintassi
func InitMetricsFromEnvironment() error
Valore restituito
In caso di successo, restituisce nil un errore per indicare che la raccolta delle metriche è stata inizializzata correttamente utilizzando la configurazione dell'ambiente.
Esempio
err := server.InitMetricsFromEnvironment()
InitSDK()
Inizializza l'SDK Amazon GameLift Servers. Chiama questo metodo all'avvio prima che si verifichi qualsiasi altra inizializzazione correlata. Amazon GameLift Servers Questo metodo imposta la comunicazione tra il server e il Amazon GameLift Servers servizio.
Sintassi
func InitSDK(params ServerParameters) error
Parameters
- ServerParameters
-
Per inizializzare un server di gioco su una flotta Amazon GameLift Servers Anywhere, costruisci un
ServerParametersoggetto con le seguenti informazioni:-
L'URL WebSocket utilizzato per la connessione al tuo server di gioco.
-
L'ID del processo utilizzato per ospitare il tuo server di gioco.
-
L'ID del computer che ospita i processi del server di gioco.
-
L'ID del Amazon GameLift Servers parco macchine contenente il tuo computer Amazon GameLift Servers Anywhere.
-
Il token di autorizzazione generato dall'Amazon GameLift Serversoperazione.
Per inizializzare un server di gioco su una flotta EC2 Amazon GameLift Servers gestita, costruisci un
ServerParametersoggetto senza parametri. Con questa chiamata, l'Amazon GameLift Serversagente configura l'ambiente di calcolo e si connette automaticamente al Amazon GameLift Servers servizio per te. -
Valore restituito
In caso di successo, restituisce nil un errore per indicare che il processo del server è pronto per la chiamataProcessReady().
Nota
Se le chiamate a non InitSDK() riescono per le build di gioco distribuite alle flotte Anywhere, controlla il ServerSdkVersion parametro utilizzato durante la creazione della risorsa di compilazione. Devi impostare esplicitamente questo valore sulla versione SDK del server in uso. Il valore predefinito per questo parametro è 4.x, che non è compatibile. Per risolvere questo problema, crea una nuova build e distribuiscila in una nuova flotta.
Esempio
Amazon GameLift ServersEsempio ovunque
//Define the server parameters serverParameters := ServerParameters { WebSocketURL: "wss://us-west-1.api.amazongamelift.com", ProcessID: "PID1234", HostID: "HardwareAnywhere", FleetID: "aarn:aws:gamelift:us-west-1:111122223333:fleet/fleet-9999ffff-88ee-77dd-66cc-5555bbbb44aa", AuthToken: "1111aaaa-22bb-33cc-44dd-5555eeee66ff" } //Call InitSDK to establish a local connection with the Amazon GameLift Servers Agent to enable further communication. err := server.InitSDK(serverParameters)
Amazon GameLift Serversesempio EC2 gestito
//Define the server parameters serverParameters := ServerParameters {} //Call InitSDK to establish a local connection with the Amazon GameLift Servers Agent to enable further communication. err := server.InitSDK(serverParameters)
ProcessReady()
Notifica Amazon GameLift Servers che il processo del server è pronto per ospitare sessioni di gioco. Chiama questo metodo dopo averlo InitSDK() richiamato. Questo metodo deve essere chiamato solo una volta per processo.
Sintassi
func ProcessReady(param ProcessParameters) error
Parameters
- ProcessParameters
-
Un ProcessParameters oggetto comunica le seguenti informazioni sul processo del server:
-
I nomi dei metodi di callback implementati nel codice del server di gioco che il Amazon GameLift Servers servizio richiama per comunicare con il processo del server.
-
Il numero di porta su cui è in ascolto il processo del server.
-
Il tipo di LogParameters dati contenente il percorso dei file specifici della sessione di gioco che desideri acquisire e Amazon GameLift Servers archiviare.
-
Valore restituito
Restituisce un errore con un messaggio di errore se il metodo fallisce. Restituisce nil se il metodo ha esito positivo.
Esempio
Questo esempio illustra la chiamata ProcessReady() e le implementazioni della funzione delegata.
// Define the process parameters processParams := ProcessParameters { OnStartGameSession: gameProcess.OnStartGameSession, OnUpdateGameSession: gameProcess.OnGameSessionUpdate, OnProcessTerminate: gameProcess.OnProcessTerminate, OnHealthCheck: gameProcess.OnHealthCheck, Port:port, LogParameters: LogParameters { // logging and error example []string {"C:\\game\\logs", "C:\\game\\error"} } } err := server.ProcessReady(processParams)
ProcessEnding()
Notifica Amazon GameLift Servers che il processo del server sta terminando. Chiama questo metodo dopo tutte le altre attività di pulizia (inclusa la chiusura della sessione di gioco attiva) e prima di terminare il processo. A seconda del risultatoProcessEnding(), il processo termina con successo (0) o errore (-1) e genera un evento relativo alla flotta. Se il processo termina con un errore, l'evento relativo alla flotta generato è. SERVER_PROCESS_TERMINATED_UNHEALTHY
Sintassi
func ProcessEnding() error
Valore restituito
Restituisce un codice di errore 0 o un codice di errore definito.
Esempio
// operations to end game sessions and the server process defer func() { err := server.ProcessEnding() server.Destroy() if err != nil { fmt.Println("ProcessEnding() failed. Error: ", err) os.Exit(-1) } else { os.Exit(0) } }
ActivateGameSession()
Notifica Amazon GameLift Servers che il processo del server ha attivato una sessione di gioco ed è ora pronto a ricevere le connessioni dei giocatori. Questa azione viene richiamata come parte della funzione di onStartGameSession() callback, dopo l'inizializzazione della sessione di gioco.
Sintassi
func ActivateGameSession() error
Valore restituito
Restituisce un errore con un messaggio di errore se il metodo fallisce.
Esempio
Questo esempio mostra ActivateGameSession() call come parte della funzione onStartGameSession() delegate.
func OnStartGameSession(GameSession gameSession) { // game-specific tasks when starting a new game session, such as loading map // Activate when ready to receive players err := server.ActivateGameSession(); }
UpdatePlayerSessionCreationPolicy()
Aggiorna la capacità della sessione di gioco corrente di accettare nuove sessioni giocatore. Una sessione di gioco può essere configurata per accettare o rifiutare tutte le nuove sessioni giocatore.
Sintassi
func UpdatePlayerSessionCreationPolicy(policy model.PlayerSessionCreationPolicy) error
Parameters
- giocatore SessionCreationPolicy
-
Valore di stringa che indica se la sessione di gioco accetta nuovi giocatori.
I valori validi includono:
-
model.AcceptAll— Accetta tutte le sessioni dei nuovi giocatori. -
model.DenyAll— Rifiuta tutte le sessioni per i nuovi giocatori.
-
Valore restituito
Restituisce un errore con un messaggio di errore in caso di errore.
Esempio
Questo esempio definisce la policy di partecipazione alla sessione di gioco corrente per accettare tutti i giocatori.
err := server.UpdatePlayerSessionCreationPolicy(model.AcceptAll)
GetGameSessionId()
Recupera l'ID della sessione di gioco ospitata dal processo del server attivo.
Sintassi
func GetGameSessionID() (string, error)
Parameters
Questa operazione non prevede parametri.
Valore restituito
In caso di successo, restituisce l'ID della sessione di gioco e zero errori. Per i processi inattivi che non sono ancora stati attivati durante una sessione di gioco, la chiamata restituisce una stringa vuota e nil un errore.
Esempio
gameSessionID, err := server.GetGameSessionID()
GetTerminationTime()
Restituisce l'ora in cui è prevista la chiusura di un processo del server se è disponibile un orario di terminazione. Un processo server esegue questa azione dopo aver ricevuto una onProcessTerminate() richiamata da. Amazon GameLift Servers Amazon GameLift Serverschiamate onProcessTerminate() per i seguenti motivi:
-
Quando il processo del server ha segnalato problemi di salute o non ha risposto. Amazon GameLift Servers
-
Quando si termina l'istanza durante un evento di ridimensionamento.
-
Quando un'istanza viene terminata a causa di un'interruzione occasionale dell'istanza. Crea una coda per le istanze Spot
Sintassi
func GetTerminationTime() (int64, error)
Valore restituito
In caso di successo, restituisce il timestamp in secondi epocali in cui è prevista la chiusura del processo del server e una terminazione per errore. nil Il valore è il tempo di terminazione, espresso in tick trascorsi da. 0001 00:00:00 Ad esempio, il valore della data e dell'ora 2020-09-13 12:26:40 -000Z è uguale ai tick. 637355968000000000 Se non è disponibile un'ora di cessazione, restituisce un messaggio di errore.
Esempio
terminationTime, err := server.GetTerminationTime()
AcceptPlayerSession()
Notifica Amazon GameLift Servers che un giocatore con l'ID di sessione specificato si è connesso al processo del server e deve essere convalidato. Amazon GameLift Serversverifica che l'ID della sessione del giocatore sia valido. Dopo che la sessione del giocatore è stata convalidata, Amazon GameLift Servers cambia lo stato dello slot del giocatore da aRESERVED. ACTIVE
Sintassi
func AcceptPlayerSession(playerSessionID string) error
Parameters
playerSessionId-
ID univoco rilasciato da Amazon GameLift Servers quando viene creata una nuova sessione di giocatore.
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
Questo esempio gestisce una richiesta di connessione che include la convalida e il rifiuto di ID di sessione del giocatore non validi.
func ReceiveConnectingPlayerSessionID(conn Connection, playerSessionID string) { err := server.AcceptPlayerSession(playerSessionID) if err != nil { connection.Accept() } else { connection.Reject(err.Error()) } }
RemovePlayerSession()
Notifica Amazon GameLift Servers che un giocatore si è disconnesso dal processo del server. In risposta, imposta lo Amazon GameLift Servers slot del giocatore in disponibile.
Sintassi
func RemovePlayerSession(playerSessionID string) error
Parameters
playerSessionId-
ID univoco rilasciato Amazon GameLift Servers quando viene creata una nuova sessione di giocatore.
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
err := server.RemovePlayerSession(playerSessionID)
DescribePlayerSessions()
Recupera i dati della sessione del giocatore che includono impostazioni, metadati della sessione e dati del giocatore. Utilizzate questo metodo per ottenere informazioni su quanto segue:
-
Una sessione per giocatore singolo
-
Tutte le sessioni dei giocatori in una sessione di gioco
-
Tutte le sessioni dei giocatori associate a un ID giocatore singolo
Sintassi
func DescribePlayerSessions(req request.DescribePlayerSessionsRequest) (result.DescribePlayerSessionsResult, error) { return srv.describePlayerSessions(&req) }
Parameters
- DescribePlayerSessionsRequest
-
Un
DescribePlayerSessionsRequestoggetto descrive quali sessioni di giocatore recuperare.
Valore restituito
In caso di successo, restituisce un DescribePlayerSessionsResult oggetto che contiene un insieme di oggetti di sessione del giocatore che corrispondono ai parametri della richiesta.
Esempio
Questo esempio richiede che tutte le sessioni dei giocatori siano connesse attivamente a una sessione di gioco specificata. Omettendo NextToken e impostando il valore Limit su 10, Amazon GameLift Servers restituisce i record delle prime 10 sessioni dei giocatori che corrispondono alla richiesta.
// create request describePlayerSessionsRequest := request.NewDescribePlayerSessions() describePlayerSessionsRequest.GameSessionID, _ = server.GetGameSessionID() // get ID for the current game session describePlayerSessionsRequest.Limit =10// return the first 10 player sessions describePlayerSessionsRequest.PlayerSessionStatusFilter = "ACTIVE" // Get all player sessions actively connected to the game session describePlayerSessionsResult, err := server.DescribePlayerSessions(describePlayerSessionsRequest)
StartMatchBackfill()
Invia una richiesta per trovare nuovi giocatori per gli slot aperti in una sessione di gioco creata con FlexMatch. Per ulteriori informazioni, consulta la funzione di FlexMatch backfill.
Questa operazione è asincrona. Se vengono abbinati nuovi giocatori, Amazon GameLift Servers fornisce dati aggiornati sul matchmaker utilizzando la funzione di callback. OnUpdateGameSession()
Un processo del server può avere un solo backfill degli abbinamenti attivo alla volta. Per inviare una nuova richiesta, chiama prima StopMatchBackfill() per annullare la richiesta originale.
Sintassi
func StartMatchBackfill(req request.StartMatchBackfillRequest) (result.StartMatchBackfillResult, error)
Parameters
- StartMatchBackfillRequest
-
Un StartMatchBackfillRequest oggetto comunica le seguenti informazioni:
-
ID del ticket da assegnare alla richiesta di backfill. Queste informazioni sono opzionali; se non viene fornito alcun ID, ne Amazon GameLift Servers genera uno.
-
Matchmaker a cui inviare la richiesta. L'ARN di configurazione completo è obbligatorio. Questo valore si trova nei dati del matchmaker della sessione di gioco.
-
L'ID della sessione di gioco da riempire.
-
I dati di matchmaking disponibili per i giocatori attuali della sessione di gioco.
-
Valore restituito
Restituisce un StartMatchBackfillResult oggetto con l'ID del ticket di backfill della partita o un errore con un messaggio di errore.
Esempio
// form the request startBackfillRequest := request.NewStartMatchBackfill() startBackfillRequest.RequestID = "1111aaaa-22bb-33cc-44dd-5555eeee66ff" // optional startBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig" var matchMaker model.MatchmakerData if err := matchMaker.UnmarshalJSON([]byte(gameSession.MatchmakerData)); err != nil { return } startBackfillRequest.Players = matchMaker.Players res, err := server.StartMatchBackfill(startBackfillRequest) // Implement callback function for backfill func OnUpdateGameSession(myGameSession model.GameSession) { // game-specific tasks to prepare for the newly matched players and update matchmaker data as needed }
StopMatchBackfill()
Annulla una richiesta di backfill di una partita attiva. Per ulteriori informazioni, consulta la funzione di FlexMatch backfill.
Sintassi
func StopMatchBackfill(req request.StopMatchBackfillRequest) error
Parameters
- StopMatchBackfillRequest
-
Un StopMatchBackfillRequest oggetto che identifica il ticket di matchmaking da annullare:
-
L'ID del ticket assegnato alla richiesta di backfill.
-
Il matchmaker a cui è stata inviata la richiesta di backfill.
-
La sessione di gioco associata alla richiesta di backfill.
-
Valore restituito
Restituisce un risultato generico costituito da un esito positivo o negativo con un messaggio di errore.
Esempio
stopBackfillRequest := request.NewStopMatchBackfill() // Use this function to create request stopBackfillRequest.TicketID = "1111aaaa-22bb-33cc-44dd-5555eeee66ff" stopBackfillRequest.MatchmakingConfigurationArn = "arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig" //error err := server.StopMatchBackfill(stopBackfillRequest)
GetComputeCertificate()
Recupera il percorso del certificato TLS utilizzato per crittografare la connessione di rete tra il server di gioco e il client di gioco. Puoi utilizzare il percorso del certificato quando registri il tuo dispositivo informatico in una flotta Anywhere. Amazon GameLift Servers Per ulteriori informazioni, consulta RegisterCompute.
Sintassi
func GetComputeCertificate() (result.GetComputeCertificateResult, error)
Valore restituito
Restituisce un GetComputeCertificateResult oggetto che contiene quanto segue:
-
CertificatePath: il percorso del certificato TLS sulla risorsa di calcolo. Quando si utilizza un parco veicoli Amazon GameLift Servers gestito, questo percorso contiene:
-
certificate.pem: il certificato dell'utente finale. La catena completa di certificati è la combinazionecertificateChain.pemaggiunta a questo certificato. -
certificateChain.pem: la catena di certificati che contiene il certificato principale e i certificati intermedi. -
rootCertificate.pem: il certificato principale. -
privateKey.pem: la chiave privata per il certificato dell'utente finale.
-
-
ComputeName: il nome della risorsa di calcolo.
Esempio
tlsCertificate, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)
GetFleetRoleCredentials()
Recupera le credenziali del ruolo di servizio che crei per estendere le autorizzazioni all'altro utente. Servizi AWS Amazon GameLift Servers Queste credenziali consentono al server di gioco di utilizzare le tue risorse. AWS Per ulteriori informazioni, consulta Configurare un ruolo di servizio IAM per Amazon GameLift Servers.
Sintassi
func GetFleetRoleCredentials( req request.GetFleetRoleCredentialsRequest, ) (result.GetFleetRoleCredentialsResult, error) { return srv.getFleetRoleCredentials(&req) }
Parameters
- GetFleetRoleCredentialsRequest
-
Credenziali di ruolo che estendono l'accesso limitato alle tue AWS risorse al server di gioco.
Valore restituito
Restituisce un GetFleetRoleCredentialsResult oggetto che contiene quanto segue:
-
AssumedRoleUserArn - L'Amazon Resource Name (ARN) dell'utente a cui appartiene il ruolo del servizio.
-
AssumedRoleId - L'ID dell'utente a cui appartiene il ruolo di servizio.
-
AccessKeyId - L'ID della chiave di accesso per autenticare e fornire l'accesso alle AWS risorse.
-
SecretAccessKey - L'ID della chiave di accesso segreta per l'autenticazione.
-
SessionToken - Un token per identificare la sessione attiva corrente che interagisce con AWS le tue risorse.
-
Scadenza: il periodo di tempo che manca alla scadenza delle credenziali di sessione.
Esempio
// form the customer credentials request getFleetRoleCredentialsRequest := request.NewGetFleetRoleCredentials() getFleetRoleCredentialsRequest.RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction" credentials, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)
ListContainersNetworkInfo()
Recupera le informazioni di rete per tutti i contenitori in esecuzione sulla stessa istanza, inclusi il nome, l'ID, l'indirizzo IP locale e il tipo di gruppo di contenitori di ciascun contenitore. Usa queste informazioni per consentire ai processi del server di gioco di scoprire e comunicare con altri contenitori in esecuzione sulla stessa istanza.
Questa azione è supportata solo sulle flotte di container. Quando viene richiamata da qualsiasi altro tipo di calcolo, restituisce un UnsupportedComputeTypeException errore. Amazon GameLift Serversottiene le informazioni di rete da un server di rilevamento che viene eseguito localmente sull'istanza.
Sintassi
func ListContainersNetworkInfo() (result.ListContainersNetworkInfoResult, error)
Valore restituito
In caso di successo, restituisce un ListContainersNetworkInfoResult oggetto che contiene quanto segue:
-
ContainersNetworkInfo- Un elenco diContainerNetworkInfovoci, con una voce per ogni contenitore in esecuzione sull'istanza. Ogni voce contiene quanto segue:-
ContainerName- Il nome del contenitore. -
ContainerID- L'identificatore univoco del contenitore. -
IPAddress- L'indirizzo IP locale del contenitore sull'istanza. -
ContainerGroupType- Il tipo di gruppo di contenitori a cui appartiene il contenitore. I valori validi sonoGAME_SERVERePER_INSTANCE.
-
Esempio
networkInfo, err := server.ListContainersNetworkInfo() if err != nil { fmt.Println("ListContainersNetworkInfo() failed. Error: ", err) return } for _, container := range networkInfo.ContainersNetworkInfo { fmt.Printf("Container %s (%s) at %s, group type %s\n", container.ContainerName, container.ContainerID, container.IPAddress, container.ContainerGroupType) }
Distruggi ()
Libera l'SDK del server di Amazon GameLift Servers gioco dalla memoria. Come procedura consigliata, richiamate questo metodo dopo ProcessEnding() e prima di terminare il processo. Se utilizzi una flotta Anywhere e non interrompi i processi del server dopo ogni sessione di gioco, chiama Destroy() e poi InitSDK() reinizializza prima di notificare Amazon GameLift Servers che il processo è pronto per ospitare una sessione di gioco con. ProcessReady()
Sintassi
func Destroy() error { return srv.destroy() }
Valore restituito
Restituisce un errore con un messaggio di errore se il metodo fallisce.
Esempio
// operations to end game sessions and the server process defer func() { err := server.ProcessEnding() server.Destroy() if err != nil { fmt.Println("ProcessEnding() failed. Error: ", err) os.Exit(-1) } else { os.Exit(0) } }