Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Integrasikan Amazon GameLift Servers ke dalam proyek Unity
Pelajari cara mengintegrasikan Amazon GameLift Servers SDK for Unity ke dalam project 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 terpandu untuk menyebarkan server game Anda dengan cepat dengan pengaturan minimal, sehingga Anda dapat mencoba komponen game Anda dalam aksi. Lihat Amazon GameLift Serversplugin untuk Unity (server SDK 5.x).
Sumber daya tambahan:
Instal SDK for Unity server
Dapatkan sumber terbuka Amazon GameLift Servers untuk Unity dari GitHub
Siapkan armada Amazon GameLift Servers Anywhere untuk pengujian
Anda dapat mengatur workstation pengembangan Anda sebagai armada hosting Amazon GameLift Servers Anywhere untuk menguji integrasi Anda Amazon GameLift Servers secara berulang. Dengan pengaturan ini, Anda dapat memulai proses server game di workstation Anda, mengirim permintaan bergabung pemain atau perjodohan Amazon GameLift Servers untuk memulai sesi permainan, dan menghubungkan klien ke sesi permainan baru. Dengan workstation Anda sendiri yang diatur sebagai server hosting, Anda dapat memantau semua aspek integrasi game Anda. Amazon GameLift Servers
Untuk petunjuk tentang pengaturan workstation Anda, lihat Siapkan pengujian lokal dengan Amazon GameLift Servers Dimanapun untuk menyelesaikan langkah-langkah berikut:
Buat lokasi khusus untuk workstation Anda.
Buat armada Amazon GameLift Servers Anywhere dengan lokasi kustom baru Anda. Jika berhasil, permintaan ini mengembalikan ID armada. Catat nilai ini, karena Anda akan membutuhkannya nanti.
Daftarkan workstation Anda sebagai komputasi di armada Anywhere yang baru. Berikan nama komputasi yang unik dan tentukan alamat IP untuk workstation Anda. Jika berhasil, permintaan ini mengembalikan titik akhir SDK layanan, dalam bentuk URL. WebSocket Catat nilai ini, karena Anda akan membutuhkannya nanti.
Hasilkan token otentikasi untuk komputasi workstation Anda. Otentikasi berumur pendek ini mencakup token dan tanggal kedaluwarsa. Server game Anda menggunakannya untuk mengautentikasi komunikasi dengan Amazon GameLift Servers layanan. Simpan otentikasi pada komputasi workstation Anda sehingga proses server game Anda yang sedang berjalan dapat mengaksesnya.
Tambahkan kode Amazon GameLift Servers server ke proyek Unity Anda
Server game Anda berkomunikasi dengan Amazon GameLift Servers layanan untuk menerima instruksi dan melaporkan status yang sedang berlangsung. Untuk mencapai hal 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 mengilustrasikan inisialisasi server game sederhana dengan. Amazon GameLift Servers Contohnya mengasumsikan bahwa server game berjalan pada armada Amazon GameLift Servers Anywhere 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 sebelumnya. Siapkan armada Amazon GameLift Servers Anywhere untuk pengujian -
Menerapkan fungsi callback untuk menanggapi permintaan dari Amazon GameLift Servers layanan, termasuk
OnStartGameSession
,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 menetapkan komunikasi dengan Amazon GameLift Servers layanan. Ini juga mengimplementasikan satu set fungsi callback yang merespons permintaan dari layanan. Amazon GameLift Servers Untuk informasi selengkapnya tentang setiap fungsi dan apa yang dilakukan kode, lihat Menginisialisasi proses server. Untuk informasi selengkapnya tentang tindakan SDK dan tipe data yang digunakan dalam kode ini, bacaC# server SDK 5.x untuk Amazon GameLift Servers -- Tindakan.
Kode contoh menunjukkan cara menambahkan fungsionalitas yang diperlukan, seperti yang dijelaskan dalam Tambahkan Amazon GameLift Servers ke server game Anda. Untuk informasi selengkapnya tentang tindakan SDK server, lihat. C# server SDK 5.x untuk Amazon GameLift Servers -- 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 selanjutnya yang potensial ini:
-
Menyebarkan server game terintegrasi Anda untuk dan pengujian dan pengembangan. Dengan armada Anywhere, Anda dapat mengatur mesin lokal Anda sebagai sumber daya hosting dan menggunakannya untuk menguji server game dan koneksi klien game Anda. Untuk hosting berbasis cloud, terapkan server game Anda ke armada kontainer terkelola EC2 atau terkelola. Lihat topik ini untuk panduan:
-
Sesuaikan integrasi server game Anda dengan menambahkan fitur opsional. Misalnya, Anda mungkin ingin menambahkan sesi pemain dengan pemain unik IDs, menyiapkan pengisian ulang perjodohan, atau mengelola akses server game ke AWS sumber daya Anda yang lain (seperti database atau layanan penyimpanan konten). Lihat topik ini untuk panduan:
-
Sesuaikan komponen klien game Anda untuk meminta sesi game, menerima informasi koneksi, dan terhubung langsung ke server game untuk memainkan game. Lihat topik ini untuk panduan: