View a markdown version of this page

Plugin untuk Unity: Terapkan game Anda ke armada kontainer terkelola - GameLift Server Amazon

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

Plugin untuk Unity: Terapkan game Anda ke armada kontainer terkelola

Gunakan alur kerja plugin terpandu ini untuk membuat gambar kontainer untuk server game Anda dan menyebarkannya ke solusi hosting berbasis kontainer. Ketika Anda berhasil menyelesaikan alur kerja ini, server game kontainer Anda berjalan di cloud, dan Anda dapat menggunakan plugin untuk memulai klien game, terhubung ke sesi game, dan memainkan game.

Sebelum Anda mulai

Alur kerja ini mengasumsikan bahwa Anda telah menyelesaikan tugas berikut.

  • Integrasikan kode server game Anda dengan SDK Amazon GameLift Servers server. server permainan kami yang dihosting harus dapat berkomunikasi dengan Amazon GameLift Servers layanan sehingga dapat menanggapi permintaan untuk memulai sesi permainan baru dan melaporkan status sesi permainan. Jika Anda belum menyelesaikan tugas ini, sebaiknya ikuti alur kerja plugin Host with Anywhere terlebih dahulu. Untuk panduan menyiapkan kode server game Anda, lihatIntegrasikan kode server Anda. Untuk armada kontainer terkelola, Anda harus mengintegrasikan game Anda dengan SDK server versi 5.2 atau lebih tinggi.

    catatan

    Jika Anda mengimpor game sampel, tugas ini sudah dilakukan untuk Anda.

  • Kemas server game Anda yang dapat dieksekusi untuk dijalankan di Linux.

  • Kumpulkan file untuk digunakan dengan build server game Anda. Pada mesin lokal Anda, buat direktori kerja untuk mengatur file, yang akan dibangun ke dalam image wadah server game Anda. Ini mungkin termasuk dependensi game, skrip untuk meluncurkan server game dan proses lain saat memulai wadah, dll.

  • Integrasikan kode klien game Anda denganAmazon GameLift Servers. Salah satu cara untuk menyelesaikan tugas ini adalah dengan menambahkan aset sampel (disertakan dengan plugin) yang sudah terintegrasi. Untuk panduan menyiapkan kode klien game Anda, lihatIntegrasikan kode klien Anda.

  • Instal Docker di mesin lokal Anda. Anda memerlukan alat ini diinstal jika Anda ingin plugin membuat gambar wadah untuk Anda dan mendorongnya ke repositori ECR. Atau Anda dapat melakukan tugas-tugas ini secara manual dan menginstruksikan plugin untuk menggunakan gambar kontainer yang ada. Untuk informasi selengkapnya tentang membuat gambar secara manual, lihatMembangun gambar kontainer untuk Amazon GameLift Servers.

Untuk memulai GameLift Server Amazon alur kerja kontainer terkelola:
  • Di bilah alat utama editor Unity, pilih Amazon GameLift Servers menu, dan pilih Man aged Containers. Tindakan ini membuka halaman plugin Host with Managed Containers, yang menyajikan proses langkah demi langkah untuk membuat gambar kontainer dengan build server game Anda, menyebarkannya ke armada kontainer, dan meluncurkan game Anda.

Langkah 0: Tetapkan profil Anda

Bagian ini menampilkan profil pengguna yang Anda pilih saat ini. Verifikasi bahwa profil pengguna saat ini adalah profil yang ingin Anda gunakan untuk alur kerja ini. Semua sumber daya yang Anda buat dalam alur kerja ini dikaitkan dengan AWS akun profil dan ditempatkan di Wil AWS ayah default profil. Izin pengguna profil menentukan akses Anda ke AWS sumber daya dan tindakan.

Anda mungkin perlu mengubah profil pengguna yang dipilih jika:

  • Tidak ada profil yang dipilih saat ini.

  • Anda ingin memilih profil yang berbeda atau membuat profil baru.

  • Anda perlu melakukan bootstrap profil yang dipilih (jika status bootstrap tidak aktif).

Untuk mengatur atau mengubah profil pengguna yang dipilih
  • Di Amazon GameLift Servers menu, pilih Open AWS Access Credentials.

Langkah 1: Nilai kesiapan wadah

Sebelum menyebarkan server game Anda ke armada kontainer, Anda harus mengemasnya ke dalam gambar kontainer dan menyimpannya di repositori Amazon ECR. Plugin dapat menyelesaikan tugas-tugas ini untuk Anda atau Anda dapat melakukan tugas-tugas ini secara manual. Pada langkah ini, berikan informasi tentang status gambar kontainer Anda dan repositori ECR.

Gunakan pertanyaan penilaian untuk memberi tahu plugin langkah apa yang perlu diambil:

  • Buat gambar kontainer baru. Jika Anda memilih opsi ini, langkah selanjutnya akan meminta Anda untuk lokasi direktori build server game Anda dan build yang dapat dieksekusi. Plugin menggunakan template Dockerfile (disediakan olehAmazon GameLift Servers) dan secara otomatis mengonfigurasinya untuk game Anda. Anda dapat melihat template diMembangun gambar kontainer untuk Amazon GameLift Servers. Setelah memilih opsi ini, tunjukkan di mana Anda ingin plugin menyimpan gambar baru:

    • Buat repositori Amazon ECR baru dan dorong gambar wadah ke sana. Plugin membuat repo ECR pribadi menggunakan AWS akun dan default Wilayah AWS di profil pengguna yang Anda pilih.

    • Dorong gambar kontainer ke repositori Amazon ECR yang dibuat sebelumnya. Jika Anda memilih opsi ini, langkah selanjutnya akan meminta Anda untuk memilih repositori Amazon ECR yang ada dari daftar. Daftar ini mencakup semua repositori Amazon ECR untuk AWS akun dan default Wilayah AWS di profil pengguna yang Anda pilih. Anda dapat memilih repositori publik atau pribadi.

  • Gunakan gambar kontainer yang ada. Jika Anda telah membuat gambar secara manual, kami sarankan Anda menggunakan template Dockerfile yang disediakan olehAmazon GameLift Servers, yang tersedia di. Membangun gambar kontainer untuk Amazon GameLift Servers Setelah memilih opsi ini, tunjukkan di mana gambar berada.

    • Docker-generated Gambar yang disimpan secara lokal. Jika Anda memilih opsi ini, plugin membuat repositori pribadi Amazon ECR baru dan mendorong file gambar lokal ke sana. Langkah selanjutnya akan meminta Anda untuk ID gambar, yang digunakan plugin untuk menemukan file gambar.

    • Gambar wadah yang sudah disimpan di repositori Amazon ECR. Jika Anda memilih opsi ini, langkah selanjutnya akan meminta Anda untuk memilih repositori Amazon ECR yang ada dan gambar dari daftar. Daftar ini mencakup semua repositori Amazon ECR untuk AWS akun dan default Wilayah AWS di profil pengguna yang Anda pilih. Anda dapat memilih repositori publik atau pribadi.

    • Unity 6.3 di Linux membutuhkan glibc 2.35. Amazon Linux 2023 menyertakan glibc 2.34. Template Dockerfile disediakan di bawah ini yang menangani pembuatan glibc 2.35 dari sumber dan mengonfigurasi binari Unity untuk menggunakan glibc 2.35.

Template ini berisi instruksi minimum yang dibutuhkan wadah server game untuk dapat digunakan dalam Amazon GameLift Servers armada. Ubah konten sesuai kebutuhan untuk server game Anda.

