

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

# Hosting server game berbasis sesi dengan backend tanpa server
<a name="session-based-game-server-hosting-with-serverless-backend"></a>

 Saat mengembangkan arsitektur untuk game Anda, pertimbangkan fitur dan kemampuan yang Anda butuhkan dan tingkat overhead manajemen operasional yang siap Anda miliki. Untuk memberikan keseimbangan terbaik antara kemudahan pengoperasian dan fleksibilitas, Anda dapat membangun game menggunakan layanan terkelola dari penyedia cloud. Layanan terkelola memberi Anda kontrol untuk mengembangkan dan menyesuaikan fitur game kustom Anda sendiri, sekaligus mengurangi beban Anda untuk menerapkan dan mengelola infrastruktur. 

 Hosting game multipemain berbasis sesi membutuhkan infrastruktur server untuk meng-host proses server game serta backend yang dapat diskalakan untuk perjodohan dan manajemen sesi. Arsitektur referensi berikut menunjukkan bagaimana Amazon GameLift mengelola hosting dan backend tanpa server dapat digunakan untuk mengelola game berbasis sesi Anda. 

![Amazon GameLift mengelola hosting untuk game berbasis sesi](http://docs.aws.amazon.com/id_id/wellarchitected/latest/games-industry-lens/images/image2.png)


 Diagram menjelaskan proses memasukkan pemain ke dalam game yang berjalan di hosting game yang GameLift dikelola. Ini mencakup langkah-langkah berikut: 

1.  Klien game meminta identitas Amazon Cognito dari kumpulan identitas Amazon Cognito. Ini secara opsional dapat dihubungkan ke penyedia identitas eksternal. 

1.  Klien game menerima kredensil akses sementara dan meminta sesi game melalui Amazon API Gateway dengan menandatangani permintaan dengan kredenal Amazon Cognito. 

1.  API Gateway memanggil AWS Lambda fungsi. 

1.  Fungsi Lambda meminta data pemutar dari tabel Amazon DynamoDB. Identitas Amazon Cognito digunakan untuk meminta data pemain yang benar dengan aman karena identitas yang diautentikasi disediakan dalam data konteks permintaan. 

1.  Menggunakan data pemain yang benar untuk informasi tambahan (seperti tingkat keterampilan pemain), fungsi Lambda meminta pertandingan melalui GameLift FlexMatch perjodohan. Anda dapat menentukan konfigurasi FlexMatch perjodohan dengan dokumen konfigurasi berbasis JSON. Klien game dapat menghasilkan metrik latensi dengan melakukan ping titik akhir server di berbagai Wilayah, dan data latensi dapat digunakan untuk mendukung perjodohan berbasis latensi. 

1.  Setelah FlexMatch mencocokkan kelompok pemain yang cocok dengan latensi yang sesuai ke Wilayah, ia meminta penempatan sesi permainan melalui GameLift antrian. Antrian berisi armada dengan satu atau lebih lokasi Wilayah terdaftar. 

1.  Ketika sesi ditempatkan di salah satu lokasi armada, notifikasi kejadian dikirim ke topik Amazon SNS. 

1.  Sebuah fungsi Lambda akan menerima kejadian Amazon SNS dan memprosesnya. 

1.  Jika pesan Amazon SNS adalah MatchmakingSucceeded peristiwa, fungsi Lambda menulis hasilnya ke DynamoDB dengan port server dan alamat IP. Nilai time-to-live (TTL) digunakan untuk memastikan bahwa tiket perjodohan dihapus dari DynamoDB ketika mereka tidak lagi diperlukan. 

1.  Client game membuat permintaan yang telah ditandatangani ke API Gateway untuk memeriksa status tiket matchmaking pada interval tertentu. 

1.  API Gateway memanggil fungsi Lambda yang memeriksa status tiket matchmaking. 

1.  Fungsi Lambda memeriksa DynamoDB untuk menentukan apakah tiket telah berhasil. Jika telah berhasil, fungsi Lambda mengirimkan alamat IP, port, dan ID sesi pemain kembali ke client. Jika tiket gagal, fungsi Lambda mengirimkan respons yang menyatakan bahwa kecocokan belum siap. 

1.  Client game menghubungkan ke server game menggunakan TCP atau UDP dengan menggunakan port dan alamat IP yang disediakan oleh backend. Ini mengirimkan ID sesi pemain ke server game, dan server game memvalidasinya menggunakan Amazon GameLift Server SDK. 

 Atau, Anda dapat memodifikasi arsitektur sebelumnya untuk menggunakan API Gateway dengan WebSockets Amazon. GameLift Dalam pendekatan ini, komunikasi antara klien game dan layanan backend game Anda terjadi menggunakan implementasi [WebSocketberbasis](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift_quickstart_customservers_designbackend_arch_websockets.html). Implementasi ini dapat digunakan sehingga fungsi Lambda backend game memulai pesan sisi server ke klien game daripada menerapkan model polling. WebSocket 