GameLift Server Amazon SDK untuk Go: Tindakan - Amazon GameLift

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

GameLift Server Amazon SDK untuk Go: Tindakan

Gunakan referensi Amazon GameLift Go server SDK 5.x untuk mengintegrasikan game multipemain Anda untuk hosting dengan Amazon. GameLift Untuk panduan tentang proses integrasi, lihatTambahkan Amazon GameLift ke server game Anda.

GameLiftServerAPI.gomendefinisikan SDK tindakan server Go.

GameLift Server Amazon SDK untuk Go: Tipe data

GetSdkVersion()

Mengembalikan nomor versi saat ini dari SDK dibangun ke dalam proses server.

Sintaks

func GetSdkVersion() (string, error)

Nilai yang ditampilkan

Jika berhasil, mengembalikan SDK versi saat ini sebagai string. String yang dikembalikan mencakup nomor versi (contoh5.0.0). Jika tidak berhasil, mengembalikan pesan kesalahan seperticommon.SdkVersionDetectionFailed.

Contoh

version, err := server.GetSdkVersion()

Init SDK ()

Menginisialisasi Amazon GameLift SDK. Panggil metode ini saat diluncurkan sebelum inisialisasi lain yang terkait dengan Amazon GameLift terjadi. Metode ini mengatur komunikasi antara server dan GameLift layanan Amazon.

Sintaks

func InitSDK(params ServerParameters) error

Parameter

ServerParameters

Untuk menginisialisasi server game di Amazon GameLift Anywhere armada, membangun ServerParameters objek dengan informasi berikut:

  • Yang URL WebSocket digunakan untuk terhubung ke server game Anda.

  • ID dari proses yang digunakan untuk meng-host server game Anda.

  • ID komputasi yang menghosting proses server game Anda.

  • ID GameLift armada Amazon yang berisi Amazon Anda GameLift Anywhere menghitung.

  • Token otorisasi yang dihasilkan oleh GameLift operasi Amazon.

Untuk menginisialisasi server game pada EC2 armada GameLift terkelola Amazon, buat ServerParameters objek tanpa parameter. Dengan panggilan ini, GameLift agen Amazon menyiapkan lingkungan komputasi dan secara otomatis terhubung ke GameLift layanan Amazon untuk Anda.

Nilai yang dikembalikan

Jika berhasil, mengembalikan nil kesalahan untuk menunjukkan bahwa proses server siap untuk memanggilProcessReady().

catatan

Jika panggilan gagal untuk build game yang diterapkan ke InitSDK() armada Anywhere, periksa ServerSdkVersion parameter yang digunakan saat membuat sumber daya build. Anda harus secara eksplisit menetapkan nilai ini ke SDK versi server yang digunakan. Nilai default untuk parameter ini adalah 4.x, yang tidak kompatibel. Untuk mengatasi masalah ini, buat build baru dan terapkan ke armada baru.

Contoh

Amazon GameLift Anywhere contoh

//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 GameLift agent to enable further communication. err := server.InitSDK(serverParameters)

EC2Contoh yang GameLift dikelola Amazon

//Define the server parameters serverParameters := ServerParameters {} //Call InitSDK to establish a local connection with the GameLift agent to enable further communication. err := server.InitSDK(serverParameters)

ProcessReady()

Memberitahu Amazon GameLift bahwa proses server siap untuk meng-host sesi game. Panggil metode ini setelah memanggilInit SDK (). Metode ini harus dipanggil hanya satu kali per proses.

Sintaks

func ProcessReady(param ProcessParameters) error

Parameter

ProcessParameters

ProcessParametersObjek mengkomunikasikan informasi berikut tentang proses server:

  • Nama-nama metode callback yang diimplementasikan dalam kode server game yang dipanggil GameLift layanan Amazon untuk berkomunikasi dengan proses server.

  • Nomor port yang didengarkan oleh proses server.

  • Tipe LogParameters data yang berisi jalur ke file khusus sesi game apa pun yang Anda GameLift ingin Amazon tangkap dan simpan.

Nilai yang dikembalikan

Mengembalikan kesalahan dengan pesan kesalahan jika metode gagal. Mengembalikan nil jika metode ini berhasil.

Contoh

Contoh ini menggambarkan panggilan ProcessReady() dan mendelegasi implementasi fungsi.

// 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()

Memberi tahu Amazon GameLift bahwa proses server berakhir. Panggil metode ini setelah semua tugas pembersihan lainnya (termasuk mematikan sesi permainan aktif) dan sebelum mengakhiri proses. Tergantung pada hasilProcessEnding(), proses keluar dengan sukses (0) atau kesalahan (-1) dan menghasilkan peristiwa armada. Jika proses berakhir dengan kesalahan, peristiwa armada yang dihasilkan adalahSERVER_PROCESS_TERMINATED_UNHEALTHY.

Sintaks

func ProcessEnding() error

Nilai yang ditampilkan

Mengembalikan kode kesalahan 0 atau kode kesalahan yang ditentukan.

Contoh

// 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()

Memberi tahu Amazon GameLift bahwa proses server telah mengaktifkan sesi permainan dan sekarang siap menerima koneksi pemain. Tindakan ini disebut sebagai bagian dari fungsi onStartGameSession() callback, setelah semua inisialisasi sesi game.

Sintaks

func ActivateGameSession() error

Nilai yang ditampilkan

Mengembalikan kesalahan dengan pesan kesalahan jika metode gagal.

Contoh

Contoh ini menunjukkan ActivateGameSession() dipanggil sebagai bagian dari fungsi onStartGameSession() delegasi.

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()

Memperbarui kemampuan sesi game saat ini untuk menerima sesi pemain baru. Sesi game dapat diatur untuk menerima atau menolak semua sesi pemain baru.

Sintaks

func UpdatePlayerSessionCreationPolicy(policy model.PlayerSessionCreationPolicy) error

Parameter

playerSessionCreationKebijakan

Nilai string yang menunjukkan apakah sesi permainan menerima pemain baru.

Nilai yang valid meliputi:

  • model.AcceptAll— Terima semua sesi pemain baru.

  • model.DenyAll— Tolak semua sesi pemain baru.

Nilai yang dikembalikan

Mengembalikan kesalahan dengan pesan kesalahan jika terjadi kegagalan.

Contoh

Contoh ini menetapkan kebijakan bergabung sesi game saat ini untuk menerima semua pemain.

err := server.UpdatePlayerSessionCreationPolicy(model.AcceptAll)

GetGameSessionId()

Mengambil ID sesi permainan yang dihosting oleh proses server aktif.

Sintaks

func GetGameSessionID() (string, error)

Parameter

Tindakan ini tidak memiliki parameter.

Nilai yang dikembalikan

Jika berhasil, mengembalikan ID sesi permainan dan kesalahan nihil. Untuk proses idle yang belum diaktifkan dengan sesi permainan, panggilan mengembalikan string kosong dan nil kesalahan.

Contoh

gameSessionID, err := server.GetGameSessionID()

GetTerminationTime()

Mengembalikan waktu proses server dijadwalkan untuk dimatikan jika waktu penghentian tersedia. Proses server mengambil tindakan ini setelah menerima onProcessTerminate() panggilan balik dari Amazon GameLift. Amazon GameLift onProcessTerminate() menyerukan alasan-alasan berikut:

  • Ketika proses server telah melaporkan kesehatan yang buruk atau belum menanggapi Amazon GameLift.

  • Saat mengakhiri instance selama acara scale-down.

  • Ketika sebuah instance dihentikan karena gangguan spot-instance.

Sintaks

func GetTerminationTime() (int64, error)

Nilai yang ditampilkan

Jika berhasil, mengembalikan stempel waktu dalam detik epoch yang proses server dijadwalkan untuk dimatikan dan penghentian kesalahan. nil Nilainya adalah waktu penghentian, dinyatakan dalam kutu yang telah berlalu dari. 0001 00:00:00 Misalnya, nilai waktu tanggal 2020-09-13 12:26:40 -000Z sama dengan 637355968000000000 kutu. Jika tidak ada waktu penghentian tersedia, pesan kesalahan ditampilkan.

Contoh

terminationTime, err := server.GetTerminationTime()

AcceptPlayerSession()

Memberi tahu Amazon GameLift bahwa pemain dengan ID sesi pemain yang ditentukan telah terhubung ke proses server dan memerlukan validasi. Amazon GameLift memverifikasi bahwa ID sesi pemain valid. Setelah sesi pemain divalidasi, Amazon GameLift mengubah status slot pemain dari RESERVED keACTIVE.

Sintaks

func AcceptPlayerSession(playerSessionID string) error

Parameter

playerSessionId

ID unik yang dikeluarkan oleh Amazon GameLift saat sesi pemain baru dibuat.

Nilai yang dikembalikan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

Contoh ini menangani permintaan koneksi yang mencakup memvalidasi dan menolak sesi pemain yang tidak valid. IDs

func ReceiveConnectingPlayerSessionID(conn Connection, playerSessionID string) { err := server.AcceptPlayerSession(playerSessionID) if err != nil { connection.Accept() } else { connection.Reject(err.Error()) } }

RemovePlayerSession()

Memberitahu Amazon GameLift bahwa pemain telah terputus dari proses server. Sebagai tanggapan, Amazon GameLift mengubah slot pemain menjadi tersedia.

Sintaks

func RemovePlayerSession(playerSessionID string) error

Parameter

playerSessionId

ID unik yang dikeluarkan oleh Amazon GameLift saat sesi pemain baru dibuat.

Nilai yang dikembalikan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

err := server.RemovePlayerSession(playerSessionID)

DescribePlayerSessions()

Mengambil data sesi pemain yang mencakup pengaturan, metadata sesi, dan data pemain. Gunakan metode ini untuk mendapatkan informasi tentang hal-hal berikut:

  • Sesi pemain tunggal

  • Semua sesi pemain dalam sesi permainan

  • Semua sesi pemain yang terkait dengan ID pemain tunggal

Sintaks

func DescribePlayerSessions(req request.DescribePlayerSessionsRequest) (result.DescribePlayerSessionsResult, error) { return srv.describePlayerSessions(&req) }

Parameter

DescribePlayerSessionsRequest

Sebuah DescribePlayerSessionsRequest objek menjelaskan sesi pemain mana yang akan diambil.

Nilai yang dikembalikan

Jika berhasil, mengembalikan DescribePlayerSessionsResult objek yang berisi satu set objek sesi pemain yang sesuai dengan parameter permintaan.

Contoh

Contoh ini meminta semua sesi pemain yang terhubung secara aktif ke sesi permainan tertentu. Dengan menghilangkan NextTokendan menyetel nilai Batas ke 10, Amazon GameLift mengembalikan catatan sesi 10 pemain pertama yang cocok dengan permintaan.

// 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()

Mengirim permintaan untuk menemukan pemain baru untuk slot terbuka dalam sesi permainan yang dibuat dengan FlexMatch. Untuk informasi selengkapnya, lihat fitur FlexMatch isi ulang.

Tindakan ini asinkron. Jika pemain baru dicocokkan, Amazon GameLift mengirimkan data mak comblang yang diperbarui menggunakan fungsi panggilan balik. OnUpdateGameSession()

Proses server hanya dapat melakukan satu permintaan backfill match yang aktif dalam satu waktu. Untuk mengirim permintaan baru, panggil StopMatchBackfill() terlebih dahulu untuk membatalkan permintaan asli.

Sintaks

func StartMatchBackfill(req request.StartMatchBackfillRequest) (result.StartMatchBackfillResult, error)

Parameter

StartMatchBackfillRequest

Sebuah StartMatchBackfillRequest objek mengkomunikasikan informasi berikut:

  • ID tiket untuk ditetapkan ke permintaan backfill. Informasi ini opsional; jika tidak ada ID yang diberikan, Amazon GameLift menghasilkannya.

  • Matchmaker untuk dikirimi permintaan. Diperlukan konfigurasi ARN lengkap. Nilai ini ada dalam data mak comblang sesi permainan.

  • ID sesi permainan untuk mengisi ulang.

  • Data perjodohan yang tersedia untuk pemain sesi permainan saat ini.

Nilai yang dikembalikan

Mengembalikan StartMatchBackfillResult objek dengan ID tiket isi ulang kecocokan, atau kegagalan dengan pesan kesalahan.

Contoh

// 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()

Membatalkan permintaan pengisian ulang pertandingan yang aktif. Untuk informasi selengkapnya, lihat fitur FlexMatch isi ulang.

Sintaks

func StopMatchBackfill(req request.StopMatchBackfillRequest) error

Parameter

StopMatchBackfillRequest

StopMatchBackfillRequest Objek yang mengidentifikasi tiket perjodohan untuk dibatalkan:

  • ID tiket yang ditetapkan untuk permintaan pengisian ulang.

  • Mak comblang permintaan isi ulang dikirim ke.

  • Sesi permainan yang terkait dengan permintaan isi ulang.

Nilai yang dikembalikan

Mengembalikan hasil generik yang terdiri dari keberhasilan atau kegagalan dalam sebuah pesan kesalahan.

Contoh

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()

Mengambil jalur ke TLS sertifikat yang digunakan untuk mengenkripsi koneksi jaringan antara server game dan klien game Anda. Anda dapat menggunakan jalur sertifikat saat mendaftarkan perangkat komputasi ke Amazon GameLift Anywhere armada. Untuk informasi lebih lanjut, lihat RegisterCompute.

Sintaks

func GetComputeCertificate() (result.GetComputeCertificateResult, error)

Nilai yang ditampilkan

Mengembalikan GetComputeCertificateResult objek yang berisi berikut:

  • CertificatePath: Jalur ke TLS sertifikat pada sumber daya komputasi Anda. Saat menggunakan armada GameLift terkelola Amazon, jalur ini berisi:

    • certificate.pem: Sertifikat pengguna akhir. Rantai sertifikat lengkap adalah kombinasi dari certificateChain.pem ditambahkan ke sertifikat ini.

    • certificateChain.pem: Rantai sertifikat yang berisi sertifikat root dan sertifikat perantara.

    • rootCertificate.pem: Sertifikat root.

    • privateKey.pem: Kunci pribadi untuk sertifikat pengguna akhir.

  • ComputeName: Nama sumber daya komputasi Anda.

Contoh

tlsCertificate, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)

GetFleetRoleCredentials()

Mengambil kredensi peran layanan yang Anda buat untuk memperluas izin ke orang lain ke Amazon. Layanan AWS GameLift Kredensi ini memungkinkan server game Anda menggunakan sumber daya Anda AWS . Untuk informasi selengkapnya, lihat Menyiapkan peran IAM layanan untuk Amazon GameLift.

Sintaks

func GetFleetRoleCredentials( req request.GetFleetRoleCredentialsRequest, ) (result.GetFleetRoleCredentialsResult, error) { return srv.getFleetRoleCredentials(&req) }

Parameter

GetFleetRoleCredentialsRequest

Kredensi peran yang memperluas akses terbatas ke AWS sumber daya Anda ke server game.

Nilai yang dikembalikan

Mengembalikan GetFleetRoleCredentialsResult objek yang berisi berikut:

  • AssumedRoleUserArn - Nama Sumber Daya Amazon (ARN) pengguna yang menjadi milik peran layanan.

  • AssumedRoleId - ID pengguna yang menjadi milik peran layanan.

  • AccessKeyId - ID kunci akses untuk mengautentikasi dan menyediakan akses ke AWS sumber daya Anda.

  • SecretAccessKey - ID kunci akses rahasia untuk otentikasi.

  • SessionToken - Token untuk mengidentifikasi sesi aktif saat ini yang berinteraksi dengan AWS sumber daya Anda.

  • Kedaluwarsa - Jumlah waktu hingga kredensi sesi Anda kedaluwarsa.

Contoh

// form the customer credentials request getFleetRoleCredentialsRequest := request.NewGetFleetRoleCredentials() getFleetRoleCredentialsRequest.RoleArn = "arn:aws:iam::123456789012:role/service-role/exampleGameLiftAction" credentials, err := server.GetFleetRoleCredentials(getFleetRoleCredentialsRequest)

Hancurkan ()

Membebaskan server GameLift game Amazon SDK dari memori. Sebagai praktik terbaik, hubungi metode ini setelah ProcessEnding() dan sebelum mengakhiri proses. Jika Anda menggunakan armada Anywhere dan Anda tidak menghentikan proses server setelah setiap sesi game, hubungi Destroy() lalu InitSDK() inisialisasi ulang sebelum memberi tahu Amazon GameLift bahwa prosesnya siap untuk meng-host sesi game. ProcessReady()

Sintaks

func Destroy() error { return srv.destroy() }

Nilai yang ditampilkan

Mengembalikan kesalahan dengan pesan kesalahan jika metode gagal.

Contoh

// 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) } }