# Base image # ---------- # Add the base image that you want to use over here, # Make sure to use an image with the same architecture as the # Instance type you are planning to use on your fleets. FROM public.ecr.aws/amazonlinux/amazonlinux # Game build directory # -------------------- # Add your game build directory in the 'GAME_BUILD_DIRECTORY' env variable below. # # Game executable # --------------- # Add the relative path to your executable in the 'GAME_EXECUTABLE' env variable below. # The game build provided over here needs to be integrated with gamelift server sdk. # This template assumes that the executable path is relative to the game build directory. # # Launch parameters # ----------------- # Add any launch parameters to pass into your executable in the 'LAUNCH_PARAMS' env variable below. # # Default directory # ----------------- # The value provided in 'HOME_DIR' below will be where the game executable and logs exist. # ARG GAME_BUILD_DIRECTORY ARG GAME_EXECUTABLE ARG LAUNCH_PARAMS ENV GAME_BUILD_DIRECTORY=$GAME_BUILD_DIRECTORY \ GAME_EXECUTABLE=$GAME_EXECUTABLE \ LAUNCH_PARAMS=$LAUNCH_PARAMS \ HOME_DIR="/local/game" # install dependencies as necessary RUN yum install -y shadow-utils bison wget gcc make patchelf tar gzip && \ yum clean all && rm -fr /var/cache RUN mkdir -p $HOME_DIR COPY .$GAME_BUILD_DIRECTORY/ $HOME_DIR # Change directory to home WORKDIR $HOME_DIR # Build glibc 2.35 and patch Unity binaries RUN GLIBC_VERSION="2.35" && \ INSTALL_PREFIX="/opt/glibc-${GLIBC_VERSION}" && \ ARCH=$(uname -m) && \ if [ "$ARCH" = "x86_64" ]; then \ INTERPRETER="${INSTALL_PREFIX}/lib/ld-linux-x86-64.so.2"; \ MONO_ARCH="x86_64"; \ elif [ "$ARCH" = "aarch64" ]; then \ INTERPRETER="${INSTALL_PREFIX}/lib/ld-linux-aarch64.so.1"; \ MONO_ARCH="aarch64"; \ else \ echo "ERROR: Unsupported architecture: $ARCH"; exit 1; \ fi && \ cd /tmp && \ wget -q "https://ftp.gnu.org/gnu/glibc/glibc-${GLIBC_VERSION}.tar.gz" && \ tar -xzf "glibc-${GLIBC_VERSION}.tar.gz" && \ cd "glibc-${GLIBC_VERSION}" && mkdir glibc-build && cd glibc-build && \ touch /etc/ld.so.conf && \ ../configure --prefix="${INSTALL_PREFIX}" && \ make -s all && make -s install && \ cd / && rm -rf /tmp/glibc-* && \ GLIBC_LIB="${INSTALL_PREFIX}/lib" && \ EXECUTABLE_NAME=$(echo "$GAME_EXECUTABLE" | sed 's/\.[^.]*$//') && \ DATA_DIR="$HOME_DIR/${EXECUTABLE_NAME}_Data" && \ patchelf --set-interpreter "$INTERPRETER" "$HOME_DIR/$GAME_EXECUTABLE" && \ patchelf --set-rpath "$GLIBC_LIB:$HOME_DIR:/lib64:$DATA_DIR/MonoBleedingEdge/$MONO_ARCH" "$HOME_DIR/$GAME_EXECUTABLE" && \ patchelf --set-rpath "$GLIBC_LIB:/lib64" "$HOME_DIR/UnityPlayer.so" && \ MONO_LIB="$DATA_DIR/MonoBleedingEdge/$MONO_ARCH/libmonobdwgc-2.0.so" && \ if [ -f "$MONO_LIB" ]; then patchelf --set-rpath "$GLIBC_LIB:/lib64" "$MONO_LIB"; fi && \ GAME_ASSEMBLY="$HOME_DIR/GameAssembly.so" && \ if [ -f "$GAME_ASSEMBLY" ]; then patchelf --set-rpath "$GLIBC_LIB:/lib64" "$GAME_ASSEMBLY"; fi RUN useradd -m gamescale && \ echo "gamescale ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers && \ chown -R gamescale:gamescale $HOME_DIR # Add permissions to game build RUN chmod +x ./$GAME_EXECUTABLE USER gamescale # Check directory before starting the container RUN ls -lhrt . # Check path before starting the container RUN echo $PATH # Start the game build ENTRYPOINT ["/bin/sh", "-c", "./$GAME_EXECUTABLE $LAUNCH_PARAMS"]

Langkah 2: Konfigurasikan penyebaran gambar

Pada langkah ini, berikan informasi yang diperlukan plugin untuk menyebarkan gambar kontainer Anda ke armada kontainer. Langkah ini meminta informasi berikut:

  • Lokasi build server game Anda, gambar kontainer, atau repositori Amazon ECR, berdasarkan pilihan Anda di Langkah 1.

  • Skenario yang akan digunakan untuk penerapan kontainer terkelola Anda.

  • Pengaturan penerapan opsional. Bagian ini memiliki pengaturan konfigurasi yang digunakan plugin secara default. Anda dapat memodifikasi ini atau mempertahankan nilai default

    • Nama game diatur ke nama proyek game Anda secara default. Semua AWS sumber daya yang dibuat plugin mereferensikan nilai nama game.

    • Rentang port, batas memori, dan batas vCPU adalah pengaturan konfigurasi untuk armada kontainer. Untuk informasi selengkapnya tentang menyesuaikan nilai-nilai ini, lihat Konfigurasikan koneksi jaringan untuk rentang port koneksi, dan Tetapkan batas sumber daya untuk batas sumber daya.

    • Tag gambar kontainer digunakan untuk mengkategorikan gambar kontainer Anda di Amazon ECR. Nilai default-nya adalah unity-gamelift-plugin.

Opsi skenario penerapan

Skenario ini menyebarkan server game Anda ke armada kontainer tunggal. Ini adalah titik awal yang baik untuk menguji integrasi server Anda dengan AWS dan konfigurasi kontainer Anda. Ini menyebarkan sumber daya berikut.

  • Amazon GameLift Serversdefinisi grup kontainer menjelaskan cara menyebarkan dan menjalankan image kontainer Anda pada armada kontainer.

  • Amazon GameLift Serversarmada kontainer (On-Demand) dengan wadah server game Anda diinstal dan berjalan, dengan alias.

  • Kumpulan pengguna dan klien Amazon Cognito untuk memungkinkan pemain mengotentikasi dan memulai permainan.

  • Otorisasi API Gateway yang menghubungkan kumpulan pengguna dengan API.

  • Daftar kontrol akses web (ACL) untuk membatasi panggilan pemain yang berlebihan ke API Gateway.

  • Layanan backend untuk membuat permintaan ke Amazon GameLift Servers layanan atas nama klien game, seperti untuk meminta sesi permainan dan bergabung dengan game:

    • Fungsi API Gateway + Lambda bagi pemain untuk meminta slot sesi permainan. Fungsi ini memanggil CreateGameSession() jika tidak ada slot terbuka yang tersedia.

    • Fungsi API Gateway + Lambda bagi pemain untuk mendapatkan info koneksi untuk permintaan game mereka.

Skenario ini menyebarkan server game Anda ke armada kontainer, mengonfigurasi penempatan sesi game, dan mengatur perjodohan. FlexMatch Skenario ini berguna ketika Anda siap untuk mulai merancang matchmaker khusus untuk solusi hosting Anda. Gunakan skenario ini untuk membuat sumber daya dasar untuk solusi ini, yang dapat Anda sesuaikan nanti sesuai kebutuhan. Ini menyebarkan sumber daya berikut:

  • Amazon GameLift Serversdefinisi grup kontainer yang menjelaskan cara menyebarkan dan menjalankan image kontainer Anda pada armada kontainer.

  • Amazon GameLift Serversarmada kontainer (On-Demand) dengan wadah server game Anda diinstal dan berjalan, dengan alias.

  • FlexMatchkonfigurasi perjodohan dan aturan perjodohan diatur untuk menerima permintaan pemain dan membentuk pertandingan.

  • Amazon GameLift Serversantrian sesi permainan yang memenuhi permintaan untuk pertandingan yang diusulkan dengan menemukan sumber daya hosting terbaik (berdasarkan kelangsungan hidup, biaya, latensi pemain, dll.) Dan memulai sesi permainan.

  • Kumpulan pengguna dan klien Amazon Cognito untuk memungkinkan pemain mengotentikasi dan memulai permainan.

  • Otorisasi API Gateway yang menghubungkan kumpulan pengguna dengan API.

  • Daftar kontrol akses web (ACL) untuk membatasi panggilan pemain yang berlebihan ke API Gateway.

  • Layanan backend untuk membuat permintaan ke Amazon GameLift Servers layanan atas nama klien game, seperti untuk meminta sesi permainan dan bergabung dengan game:

    • Fungsi API Gateway + Lambda bagi pemain untuk meminta slot sesi permainan. Fungsi ini memanggil StartMatchmaking() jika tidak ada slot terbuka yang tersedia.

    • Fungsi API Gateway + Lambda bagi pemain untuk mendapatkan info koneksi untuk permintaan game mereka.

  • Tabel DynamoDB untuk menyimpan tiket perjodohan untuk pemain dan informasi sesi permainan.

  • Topik Amazon SNS+fungsi Lambda untuk menangani GameSessionQueue peristiwa.

Menyebarkan armada kontainer

Setelah konfigurasi armada Anda selesai, pilih tombol De ploy container fleet untuk memulai penerapan. Proses ini dapat memakan waktu beberapa menit sementara plugin membuat gambar kontainer dan mendorongnya ke ECR, menyediakan sumber daya hosting untuk armada kontainer, menyebarkan armada dan AWS sumber daya lainnya untuk skenario solusi hosting yang dipilih.

Saat memulai penerapan, Anda dapat melacak kemajuan setiap langkah. Bergantung pada konfigurasi Anda, langkah-langkahnya mungkin termasuk yang berikut:

  • Mengkonfigurasi gambar kontainer

  • Membuat repositori Amazon ECR

  • Membangun citra dan mendorong ke Amazon ECR

  • Membuat definisi grup kontainer

  • Membuat armada kontainer

Untuk informasi penerapan yang lebih rinci, pilih Lihat di Konsol AWS Manajemen. Ketika armada kontainer mencapai status aktif, armada secara aktif menjalankan kontainer dengan proses server yang siap untuk menjadi tuan rumah sesi permainan.

Ketika penerapan selesai, Anda memiliki armada kontainer yang berfungsi yang siap untuk menyelenggarakan sesi game dan menerima koneksi pemain.

Anda tidak dapat menghentikan penerapan yang sedang berlangsung. Jika penerapan memasuki kondisi buruk atau gagal, Anda dapat memulai kembali dengan menggunakan opsi Reset penerapan.

Luncurkan klien

Pada titik ini, Anda telah menyelesaikan semua tugas untuk meluncurkan dan memainkan game multipemain Anda yang dihostingAmazon GameLift Servers. Untuk memainkan game Anda, pilih Mulai Klien untuk meluncurkan instance lokal klien game Anda.

  • Jika Anda menerapkan skenario armada tunggal, buka satu contoh klien game Anda dengan satu pemain dan masukkan peta server untuk bergerak. Anda dapat membuka instance kedua dari klien game untuk menambahkan pemain kedua ke peta game server yang sama.

  • Jika Anda menerapkan FlexMatch skenario, solusi hosting menunggu setidaknya dua klien game untuk membuat permintaan perjodohan. Buka setidaknya dua contoh klien game Anda dengan satu pemain. Kedua pemain akan dicocokkan dan diminta untuk bergabung dengan sesi permainan untuk pertandingan.

Memperbarui armada kontainer

Jika Anda berhasil menerapkan solusi hosting kontainer terkelola, Anda dapat menggunakan fitur Per barui penerapan. Opsi ini memungkinkan Anda memperbarui pengaturan konfigurasi untuk armada kontainer yang digunakan, tanpa harus membuat armada baru.

Saat memperbarui penerapan, Anda dapat menerapkan image kontainer dengan build server game yang berbeda, mengubah repositori Amazon ECR, memilih skenario penerapan yang berbeda, dan menyesuaikan pengaturan konfigurasi opsional.

Saat Anda siap menerapkan perubahan, pilih Perbarui. Waktu yang diperlukan untuk pembaruan penerapan mirip dengan penerapan penuh. Untuk informasi penerapan terperinci, pilih Lihat di Konsol AWS Manajemen.

Bersihkan sumber daya yang digunakan

Sebagai praktik terbaik, bersihkan AWS sumber daya untuk solusi kontainer terkelola Anda segera setelah Anda tidak lagi membutuhkannya. Anda mungkin terus mengeluarkan biaya untuk sumber daya ini jika Anda tidak menghapusnya.

Hapus sumber daya berikut:

  • Tumpukan sumber daya kontainer terkelola. Sumber daya dalam tumpukan ini tergantung pada skenario penerapan yang Anda pilih. Untuk menghapus seluruh tumpukan, gunakan CloudFormation konsol. Tumpukan yang dihasilkan dari Amazon GameLift Servers plugin menggunakan konvensi penamaan berikut:GameLiftPluginForUnity-{GameName}-Containers. Tunggu proses penghapusan tumpukan selesai sebelum Anda memulai penerapan container terkelola baru di plugin. Untuk informasi selengkapnya, lihat Menghapus tumpukan dari CloudFormation konsol.

  • Repositori Amazon ECR. Jika Anda menggunakan plugin untuk membuat repositori untuk gambar kontainer Anda, Anda mungkin ingin menghapus repositori yang tidak lagi diperlukan. Anda tidak perlu menghapus repositori sebelum mengatur ulang penyebaran kontainer terkelola. Jika Anda memperbarui atau mengatur ulang penerapan, plugin akan secara otomatis menggunakan repositori yang sama kecuali diarahkan untuk menggunakan yang lain. Untuk informasi selengkapnya, lihat Menghapus repositori pribadi di Amazon ECR.