

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

# Tambahkan FlexMatch ke klien game
<a name="match-client"></a>

Topik ini menjelaskan cara menambahkan fungsionalitas FlexMatch perjodohan ke komponen game sisi klien Anda.

Kami sangat menyarankan agar klien game Anda membuat permintaan perjodohan melalui layanan game backend. Dengan menggunakan sumber tepercaya ini untuk komunikasi Anda dengan Amazon GameLift Servers layanan ini, Anda dapat lebih mudah melindungi terhadap upaya peretasan dan data pemain palsu. Jika game Anda memiliki directory service sesi, ini adalah opsi yang baik untuk menangani permintaan pencocokan. Menggunakan layanan permainan backend untuk semua panggilan ke Amazon GameLift Servers layanan adalah praktik terbaik saat menggunakan FlexMatch dengan Amazon GameLift Servers hosting dan sebagai layanan mandiri.

Pembaruan sisi klien diperlukan apakah Anda menggunakan FlexMatch hosting Amazon GameLift Servers terkelola atau sebagai layanan mandiri dengan solusi hosting lain. Menggunakan API layanan untukAmazon GameLift Servers, yang merupakan bagian dari AWS SDK, tambahkan fungsionalitas berikut:
+ Minta perjodohan untuk satu atau beberapa pemain (wajib). Bergantung pada set aturan perjodohan Anda, permintaan ini mungkin memerlukan data khusus pemain tertentu, termasuk atribut pemain dan latensi.
+ Lacak status permintaan perjodohan (wajib). Secara umum, tugas ini memerlukan pengaturan pemberitahuan acara.
+ Minta persetujuan pemain untuk pertandingan yang diusulkan (opsional). Fitur ini membutuhkan interaksi tambahan dengan pemain untuk menampilkan detail pertandingan dan memungkinkan mereka untuk menerima atau menolak pertandingan.
+ Dapatkan informasi koneksi sesi game dan bergabunglah dengan game (wajib). Setelah sesi permainan dimulai untuk pertandingan baru, ambil informasi koneksi untuk sesi permainan dan gunakan untuk terhubung ke sesi permainan.

## Prasyarat tugas sisi klien
<a name="match-client-setup"></a>

Sebelum Anda dapat menambahkan fungsionalitas sisi klien ke game Anda, Anda perlu melakukan tugas-tugas ini:
+ **Tambahkan AWS SDK ke layanan backend Anda.** Layanan backend Anda menggunakan fungsionalitas di Amazon GameLift Servers API, yang merupakan bagian dari SDK AWS . Lihat [layanan klien Amazon GameLift Servers SDKs untuk](https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-supported.html#gamelift-supported-clients) mempelajari lebih lanjut tentang AWS SDK dan mengunduh versi terbaru. Untuk deskripsi dan fungsionalitas API, lihat[Amazon GameLift ServersFlexMatchReferensi API (AWS SDK)](reference-awssdk-flex.md).
+ **Siapkan sistem tiket perjodohan.** Semua permintaan perjodohan harus memiliki ID tiket yang unik. Buat mekanisme untuk menghasilkan tiket unik IDs dan tetapkan mereka untuk mencocokkan permintaan. ID tiket dapat menggunakan format string apa pun, hingga maksimum 128 karakter. 
+ **Kumpulkan informasi tentang mak comblang Anda.** Dapatkan informasi berikut dari konfigurasi perjodohan dan kumpulan aturan Anda. 
  + Nama sumber daya konfigurasi perjodohan.
  + Daftar atribut pemain, yang didefinisikan dalam set aturan.
+ **Ambil data pemain.** Siapkan cara untuk mendapatkan data yang relevan untuk setiap pemain untuk disertakan dalam permintaan perjodohan Anda. Anda memerlukan ID pemain dan nilai atribut pemain. Jika set aturan Anda memiliki aturan latensi atau Anda ingin menggunakan data latensi saat menempatkan sesi permainan, kumpulkan data latensi untuk setiap lokasi geografis di mana pemain kemungkinan akan dimasukkan ke dalam game. Untuk mendapatkan pengukuran latensi yang akurat, gunakan ping Amazon GameLift Servers beacon UDP. Titik akhir ini memungkinkan Anda mengukur latensi jaringan UDP aktual antara perangkat pemain dan masing-masing lokasi hosting potensial, menghasilkan keputusan penempatan yang lebih akurat daripada menggunakan ping ICMP. [Untuk informasi lebih lanjut tentang penggunaan suar ping UDP untuk mengukur latensi, lihat suar ping UDP.](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/reference-udp-ping-beacons.html)

# Meminta matchmaking untuk pemain
<a name="match-client-start"></a>

Tambahkan kode ke layanan backend game Anda untuk mengelola permintaan perjodohan ke mak comblang. FlexMatch Proses meminta FlexMatch perjodohan identik untuk game yang digunakan FlexMatch dengan Amazon GameLift Servers hosting dan untuk game yang digunakan FlexMatch sebagai solusi mandiri.

## Untuk membuat permintaan perjodohan:
<a name="match-client-start-request"></a>

Panggil Amazon GameLift Servers API [StartMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StartMatchmaking.html). Setiap permintaan harus berisi informasi berikut.

**Pembuat kecocokan**  
Nama konfigurasi perjodohan yang akan digunakan untuk permintaan. FlexMatchmenempatkan setiap permintaan ke dalam pool untuk mak comblang yang ditentukan, dan permintaan diproses berdasarkan bagaimana mak comblang dikonfigurasi. Ini termasuk menegakkan batas waktu, apakah akan meminta pemain menerima pertandingan, antrean mana yang akan digunakan saat menempatkan sesi game yang dihasilkan, dll. Pelajari selengkapnya tentang pembuat kecocokan dan set aturan di [Desain FlexMatch mak comblang](match-configuration.md). 

**ID Tiket**  
ID tiket unik yang ditetapkan untuk permintaan. Segala sesuatu yang terkait dengan permintaan, termasuk peristiwa dan pemberitahuan, akan merujuk pada ID tiket. 

**Data pemain**  
Daftar pemain yang ingin Anda buatkan kecocokan. Jika salah satu pemain dalam permintaan tidak memenuhi persyaratan pertandingan, berdasarkan aturan pertandingan dan minimum latensi, permintaan pencocokan tidak akan menghasilkan pertandingan yang sukses. Anda dapat menyertakan hingga sepuluh pemain dalam permintaan kecocokan. Ketika ada beberapa pemain dalam permintaan, cobalah FlexMatch untuk membuat satu pertandingan dan menetapkan semua pemain ke tim yang sama (dipilih secara acak). Jika permintaan berisi terlalu banyak pemain untuk ditampung di salah satu tim pertandingan, permintaan akan gagal dicocokkan. Misalnya, jika Anda telah menyiapkan pembuat kecocokan untuk membuat pertandingan 2v2 (dua tim yang terdiri dari dua pemain), Anda tidak dapat mengirim permintaan pencocokan yang berisi lebih dari dua pemain.  
Seorang pemain (diidentifikasi dengan ID pemainnya) hanya dapat disertakan dalam satu permintaan pencocokan aktif dalam satu waktu. Saat Anda membuat permintaan baru untuk seorang pemain, setiap tiket pencocokan aktif dengan ID pemain yang sama akan dibatalkan secara otomatis.
Untuk setiap pemain yang terdaftar, sertakan data berikut:  
+ *ID Pemain *–Setiap pemain harus memiliki ID pemain unik yang Anda buatkan. Lihat [Menghasilkan pemain IDs](https://docs.aws.amazon.com/gamelift/latest/developerguide/player-sessions-player-identifiers.html). 
**penting**  
Saat Anda membuat permintaan perjodohan baru yang berisi ID pemain yang sudah disertakan dalam permintaan perjodohan aktif yang ada, permintaan yang ada akan dibatalkan secara otomatis. Namun, `MatchmakingCancelled` acara tidak dikirim untuk permintaan yang dibatalkan. Untuk memantau status permintaan perjodohan yang ada, gunakan [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)untuk melakukan polling status permintaan pada interval yang jarang (30-60 detik). Permintaan yang dibatalkan akan menunjukkan status `CANCELLED` dengan `Cancelled due to duplicate player` alasannya.
+ *Atribut pemain* – Jika pembuat kecocokan yang digunakan memanggil atribut pemain, permintaan harus menyediakan atribut tersebut untuk setiap pemain. Atribut pemain yang diperlukan ditentukan dalam set aturan pembuat kecocokan, yang juga menentukan tipe data untuk atribut tersebut. Sebuah atribut pemain bersifat opsional hanya ketika aturan set menentukan nilai default untuk atribut. Jika permintaan pertandingan tidak memberikan atribut pemain yang diperlukan untuk semua pemain, permintaan pencocokan tidak akan pernah berhasil. Pelajari selengkapnya tentang set aturan pembuat kecocokan dan atribut pemain di [Membangun FlexMatch aturan ditetapkan](match-rulesets.md) dan [FlexMatchcontoh set aturan](match-examples.md).
+ *Latensi pemain* – Jika pembuat kecocokan yang digunakan memiliki aturan latensi pemain, permintaan harus melaporkan latensi untuk setiap pemain. Data latensi pemain adalah daftar satu atau lebih nilai per pemain. Ini mewakili latensi yang dialami pemain untuk wilayah dalam antrean pembuat kecocokan. Jika tidak ada nilai latensi untuk pemain yang disertakan dalam permintaan, pemain tidak dapat dicocokkan, dan permintaan gagal. Untuk mendapatkan pengukuran latensi yang akurat, gunakan ping Amazon GameLift Servers beacon UDP. Titik akhir ini memungkinkan Anda mengukur latensi jaringan UDP aktual antara perangkat pemain dan lokasi hosting potensial, menghasilkan keputusan penempatan yang lebih akurat daripada menggunakan ping ICMP. [Untuk informasi lebih lanjut tentang penggunaan suar ping UDP untuk mengukur latensi, lihat suar ping UDP.](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/reference-udp-ping-beacons.html)

## Untuk mengambil detail permintaan kecocokan
<a name="match-client-start-retrieve"></a>

Setelah permintaan pertandingan dikirim, Anda dapat melihat detail permintaan [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)dengan menelepon dengan ID tiket permintaan. Panggilan ini mengembalikan informasi permintaan, termasuk status saat ini. Setelah permintaan berhasil diselesaikan, tiket juga berisi informasi yang dibutuhkan klien game untuk terhubung ke kecocokan. 

## Untuk membatalkan permintaan pertandingan
<a name="match-client-start-cancel"></a>

Anda dapat membatalkan permintaan perjodohan kapan saja [StopMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_StopMatchmaking.html)dengan menelepon dengan ID tiket permintaan.

# Melacak peristiwa pencocokan
<a name="match-client-track"></a>

Siapkan notifikasi untuk melacak peristiwa yang Amazon GameLift Servers dipancarkan untuk proses perjodohan. Anda dapat mengatur notifikasi baik secara langsung, dengan membuat topik SNS, atau dengan menggunakan Amazon EventBridge. Untuk informasi lebih lanjut tentang mengatur notifikasi, lihat [Siapkan pemberitahuan FlexMatch acara](match-notification.md). Setelah Anda mengatur notifikasi, tambahkan listener di layanan klien Anda untuk mendeteksi peristiwa dan merespons sesuai kebutuhan. 

Sebaiknya Anda mencadangkan notifikasi dengan melakukan polling secara berkala untuk pembaruan status ketika periode waktu yang signifikan berlalu tanpa notifikasi. Untuk meminimalkan dampak pada performa pencocokan, pastikan untuk melakukan polling setelah menunggu setidaknya 30 detik setelah tiket pencocokan dikirimkan atau setelah notifikasi terakhir diterima.

Ambil tiket permintaan perjodohan, termasuk status saat ini, dengan menelepon [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html)dengan ID tiket permintaan. Sebaiknya polling dilakukan maksimal sekali setiap 10 detik. Pendekatan ini hanya untuk digunakan selama skenario pengembangan volume rendah.

**catatan**  
Anda harus menyiapkan game Anda dengan pemberitahuan peristiwa sebelum Anda memiliki penggunaan pencocokan bervolume tinggi, seperti dengan pengujian beban pra-produksi. Semua game dalam rilis publik harus menggunakan pemberitahuan terlepas dari volumenya. Pendekatan polling berkelanjutan hanya cocok untuk game yang sedang dikembangkan dengan penggunaan pencocokan yang rendah.

# Minta persetujuan pemain
<a name="match-client-accept"></a>

Jika Anda menggunakan pembuat kecocokan yang mengaktifkan persetujuan pemain, tambahkan kode ke layanan klien Anda untuk mengelola proses persetujuan pemain. Proses mengelola akseptasi pemain identik untuk game yang digunakan FlexMatch dengan hosting yang Amazon GameLift Servers dikelola dan untuk game yang digunakan FlexMatch sebagai solusi mandiri.

**Meminta persetujuan pemain untuk kecocokan yang diusulkan:**

1. **Deteksi kapan pertandingan yang diusulkan membutuhkan penerimaan pemain.** Memantau tiket pencocokan untuk mendeteksi ketika status berubah ke `REQUIRES_ACCEPTANCE`. Perubahan status ini memicu FlexMatch peristiwa`MatchmakingRequiresAcceptance`.

1. **Dapatkan penerimaan dari semua pemain.** Buat mekanisme untuk menyajikan detail kecocokan yang diusulkan kepada setiap pemain di tiket pencocokan. Pemain harus dapat menunjukkan bahwa mereka menyetujui atau menolak kecocokan yang diajukan. Anda dapat mengambil detail pertandingan dengan menelepon [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html). Pemain memiliki waktu terbatas untuk merespons sebelum mak comblang menarik pertandingan yang diusulkan dan melanjutkan.

1. **Laporkan tanggapan pemain keFlexMatch.** Laporkan tanggapan pemain dengan menelepon [AcceptMatch](https://docs.aws.amazon.com/gamelift/latest/apireference/API_AcceptMatch.html)dengan menerima atau menolak. Semua pemain dalam permintaan pencocokan harus menyetujui kecocokan agar dapat dilanjutkan.

1. **Tangani tiket dengan penerimaan yang gagal.** Permintaan gagal ketika pemain mana pun dalam kecocokan yang diusulkan menolak kecocokan atau gagal merespons dalam batas waktu persetujuan. Tiket untuk pemain yang menerima kecocokan secara otomatis dikembalikan ke kolam tiket. Tiket untuk pemain yang tidak menyetujui kecocokan dipindahkan ke status GAGAL dan tidak diproses lagi. Untuk tiket dengan banyak pemain, jika ada pemain di tiket yang tidak menyetujui kecocokan, seluruh tiket gagal.

# Connect ke pertandingan
<a name="match-client-connect"></a>

Tambahkan kode ke layanan klien Anda untuk menangani kecocokan yang berhasil dibentuk (status `COMPLETED` atau peristiwa `MatchmakingSucceeded`). Ini termasuk memberi tahu pemain yang cocok dan menyerahkan informasi koneksi ke klien game mereka. 

Untuk game yang menggunakan hosting Amazon GameLift Servers terkelola, ketika permintaan perjodohan berhasil dipenuhi, informasi koneksi sesi game ditambahkan ke tiket perjodohan. Ambil tiket perjodohan yang sudah selesai dengan menelepon. [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html) Informasi koneksi mencakup alamat IP dan port sesi game, serta ID sesi pemain untuk setiap ID pemain. Pelajari selengkapnya di [GameSessionConnectionInfo](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSessionConnectionInfo.html). Klien game Anda dapat menggunakan informasi ini untuk terhubung langsung ke sesi game untuk kecocokan. Permintaan koneksi harus mencakup ID sesi pemain dan ID pemain. Data ini mengaitkan pemain yang terhubung ke data pertandingan sesi permainan, yang mencakup tugas tim (lihat [GameSession](https://docs.aws.amazon.com/gamelift/latest/apireference/API_GameSession.html)). 

Untuk game yang menggunakan solusi hosting lainnya Amazon GameLift ServersFleetIQ, termasuk, Anda harus membangun mekanisme untuk memungkinkan pemain pertandingan terhubung ke sesi permainan yang sesuai. 

# Permintaan pencocokan sampel
<a name="match-client-sample"></a>

Potongan kode berikut membangun permintaan pencocokan untuk beberapa pembuat kecocokan yang berbeda. Seperti yang dijelaskan, permintaan harus menyediakan atribut pemain yang diperlukan oleh pembuat kecocokan yang digunakan, seperti yang didefinisikan dalam set aturan pembuat kecocokan. Atribut yang diberikan harus menggunakan tipe data yang sama, angka (N) atau string (S) yang didefinisikan dalam set aturan. 

```
# Uses matchmaker for two-team game mode based on player skill level
def start_matchmaking_for_cowboys_vs_aliens(config_name, ticket_id, player_id, skill, team):
    response = gamelift.start_matchmaking(
        ConfigurationName=config_name,
        Players=[{
            "PlayerAttributes": {
                "skill": {"N": skill}
            },
            "PlayerId": player_id,
            "Team": team
        }],
        TicketId=ticket_id)

# Uses matchmaker for monster hunter game mode based on player skill level
def start_matchmaking_for_players_vs_monster(config_name, ticket_id, player_id, skill, is_monster):
    response = gamelift.start_matchmaking(
        ConfigurationName=config_name,
        Players=[{
            "PlayerAttributes": {
                "skill": {"N": skill},
                "desiredSkillOfMonster": {"N": skill},
                "wantsToBeMonster": {"N": int(is_monster)}
            },
            "PlayerId": player_id
        }],
        TicketId=ticket_id)

# Uses matchmaker for brawler game mode with latency
def start_matchmaking_for_three_team_brawler(config_name, ticket_id, player_id, skill, role):
    response = gamelift.start_matchmaking(
        ConfigurationName=config_name,
        Players=[{
            "PlayerAttributes": {
                "skill": {"N": skill},
                "character": {"S": [role]},
            },
            "PlayerId": player_id,
            "LatencyInMs": { "us-west-2": 20}
        }],
        TicketId=ticket_id)

# Uses matchmaker for multiple game modes and maps based on player experience
def start_matchmaking_for_multi_map(config_name, ticket_id, player_id, skill, maps, modes):
    response = gamelift.start_matchmaking(
        ConfigurationName=config_name,
        Players=[{
            "PlayerAttributes": {
                "experience": {"N": skill},
                "gameMode": {"SL": modes},
                "mapPreference": {"SL": maps}
            },
            "PlayerId": player_id
        }],
        TicketId=ticket_id)
```