Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Definisi
AWS Well-Architected Framework didasarkan pada enam pilar: keunggulan operasional, keamanan, keandalan, efisiensi kinerja, optimalisasi biaya, dan keberlanjutan. AWS menyediakan beberapa komponen inti yang memungkinkan Anda merancang state-of-the-art arsitektur untuk beban kerja game Anda. Pada bagian ini, kami akan menyajikan ikhtisar definisi kunci.
Untuk keperluan paper 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 paper ini. Untuk diskusi mendetail tentang berbagai jenis beban kerja yang sering digunakan untuk mendukung arsitektur game, lihat Skenario.
AWS Cloud Infrastruktur dibangun di sekitar Wilayah dan Zona Ketersediaan.
-
A Region adalah lokasi fisik di dunia di mana kami memiliki beberapa Availability Zone.
-
Availability Zones terdiri dari satu atau lebih pusat data diskrit, masing-masing dengan daya redundan, jaringan, dan konektivitas, ditempatkan di fasilitas terpisah.
Tergantung pada karakteristik permainan Anda, Anda mungkin ingin menyebarkan komponen tertentu dari arsitektur game Anda ke beberapa Wilayah untuk alasan seperti meningkatkan kinerja untuk pemain, atau untuk memberikan pengalaman yang disesuaikan untuk pemain tergantung pada lokasi mereka.
Ada banyak jenis permainan, dan infrastruktur teknis backend yang diperlukan untuk mendukung permainan berbeda tergantung pada jenis permainan yang sedang dikembangkan. Misalnya, jenis permainan populer mungkin termasuk penembak orang pertama (FPS), permainan peran (RPG), game online multipemain massively (MMOG), battle royales (BR), game olahraga, game puzzle, dan banyak lagi. Ada juga mode interaksi permainan yang berbeda yang memengaruhi 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 umumnya 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 berbagai strategi seperti iklan, pembelian game berbasis digital dan ritel, pembelian konten yang dapat diunduh dalam game (DLC) yang dikenal sebagai transaksi mikro, dan melalui langganan berbayar yang diperlukan untuk memainkan game. Beberapa indikator kinerja utama yang paling umum (KPIs) dalam 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, grafik, 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:
-
Konsol: Sistem hiburan yang dibuat khusus yang dirancang untuk bermain game, termasuk contoh populer seperti Sony, PlayStation Microsoft Xbox, dan Nintendo Switch. Konsol menyediakan kemampuan untuk bermain game dengan memasang konten game yang didistribusikan secara fisik atau digital ke perangkat keras konsol yang diproduksi oleh penyedia sistem game. Dalam definisi ini, konsol mungkin 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 untuk 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 dipasang 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. Game streaming memungkinkan pemain untuk memainkan game yang sepenuhnya 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 thin client yang disediakan oleh penyedia layanan cloud gaming (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 game berada di pusat arsitektur game, berfungsi sebagai lokasi di mana logika inti berjalan, yang mencakup mengelola pemain dan status game serta mengelola interaksi antara klien game yang terhubung dan server game. Server game 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 game yang berkinerja buruk memengaruhi kinerja keseluruhan pengalaman game. Oleh karena itu, Anda harus mengoptimalkan kinerja server game dan menyediakan kapasitas yang cukup, terutama pada peluncuran game atau periode gameplay puncak.
Untuk keperluan 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 dari pembuatan server game Anda yang menghosting sesi game, yang merupakan contoh dari game yang sedang berjalan yang dapat dihubungkan oleh pemain melalui sesi pemain. Untuk alasan ini, kita sering merujuk pada proses server game atau sesi game secara bergantian karena hubungan satu lawan satu tersirat antara sesi game dan proses server game yang menghostingnya. Di AWS, ada beberapa opsi untuk komputasi ke server game host, 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 yang dekat dengan pemain untuk mengurangi latensi, mencapai ketersediaan tinggi, dan secara signifikan mengurangi biaya 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 terkelola penuh yang dapat Anda gunakan untuk menjalankan container berbasis Docker. Anda juga dapat menggunakan Amazon Elastic Kubernetes Service (Amazon EKS) untuk menjalankan container berbasis Docker yang dibuat menggunakan Kubernetes. Menggunakan teknologi kontainer seperti yang disediakan oleh Amazon ECS dan Amazon EKS dapat membantu Anda meningkatkan penggunaan komputasi Anda dengan secara efisien mengemas banyak proses server game atau instance aplikasi game lainnya ke dalam sebuah instance. EC2
Penggunaan kontainer juga dapat meningkatkan produktivitas pengembang dengan menghosting aplikasi menggunakan runtime operasi image Docker yang sama yang digunakan oleh pengembang di mesin lokal mereka selama pengembangan. Anda dapat mengurangi overhead 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 dasar yang dijalankan kontainer.
Anda dapat menggunakan AWS Outposts untuk menjalankan AWS infrastruktur dan layanan di pusat data atau fasilitas lokal, yang memungkinkan game berjalan di lingkungan lokal dan AWS menggunakan infrastruktur yang sama untuk mendukung strategi adopsi cloud hybrid. AWS Local Zones 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 pengelolaan 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 microservices stateless. Penting untuk diingat bahwa fungsi Lambda berjalan berdasarkan event-driven, per-request, daripada menjalankan proses server game yang berjalan lama. Lambda menyediakan abstraksi runtime paling banyak dari opsi dalam paper ini karena aplikasi yang mendasarinya sudah tersedia bagi pengembang untuk memilih dari 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. EC2instance dan container adalah opsi yang baik untuk basis kode lama, karena memerlukan perubahan terkecil untuk pindah ke cloud, dan Anda dapat menggunakan EC2 instance untuk mendedikasikan sumber daya instance 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 game
Klien game mewakili perangkat lunak dan perangkat keras yang digunakan pemain untuk bermain game. Klien game menyediakan perangkat lunak untuk menerjemahkan input pemain ke dalam pesan yang dikirim ke server untuk diproses, dan bertanggung jawab untuk menangani respons yang masuk dari server dan memberikan output seperti grafik ke pemain. Dalam game multiplayer 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
-
ervice-to-servicePesan S, 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 arsitektur. pub/sub 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 ke klien serta kasus penggunaan service-to-service pesan.
-
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 game 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 for Apache Kafka (MSK): Layanan yang dikelola sepenuhnya yang menyederhanakan pembuatan streaming data dan aplikasi produsen atau konsumen menggunakan Apache Kafka, solusi open-source yang populer. Kafka biasanya digunakan untuk menelan dan memproses data streaming real-time dan dapat digunakan untuk service-to-service pengiriman pesan.
-
Amazon ElastiCache (Redis OSS): Menyediakan 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 pesan berkinerja tinggi. service-to-service Redis juga mendukung tipe data yang kaya seperti daftar dan set sehingga pengembang dapat menggunakan Redis untuk antrian berkinerja tinggi.
-
Amazon Pinpoint: Menyediakan 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 pengaturan ulang kata sandi.
Operasi game langsung (Live Ops)
Operasi game 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 dikirimkan 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 menghibur pemain.
Meskipun pendekatan ini memiliki manfaat membuka strategi keterlibatan pemain baru dan memberikan aliran pendapatan berulang, itu 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.