View a markdown version of this page

Mengintegrasikan GameLift Server Amazon menjadi proyek Unity - GameLift Server Amazon

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

Mengintegrasikan GameLift Server Amazon menjadi proyek Unity

Pelajari cara mengintegrasikan Amazon GameLift Servers SDK untuk Unity ke dalam proyek game Anda untuk mengakses set fitur SDK server lengkap.

Kiat

Untuk penerapan yang lebih cepat, coba plugin Amazon GameLift Servers mandiri untuk Unity. Ini menyediakan alur kerja UI yang dipandu untuk menyebarkan server game Anda dengan cepat dengan pengaturan minimal, sehingga Anda dapat mencoba komponen game Anda dalam aksi. Lihat GameLift Server Amazon plugin untuk Unity (server SDK 5.x).

Sumber daya tambahan:

Instal SDK server untuk Unity

Dapatkan sumber terbuka Amazon GameLift Servers untuk Unity dari GitHub. File readme repositori berisi prasyarat dan instruksi instalasi.

Menyiapkan GameLift Server Amazon Armada di mana saja untuk pengujian

Anda dapat mengatur workstation pengembangan Anda sebagai armada hosting Amazon GameLift Servers Anywhere untuk menguji Amazon GameLift Servers integrasi Anda secara berulang. Dengan pengaturan ini, Anda dapat memulai proses server game di workstation Anda, mengirim permintaan bergabung atau perjodohan pemain Amazon GameLift Servers untuk memulai sesi game, dan menghubungkan klien ke sesi game baru. Dengan workstation Anda sendiri yang diatur sebagai server hosting, Anda dapat memantau semua aspek integrasi game AndaAmazon GameLift Servers.

Untuk petunjuk tentang cara menyiapkan workstation Anda, lihat Siapkan pengujian lokal dengan GameLift Server Amazon Dimana saja untuk menyelesaikan langkah-langkah berikut:

  1. Buat lokasi khusus untuk workstation Anda.

  2. Buat armada Any Amazon GameLift Servers where dengan lokasi khusus baru Anda. Jika berhasil, permintaan ini mengembalikan ID armada. Catat nilai ini, karena Anda akan membutuhkannya nanti.

  3. Daftarkan workstation Anda sebagai komputasi di armada Anywhere yang baru. Berikan nama komputasi unik dan tentukan alamat IP untuk workstation Anda. Jika berhasil, permintaan ini mengembalikan titik akhir SDK layanan, dalam bentuk WebSocket URL. Catat nilai ini, karena Anda akan membutuhkannya nanti.

  4. Hasilkan token otentikasi untuk komputasi workstation Anda. Otentikasi berumur pendek ini mencakup token dan tanggal kedaluwarsa. Server game Anda menggunakannya untuk mengotentikasi komunikasi dengan Amazon GameLift Servers layanan. Simpan otentikasi pada komputasi workstation Anda sehingga proses server game Anda yang sedang berjalan dapat mengaksesnya.

Tambahkan GameLift Server Amazon kode server untuk proyek Unity Anda

Server game Anda berkomunikasi dengan Amazon GameLift Servers layanan untuk menerima instruksi dan melaporkan status yang sedang berlangsung. Untuk mencapai ini, Anda menambahkan kode server game yang menggunakan SDK Amazon GameLift Servers server.

Contoh kode yang disediakan menggambarkan elemen integrasi dasar yang diperlukan. Ini menggunakan a MonoBehavior untuk menggambarkan inisialisasi server game sederhana denganAmazon GameLift Servers. Contohnya mengasumsikan bahwa server game berjalan pada armada Any Amazon GameLift Servers where untuk pengujian. Ini termasuk kode untuk:

  • Inisialisasi klien Amazon GameLift Servers API. Sampel menggunakan versi InitSDK() dengan parameter server untuk armada dan komputasi Anywhere Anda. Gunakan WebSocket URL, ID armada, nama komputasi (ID host), dan token otentikasi, seperti yang didefinisikan dalam topik Menyiapkan GameLift Server Amazon Armada di mana saja untuk pengujian sebelumnya.

  • Menerapkan fungsi callback untuk menanggapi permintaan dari Amazon GameLift Servers layanan, termasukOnStartGameSession,OnProcessTerminate, danonHealthCheck.

  • Panggil ProcessReady () dengan port yang ditunjuk untuk memberi tahu Amazon GameLift Servers layanan ketika proses siap untuk menyelenggarakan sesi permainan.

Kode sampel yang diberikan membangun komunikasi dengan Amazon GameLift Servers layanan. Ini juga mengimplementasikan serangkaian fungsi panggilan balik yang menanggapi permintaan dari Amazon GameLift Servers layanan. Untuk informasi selengkapnya tentang setiap fungsi dan apa yang dilakukan kode, lihat Meng inisialisasi proses server. Untuk informasi selengkapnya tentang tindakan SDK dan tipe data yang digunakan dalam kode ini, bacaSDK server C # 5.x untuk GameLift Server Amazon -- Tindakan.

Kode sampel menunjukkan cara menambahkan fungsionalitas yang diperlukan, seperti yang dijelaskan di Tambahkan Amazon GameLift Servers ke server game Anda. Untuk informasi selengkapnya tentang tindakan SDK server, lihatSDK server C # 5.x untuk GameLift Server Amazon -- Tindakan.

using System.Collections.Generic; using Aws.GameLift.Server; using UnityEngine; public class ServerSDKManualTest : MonoBehaviour { //This example is a simple integration that initializes a game server process //that is running on an Amazon GameLift Servers Anywhere fleet. void Start() { //Identify port number (hard coded here for simplicity) the game server is listening on for player connections var listeningPort = 7777; //WebSocketUrl from RegisterHost call var webSocketUrl = "wss://us-west-2.api.amazongamelift.com"; //Unique identifier for this process var processId = "myProcess"; //Unique identifier for your host that this process belongs to var hostId = "myHost"; //Unique identifier for your fleet that this host belongs to var fleetId = "myFleet"; //Authorization token for this host process var authToken = "myAuthToken"; //Server parameters are required for an Amazon GameLift Servers Anywhere fleet. //They are not required for an Amazon GameLift Servers managed EC2 fleet. ServerParameters serverParameters = new ServerParameters( webSocketUrl, processId, hostId, fleetId, authToken); //InitSDK establishes a local connection with an Amazon GameLift Servers agent //to enable further communication. var initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters); if (initSDKOutcome.Success) { //Implement callback functions ProcessParameters processParameters = new ProcessParameters( //Implement OnStartGameSession callback (gameSession) => { //Amazon GameLift Servers sends a game session activation request to the game server //with game session object containing game properties and other settings. //Here is where a game server takes action based on the game session object. //When the game server is ready to receive incoming player connections, //it invokes the server SDK call ActivateGameSession(). GameLiftServerAPI.ActivateGameSession(); }, (updateGameSession) => { //Amazon GameLift Servers sends a request when a game session is updated (such as for //FlexMatch backfill) with an updated game session object. //The game server can examine matchmakerData and handle new incoming players. //updateReason explains the purpose of the update. }, () => { //Implement callback function OnProcessTerminate //Amazon GameLift Servers invokes this callback before shutting down the instance hosting this game server. //It gives the game server a chance to save its state, communicate with services, etc., //and initiate shut down. When the game server is ready to shut down, it invokes the //server SDK call ProcessEnding() to tell Amazon GameLift Servers it is shutting down. GameLiftServerAPI.ProcessEnding(); }, () => { //Implement callback function OnHealthCheck //Amazon GameLift Servers invokes this callback approximately every 60 seconds. //A game server might want to check the health of dependencies, etc. //Then it returns health status true if healthy, false otherwise. //The game server must respond within 60 seconds, or Amazon GameLift Servers records 'false'. //In this example, the game server always reports healthy. return true; }, //The game server gets ready to report that it is ready to host game sessions //and that it will listen on port 7777 for incoming player connections. listeningPort, new LogParameters(new List<string>() { //Here, the game server tells Amazon GameLift Servers where to find game session log files. //At the end of a game session, Amazon GameLift Servers uploads everything in the specified //location and stores it in the cloud for access later. "/local/game/logs/myserver.log" })); //The game server calls ProcessReady() to tell Amazon GameLift Servers it's ready to host game sessions. var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParameters); if (processReadyOutcome.Success) { print("ProcessReady success."); } else { print("ProcessReady failure : " + processReadyOutcome.Error.ToString()); } } else { print("InitSDK failure : " + initSDKOutcome.Error.ToString()); } } void OnApplicationQuit() { //Make sure to call GameLiftServerAPI.ProcessEnding() and GameLiftServerAPI.Destroy() before terminating the server process. //These actions notify Amazon GameLift Servers that the process is terminating and frees the API client from memory. GenericOutcome processEndingOutcome = GameLiftServerAPI.ProcessEnding(); GameLiftServerAPI.Destroy(); if (processEndingOutcome.Success) { Environment.Exit(0); } else { Console.WriteLine("ProcessEnding() failed. Error: " + processEndingOutcome.Error.ToString()); Environment.Exit(-1); } } }

Langkah selanjutnya

Sekarang setelah Anda menyiapkan build server game dengan fungsionalitas minimum yang diperlukan untuk hostingAmazon GameLift Servers, pertimbangkan langkah-langkah potensial berikut ini: