Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Definisi
Ker AWS Well-Architected angka ini didasarkan pada enam pilar: keunggulan operasional, keamanan, keandalan, efisiensi kinerja, pengoptimalan biaya, dan keberlanjutan. AWS menyediakan beberapa komponen inti yang memungkinkan Anda merancang arsitektur canggih untuk beban kerja game Anda. Pada bagian ini, kami akan menyajikan ikhtisar definisi kunci.
Untuk tujuan makalah ini, arsitektur game mencakup infrastruktur teknis backend yang diperlukan untuk membangun dan mengoperasikan game. Beberapa game mungkin tidak memiliki fitur sosial, multipemain, atau online lainnya dan mungkin tidak memerlukan penggunaan aspek-aspek tertentu dari infrastruktur teknis backend yang dijelaskan dalam makalah ini. Untuk diskusi terperinci tentang berbagai jenis beban kerja yang sering digunakan untuk mendukung arsitektur game, lihat Skenario.
AWS Cloud Infrastruktur dibangun di sekitar Wilayah dan Zona Ketersediaan.
-
Wil ayah adalah lokasi fisik di dunia di mana kami memiliki beberapa Zona Ketersediaan.
-
Zona Ketersediaan terdiri dari satu atau lebih pusat data terpisah, masing-masing dengan daya redundan, jaringan, dan konektivitas, ditempatkan di fasilitas terpisah.
Bergantung pada karakteristik permainan Anda, Anda mungkin ingin menerapkan komponen tertentu dari arsitektur game Anda ke beberapa Wilayah karena alasan seperti meningkatkan kinerja pemain, atau untuk memberikan pengalaman khusus bagi pemain tergantung pada lokasi mereka.
Ada banyak jenis permainan yang berbeda, dan infrastruktur teknis backend yang diperlukan untuk mendukung permainan berbeda tergantung pada jenis game yang sedang dikembangkan. Misalnya, jenis permainan populer mungkin termasuk penembak orang pertama (FPS), permainan peran (RPG), game online multipemain masif (MMOG), battle royales (BR), game olahraga, game puzzle, dan banyak lagi. Ada juga mode interaksi permainan yang berbeda yang mempengaruhi arsitektur permainan, seperti permainan berbasis giliran dan simultan, dengan karakteristik kinerja yang berbeda.
Game dikembangkan untuk dimainkan pada satu atau lebih sistem game termasuk desktop, web, seluler, konsol, dan mode interaksi yang lebih baru seperti augmented reality (AR), virtual reality (VR), dan solusi streaming game. Game biasanya mendukung gameplay lintas sistem, yang berarti bahwa pemain dapat menyimpan perkembangan game mereka dan melanjutkan gameplay di sistem lain, serta memulai sesi gameplay dengan pemain di sistem lain.
Monetisasi video game memungkinkan penerbit game menghasilkan pendapatan menggunakan strategi yang berbeda seperti iklan, pembelian game berbasis digital dan ritel, pembelian konten yang dapat diunduh (DLC) dalam game yang dikenal sebagai transaksi mikro, dan melalui langganan berbayar yang diperlukan untuk memainkan game. Beberapa indikator kinerja utama (KPI) yang paling umum di industri game meliputi:
-
Pengguna aktif harian (DAU)
-
Pengguna aktif bulanan (MAU)
-
Pengguna bersamaan (CCU)
-
Durasi sesi
-
Biaya per pemasangan (CPI)
-
Nilai seumur hidup pemain (LTV)
-
Pendapatan rata-rata per pengguna (ARPU)
Sistem permainan
Video game dikembangkan untuk dimainkan pada sistem game yang menyediakan kontrol input klien, grafis, perangkat lunak klien (dikenal sebagai klien game) dan perangkat keras, dan dalam beberapa kasus fitur eksklusif sistem untuk mendukung gameplay.
Sistem game umumnya dipisahkan ke dalam kategori berikut:
-
Kon sol: sistem Purpose-built hiburan yang dirancang untuk bermain game, termasuk contoh populer seperti Sony PlayStation, Microsoft Xbox, dan Nintendo Switch. Konsol menyediakan kemampuan untuk bermain game dengan menginstal konten game fisik atau didistribusikan secara digital ke perangkat keras konsol yang diproduksi oleh penyedia sistem game. Dalam definisi ini, konsol dapat berupa genggam atau stasioner dan dimaksudkan untuk digunakan dalam skenario hiburan rumah.
-
Komputer pribadi (PC): Game yang dimainkan menggunakan perangkat lunak komputer yang diinstal ke mesin klien yang dapat disesuaikan oleh pemain. Untuk alasan ini, game PC populer di kalangan pemain karena fleksibilitas dan kontrol yang diberikannya.
-
Web: Game yang dirancang untuk dimainkan menggunakan browser web dan yang biasanya memberikan manfaat memungkinkan pemain mengakses game terlepas dari sistem operasi mereka.
-
Mobile: Game yang dikembangkan untuk dimainkan di ponsel, biasanya sistem operasi smartphone. Game seluler biasanya diunduh dari toko aplikasi digital dan diinstal ke telepon.
Selain sistem yang disebutkan sebelumnya, ada juga sistem yang baru lahir yang masih relatif baru dan berkembang dan memiliki pangsa pasar yang jauh lebih kecil dibandingkan dengan sistem yang lebih dominan. Contoh sistem game dalam kategori ini termasuk AR, VR, dan streaming game, kadang-kadang disebut sebagai cloud gaming.
Streaming game melibatkan rendering gameplay di cloud dan streaming ke thin client, biasanya browser. Streaming game memungkinkan pemain memainkan game yang seluruhnya di-host dari jarak jauh, biasanya di cloud oleh penyedia layanan streaming game. Dalam streaming game, pemain terhubung ke game berbasis cloud melalui browser atau klien tipis yang disediakan oleh penyedia layanan game cloud (sistem game).
Server permainan
Server game mewakili salah satu aspek terpenting dari infrastruktur komputasi untuk game Anda. Server game, kadang-kadang disebut sebagai server game khusus, digunakan saat mengembangkan game multipemain atau ketika pemrosesan otoritatif server dari acara gameplay diperlukan. Server permainan berada di pusat arsitektur game, berfungsi sebagai lokasi di mana logika inti berjalan, yang mencakup mengelola status pemain dan permainan serta mengelola interaksi antara klien game yang terhubung dan server game. Server permainan biasanya merupakan salah satu aspek yang paling sensitif terhadap kinerja dari arsitektur game karena bertanggung jawab untuk memproses input dari klien game pemain dan mendistribusikannya dengan benar ke pemain lain yang terhubung secara real-time. Server permainan yang berkinerja buruk memengaruhi kinerja keseluruhan pengalaman permainan. Oleh karena itu, Anda harus mengoptimalkan kinerja server game dan menyediakan kapasitas yang cukup, terutama pada peluncuran game atau periode puncak gameplay.
Untuk tujuan dokumen ini, server game atau instance server game mengacu pada komputasi, seperti mesin virtual, yang menghosting satu atau lebih proses server game. Proses server game mewakili satu contoh pembuatan server game Anda yang menghosting sesi game, yang merupakan contoh dari game Anda yang sedang berjalan yang dapat dihubungkan pemain melalui sesi pemain. Untuk alasan ini, kita sering merujuk pada proses server game atau sesi game secara bergantian karena hubungan satu lawan satu yang tersirat antara sesi game dan proses server game yang menyelenggarakannya. Di AWS, ada beberapa opsi untuk komputasi ke host server game, yang menyediakan akses ke kapasitas berbasis cloud yang dapat diskalakan melalui penyediaan sumber daya yang elastis.
Amazon EC2 menyediakan server virtual berbasis cloud, yang dikenal sebagai instance, dengan dukungan untuk beberapa versi Linux dan Windows. Anda dapat membuat instance dan mengelolanya secara langsung seperti server lain atau mesin virtual. Biasanya, beberapa proses server game dikerahkan ke sebuah instance untuk meningkatkan efisiensi dan mengurangi biaya. Amazon EC2 adalah pilihan yang baik untuk server game jika Anda menginginkan kontrol paling besar atas infrastruktur komputasi.
Amazon GameLift menyediakan solusi yang dikelola sepenuhnya untuk hosting server game khusus di cloud serta fitur tambahan seperti perjodohan dengan GameLift FlexMatch. GameLiftmenyediakan lapisan abstraksi di atas Amazon EC2 untuk membuat manajemen server game mudah dan tersedia di sebagian besar Wilayah AWS sehingga Anda dapat meng-host server game di dekat pemain untuk mengurangi latensi, mencapai ketersediaan tinggi, dan mengurangi biaya secara signifikan dengan menggunakan Instans Spot. Meskipun GameLift dapat diintegrasikan ke dalam backend game yang ada, ini sangat berguna bagi pengembang game yang tidak ingin mengembangkan manajemen server game dan solusi perjodohan mereka sendiri dan lebih memilih solusi yang dikelola oleh AWS dan dapat ditingkatkan seiring pertumbuhan game mereka.
Amazon Elastic Container Service (Amazon ECS) adalah layanan orkestrasi kontainer yang dikelola sepenuhnya yang dapat Anda gunakan untuk menjalankan Docker-based kontainer. Anda juga dapat menggunakan Amazon Elastic Kubernetes Service (Amazon EKS) untuk menjalankan Docker-based wadah yang dibuat menggunakan Kubernetes. Menggunakan teknologi kontainer seperti yang disediakan oleh Amazon ECS dan Amazon EKS dapat membantu Anda meningkatkan pemanfaatan komputasi dengan mengemas banyak proses server game atau instans aplikasi game lainnya secara efisien ke dalam instans EC2.
Penggunaan container juga dapat meningkatkan produktivitas pengembang dengan menghosting aplikasi menggunakan runtime operasi gambar Docker yang sama yang digunakan oleh pengembang pada mesin lokal mereka selama pengembangan. Anda dapat mengurangi biaya operasional lebih lanjut dengan menggunakan AWS Fargate, yang merupakan solusi komputasi tanpa server untuk menjalankan kontainer dan kompatibel dengan Amazon EKS dan Amazon ECS. Fargate paling cocok untuk kasus penggunaan di mana Anda ingin menjalankan server game dalam wadah tanpa tanggung jawab untuk mengoperasikan instance yang mendasari tempat kontainer dijalankan.
Anda dapat menggunakannya AWS Outposts untuk menjalankan AWS infrastruktur dan layanan di pusat data atau fasilitas lokal, yang dapat memungkinkan game berjalan di lingkungan lokal dan AWS menggunakan infrastruktur yang sama untuk mendukung strategi adopsi cloud hybrid. AWS Zona Lokal berfungsi sebagai ekstensi Wilayah AWS yang memungkinkan server game Anda dan beban kerja sensitif latensi lainnya berjalan lebih dekat dengan pemain atau tim pengembangan Anda. Selain itu, untuk mengurangi latensi jaringan global untuk server game Anda, Anda dapat menggunakan AWS Global Accelerator untuk meningkatkan kinerja lalu lintas pemain ke server game Anda.
AWS Lambda adalah layanan komputasi tanpa server yang menjalankan kode tanpa penyediaan atau mengelola server, yang membuatnya berguna untuk kasus penggunaan server game asinkron seperti game berbasis giliran atau yang memiliki persyaratan komputasi ringan, basis kode kecil, dan di mana fungsionalitas gameplay dapat dirancang menggunakan arsitektur layanan mikro stateless. Penting untuk diingat bahwa fungsi Lambda berjalan berdasarkan peristiwa, per-permintaan, daripada menjalankan proses server game yang berjalan lama. Lambda memberikan abstraksi runtime paling banyak dari opsi dalam makalah ini karena aplikasi yang mendasarinya sudah tersedia bagi pengembang untuk dipilih untuk meng-host kode mereka.
Saat memilih pendekatan Anda untuk hosting server game, pertimbangkan berbagai persyaratan termasuk overhead operasional, basis kode lama, persyaratan kinerja, dan skala. Instans dan wadah EC2 adalah pilihan yang baik untuk basis kode lama, karena memerlukan perubahan terkecil untuk pindah ke cloud, dan Anda dapat menggunakan instans EC2 untuk mendedikasikan sumber daya instans komputasi, sementara kontainer dapat membuat manajemen dan pemanfaatan tinggi lebih mudah dicapai. Fungsi tanpa server menawarkan tingkat abstraksi tertinggi, yang dapat Anda gunakan untuk menentukan kode yang hanya berjalan sebagai respons terhadap peristiwa, yang dapat mengurangi biaya.
Klien permainan
Klien game mewakili perangkat lunak dan perangkat keras yang digunakan pemain untuk bermain game. Klien game menyediakan perangkat lunak untuk menerjemahkan input pemain menjadi pesan yang dikirim ke server untuk diproses, dan bertanggung jawab untuk menangani tanggapan yang masuk dari server dan merender output seperti grafik ke pemain. Dalam game multipemain jaringan real-time, klien game biasanya mempertahankan koneksi jaringan persisten ke server game selama sesi gameplay untuk mengurangi latensi jaringan dan meminimalkan waktu pemrosesan. Namun, klien game juga dapat berinteraksi menggunakan REST dengan server game atau layanan backend.
Perpesanan
Biasanya ada tiga kategori utama pesan dalam game:
-
Pesan keterlibatan pemain yang ditargetkan pada pengguna atau kelompok pengguna tertentu, seperti undangan game atau pemberitahuan push
-
Pesan grup antar pemain seperti obrolan dalam game
-
Service-to-servicepesan, seperti pesan JSON yang digunakan untuk mengintegrasikan dua atau lebih aplikasi
Strategi umum untuk mengirim dan menerima jenis pesan ini adalah dengan menggunakan pola arsitektur pemrosesan penerbit-pelanggan dan asinkron. AWS menyediakan beberapa layanan yang dapat membantu Anda menerapkan pesan dalam game Anda.
-
Amazon Simple Notification Service (SNS): Layanan terkelola untuk mengirimkan pesan antara penerbit dan pelanggan menggunakan pola pub/sub arsitektur. Penerbit mengirim pesan menggunakan API ke Amazon SNS, yang mengirimkan pesan secara asinkron ke aplikasi berlangganan dan dapat mengirimkan pemberitahuan push langsung ke klien seluler atau desktop dengan dukungan untuk beberapa layanan pemberitahuan push yang paling banyak digunakan. Amazon SNS dapat digunakan untuk pemberitahuan push kepada klien serta kasus penggunaan pesan layanan-ke-layanan.
-
Amazon Simple Queue Service (SQS): Layanan antrian terkelola sepenuhnya yang membuatnya mudah untuk mengintegrasikan server game dan game Anda terlepas dari bahasa pemrograman yang digunakan di masing-masing. Banyak tugas permainan dapat dipisahkan dan ditangani di latar belakang seperti memperbarui papan peringkat atau nilai waktu bermain dalam database. Pendekatan ini adalah cara yang efektif untuk memisahkan berbagai bagian permainan Anda dan secara mandiri menskalakan fitur yang menghadap pemain dari pemrosesan backend.
-
Amazon Managed Streaming untuk Apache Kafka (MSK): Layanan yang dikelola sepenuhnya yang menyederhanakan pembuatan streaming data dan aplikasi produsen atau konsumen menggunakan Apache Kafka, solusi open-source populer. Kafka biasanya digunakan untuk menelan dan memproses data streaming real-time dan dapat digunakan untuk pengiriman pesan layanan ke layanan.
-
Amazon ElastiCache (Redis OSS): Men yediakan penyimpanan data dalam memori yang dikelola sepenuhnya yang mencakup dukungan untuk pub/sub fitur populer Redis yang biasa digunakan untuk mengembangkan aplikasi ruang obrolan dan perpesanan layanan-ke-layanan berkinerja tinggi. Redis juga mendukung tipe data kaya seperti daftar dan set sehingga pengembang dapat menggunakan Redis untuk antrian berkinerja tinggi.
-
Amazon Pinpoint: Men yediakan pesan keterlibatan pengguna melalui email, SMS, suara, dan pemberitahuan push. Misalnya, Amazon Pinpoint dapat digunakan untuk mengirimkan pesan keterlibatan pengguna kepada pemain untuk mengundang mereka kembali ke permainan dan dapat digunakan untuk kasus penggunaan transaksional seperti mendukung token otentikasi multi-faktor, konfirmasi pesanan, dan email reset kata sandi.
Operasi permainan langsung (Live Ops)
Operasi permainan langsung (Live Ops) adalah gaya manajemen dan operasi game yang memperlakukan game sebagai layanan langsung dan terus memberikan fitur baru, pembaruan, promosi, acara dalam game, dan peningkatan pada game yang diluncurkan untuk meningkatkan pengalaman bagi komunitas pemain.
Secara tradisional, game disampaikan sebagai produk daripada layanan, dan konten dan fitur baru sering dimasukkan ke dalam rilis atau sekuel berikutnya daripada ke dalam produk yang diluncurkan. Dengan pendekatan Live Ops untuk manajemen game, tim operasi game dapat meluncurkan game dan mempertahankan komunitas pemain yang terlibat melalui eksperimen, promosi, acara dalam game, dan inovasi untuk membuat pemain tetap terhibur.
Meskipun pendekatan ini memiliki manfaat membuka strategi keterlibatan pemain baru dan memberikan aliran pendapatan berulang, ini membutuhkan lebih banyak keahlian operasional. Misalnya, untuk menerapkan strategi Live Ops yang sukses, pengembang mungkin perlu berintegrasi dengan layanan cloud atau mengoperasikan infrastruktur teknis backend mereka sendiri. Mereka juga membutuhkan cara yang efektif untuk mengidentifikasi dan menanggapi masalah yang muncul dalam permainan, atau dalam komunitas pemain, yang dapat berdampak negatif pada pengalaman pemain.