Integrasikan Amazon GameLift ke dalam proyek Unity - Amazon GameLift

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

Integrasikan Amazon GameLift ke dalam proyek Unity

Topik ini menjelaskan cara menyiapkan plugin Amazon GameLift C# Server SDK untuk Unity dan mengintegrasikannya ke dalam proyek game Anda.

Sumber daya tambahan:

Prasyarat

Untuk menggunakan plugin SDK server Amazon GameLift C # untuk Unity, Anda memerlukan komponen berikut:

Mengatur UnityNuGet

Jika Anda belum UnityNuGet menyiapkan proyek game Anda, gunakan langkah-langkah berikut untuk menginstal alat menggunakan manajer paket Unity. Atau, Anda dapat menggunakan NuGet CLI untuk mengunduh DLL secara manual. Untuk informasi selengkapnya, lihat SDK server Amazon GameLift C# untuk Unity. README

Untuk mengintegrasikan UnityNuGet ke dalam proyek game Anda
  1. Dengan proyek Anda terbuka di Unity Editor, buka menu utama dan pilih Edit, Pengaturan Proyek. Dari opsi, pilih bagian Package Manager dan buka grup Scoped Registries.

  2. Pilih tombol + dan masukkan nilai berikut untuk UnityNuGet registri cakupan:

    Name: Unity NuGet URL: https://unitynuget-registry.azurewebsites.net Scope(s): org.nuget
  3. Untuk pengguna versi Unity 2021:

    Setelah menyiapkan UnityNuGet, periksa Assembly Version Validation kesalahan yang ditampilkan di konsol Unity. Kesalahan ini terjadi jika pengalihan pengikatan untuk rakitan yang diberi nama kuat dalam NuGet paket tidak diselesaikan dengan benar ke jalur dalam proyek Unity Anda. Untuk mengatasi masalah ini, konfigurasikan validasi versi perakitan Unity:

    1. Di Editor Unity, buka menu utama dan pilih Edit, Pengaturan Proyek, dan buka bagian Player.

    2. Hapus pilihan opsi Validasi Versi Majelis.

Pasang plugin

Gunakan prosedur berikut untuk menginstal plugin SDK server Amazon GameLift C # untuk Unity dan mengkonfigurasi log4net logging.

Untuk memasang plugin
  1. Dengan proyek Anda terbuka di Unity Editor, buka menu utama dan pilih Window, Package Manager.

  2. Pilih tombol + untuk menambahkan paket baru. Pilih opsi Tambahkan paket dari tarball.

  3. Di Pilih paket pada disk, cari plugin Amazon GameLift C# Server SDK untuk file unduhan Unity, dan pilih file Amazon GameLift Server SDK.tgz. Pilih Buka untuk menginstal plugin.

SDK GameLift server Amazon menggunakan kerangka log4net untuk mengeluarkan pesan log. Ini dikonfigurasi untuk menampilkan pesan ke terminal server build secara default, tetapi Unity memerlukan konfigurasi untuk menambahkan dukungan pencatatan file. Anda dapat menambahkan dukungan ini ke project Anda dengan mengimpor sampel yang disediakan di dalam paket Amazon GameLift Server SDK. Gunakan prosedur berikut untuk menambahkan sampel dan mengkonfigurasi log4net:

Untuk mengkonfigurasi log4net untuk output file
  1. Dengan proyek Anda terbuka di Unity Editor, buka menu utama dan pilih Window, Package Manager.

  2. Dari menu tarik-turun, pilih Packages: In Project, lalu pilih Amazon GameLift Server SDK dari daftar paket. Ini membuka detail paket.

  3. Dalam detail paket, pilih opsi grup Sampel dan tekan Impor.

  4. log4net.configFile dan LoggingConfiguration.cs skrip yang menyertainya secara otomatis mengeksekusi konfigurasi, yang sekarang diatur di folder proyek. Assets/Samples

    catatan

    Jika Anda perlu memindahkan log4net.config file Anda ke folder lain dalam proyek, maka Anda juga harus memperbarui filepath file konfigurasi dalam skrip LoggingConfiguration.cs dengan jalur baru. Untuk informasi selengkapnya, lihat manual log4net tentang mengonfigurasi log4net.

Untuk petunjuk lebih rinci dan panduan pengujian, lihat yang README terletak di download plugin.

Siapkan GameLift Anywhere armada Amazon untuk pengujian

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

Untuk petunjuk tentang pengaturan workstation Anda, lihat Siapkan pengujian lokal dengan Amazon GameLift Anywhere untuk menyelesaikan langkah-langkah berikut:

  1. Buat lokasi khusus untuk workstation Anda.

  2. Buat GameLift Anywhere armada Amazon dengan lokasi kustom 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 baruAnywhere. 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.

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

Tambahkan kode GameLift server Amazon ke project Unity Anda

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

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

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

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

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

Kode yang disajikan dalam topik ini membangun komunikasi dengan GameLift layanan Amazon dan. Hal ini juga mengimplementasikan satu set fungsi callback yang menanggapi permintaan dari. 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, bacaReferensi SDK GameLift server Amazon untuk C #.

Contoh ini menunjukkan cara menambahkan semua elemen yang diperlukan, seperti yang dijelaskan dalam Tambahkan Amazon GameLift ke server game Anda. Ini termasuk:

Untuk informasi selengkapnya tentang menambahkan GameLift fungsionalitas Amazon, lihat topik berikut:

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 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 a GameLift Anywhere fleet. //They are not required for a GameLift managed EC2 fleet. ServerParameters serverParameters = new ServerParameters( webSocketUrl, processId, hostId, fleetId, authToken); //InitSDK establishes a local connection with an Amazon GameLift agent //to enable further communication. var initSDKOutcome = GameLiftServerAPI.InitSDK(serverParameters); if (initSDKOutcome.Success) { //Implement callback functions ProcessParameters processParameters = new ProcessParameters( //Implement OnStartGameSession callback (gameSession) => { //GameLift 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) => { //GameLift 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 //GameLift 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 GameLift it is shutting down. GameLiftServerAPI.ProcessEnding(); }, () => { //Implement callback function OnHealthCheck //GameLift 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 GameLift 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 GameLift where to find game session log files. //At the end of a game session, GameLift 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 GameLift 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 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); } } }

Sumber daya tambahan

Gunakan sumber daya berikut untuk menguji server game Anda dan memperluas fungsionalitasnya: