

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

# Desain set FlexMatch aturan
<a name="match-design-ruleset"></a>

Topik ini mencakup struktur dasar dari aturan yang ditetapkan dan bagaimana membangun aturan yang ditetapkan untuk pertandingan kecil hingga 40 pemain. Aturan perjodohan melakukan dua hal: menyusun struktur dan ukuran tim pertandingan dan memberi tahu mak comblang bagaimana memilih pemain untuk membentuk pertandingan terbaik. 

Tapi aturan perjodohan Anda bisa berbuat lebih banyak. Sebagai contoh, Anda dapat:
+ Optimalkan algoritma perjodohan untuk game Anda.
+ Siapkan persyaratan latensi pemain minimum untuk melindungi kualitas gameplay.
+ Secara bertahap rileks persyaratan tim dan aturan pertandingan dari waktu ke waktu sehingga semua pemain aktif dapat menemukan pertandingan yang dapat diterima ketika mereka menginginkannya.
+ Tentukan penanganan untuk permintaan perjodohan grup menggunakan agregasi pihak.
+ Memproses pertandingan besar dari 40 pemain atau lebih. Untuk informasi selengkapnya tentang membangun korek api besar, lihat[Rancang set aturan FlexMatch kecocokan besar](match-design-rulesets-large.md).

Saat membuat set aturan perjodohan, pertimbangkan tugas opsional dan wajib berikut ini: 
+ [Jelaskan set aturan (wajib)](match-rulesets-components-set.md)
+ [Menyesuaikan algoritme pencocokan](match-rulesets-components-algorithm.md)
+ [Menyatakan atribut pemain](match-rulesets-components-attributes.md)
+ [Menentukan tim kecocokan](match-rulesets-components-teams.md)
+ [Mengatur aturan untuk pencocokan pemain](match-rulesets-components-rules.md)
+ [Memungkinkan persyaratan untuk melonggar dari waktu ke waktu](match-rulesets-components-expansion.md)

Anda dapat membuat set aturan menggunakan Amazon GameLift Servers konsol atau `[CreateMatchmakingRuleSet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateMatchmakingRuleSet.html)` operasi.

# Jelaskan set aturan (wajib)
<a name="match-rulesets-components-set"></a>

Berikan rincian untuk set aturan.
+ *nama* (opsional) — Label deskriptif untuk Anda gunakan sendiri. Nilai ini tidak terkait dengan nama kumpulan aturan yang Anda tentukan saat membuat aturan yang ditetapkanAmazon GameLift Servers.
+ *ruleLanguageVersion*— Versi bahasa ekspresi properti yang digunakan untuk membuat FlexMatch aturan. Nilainya harus`1.0`.

# Menyesuaikan algoritme pencocokan
<a name="match-rulesets-components-algorithm"></a>

FlexMatchmengoptimalkan algoritme default untuk sebagian besar game untuk membuat pemain masuk ke pertandingan yang dapat diterima dengan waktu tunggu minimal. Anda dapat menyesuaikan algoritme dan menyesuaikan perjodohan untuk gim Anda.

Berikut ini adalah algoritma FlexMatch perjodohan default: 

1. FlexMatchmenempatkan semua tiket perjodohan terbuka dan tiket isi ulang di kolam tiket.

1. FlexMatchmengelompokkan tiket secara acak di kolam menjadi satu atau lebih batch. Saat kumpulan tiket semakin besar, FlexMatch bentuk batch tambahan untuk mempertahankan ukuran batch yang optimal.

1. FlexMatchmengurutkan tiket berdasarkan usia, dalam setiap batch.

1. FlexMatchmembangun kecocokan berdasarkan tiket tertua dari setiap batch. 

Untuk menyesuaikan algoritme pencocokan, tambahkan komponen `algorithm` ke skema set aturan Anda. Lihat [FlexMatch skema set aturan](match-ruleset-schema.md) untuk informasi selengkapnya. 

Gunakan penyesuaian opsional berikut untuk memengaruhi berbagai tahapan proses perjodohan Anda. 
+ [Menambahkan penyortiran pra-batch](#match-rulesets-components-algorithm-presort)
+ [Formulir batch berdasarkan atribut batchDistance](https://docs.aws.amazon.com//gameliftservers/latest/flexmatchguide/match-rules-reference-ruletype.html#match-rules-reference-ruletype-batchdistance)
+ [Memprioritaskan tiket backfill](#match-rulesets-components-algorithm-backfill)
+ [Mendukung tiket lama dengan ekspansi](#match-rulesets-components-algorithm-expansion)

## Menambahkan penyortiran pra-batch
<a name="match-rulesets-components-algorithm-presort"></a>

Anda dapat mengurutkan kumpulan tiket sebelum membentuk batch. Jenis kustomisasi ini paling efektif dengan game dengan kolam tiket besar. Penyortiran pra-batch dapat membantu mempercepat proses perjodohan dan meningkatkan keseragaman pemain dalam karakteristik yang ditentukan.

Tentukan metode penyortiran pra-batch menggunakan properti `batchingPreference` algoritma. Pengaturan default-nya adalah `random`.

Opsi untuk menyesuaikan penyortiran pra-batch meliputi:
+ **Urutkan berdasarkan atribut pemain.** Berikan daftar atribut pemain untuk mengurutkan kumpulan tiket. 

  Untuk mengurutkan berdasarkan atribut pemain, atur `batchingPreference` ke`sorted`, dan tentukan daftar atribut pemain Anda`sortByAttributes`. Untuk menggunakan atribut, pertama-tama deklarasikan atribut dalam `playerAttributes` komponen kumpulan aturan. 

  Dalam contoh berikut, FlexMatch urutkan kumpulan tiket berdasarkan peta permainan pilihan pemain dan kemudian berdasarkan keterampilan pemain. Batch yang dihasilkan lebih cenderung berisi pemain dengan keterampilan serupa yang ingin menggunakan peta yang sama.

  ```
  "algorithm": {
      "batchingPreference": "sorted",
      "sortByAttributes": ["map", "player_skill"],
      "strategy": "exhaustiveSearch"
  },
  ```
+ **Urutkan berdasarkan latensi.** Buat kecocokan dengan latensi terendah yang tersedia atau buat kecocokan dengan cepat dengan latensi yang dapat diterima. Kustomisasi ini berguna untuk set aturan yang membentuk pertandingan besar lebih dari 40 pemain. 

  Atur properti algoritma `strategy` ke`balanced`. Strategi seimbang membatasi jenis pernyataan aturan yang tersedia. Untuk informasi selengkapnya, lihat [Rancang set aturan FlexMatch kecocokan besar](match-design-rulesets-large.md). 

  FlexMatchmengurutkan tiket berdasarkan data latensi yang dilaporkan pemain dengan salah satu cara berikut: 
  + *Lokasi latensi terendah.* Kumpulan tiket diurutkan berdasarkan lokasi di mana pemain melaporkan nilai latensi terendah mereka. FlexMatchkemudian mengumpulkan tiket dengan latensi rendah di lokasi yang sama, menciptakan pengalaman bermain game yang lebih baik. Ini juga mengurangi jumlah tiket di setiap batch, sehingga perjodohan bisa memakan waktu lebih lama. Untuk menggunakan kustomisasi ini, atur `batchingPreference` ke`fastestRegion`, seperti yang ditunjukkan pada contoh berikut.

    ```
    "algorithm": {
        "batchingPreference": "fastestRegion",
        "strategy": "balanced"
    },
    ```
  + *Latensi yang dapat diterima cocok dengan cepat.* Kumpulan tiket diurutkan berdasarkan lokasi di mana pemain melaporkan nilai latensi yang dapat diterima. Ini membentuk lebih sedikit batch yang berisi lebih banyak tiket. Dengan lebih banyak tiket di setiap batch, menemukan pertandingan yang dapat diterima lebih cepat. Untuk menggunakan kustomisasi ini, atur properti `batchingPreference` ke` largestPopulation`, seperti yang ditunjukkan pada contoh berikut.

    ```
    "algorithm": {
        "batchingPreference": "largestPopulation",
        "strategy": "balanced"
    },
    ```
**catatan**  
Nilai default untuk strategi seimbang adalah`largestPopulation`.

## Memprioritaskan tiket backfill
<a name="match-rulesets-components-algorithm-backfill"></a>

Jika game Anda menerapkan pengisian ulang otomatis atau pengisian ulang manual, Anda dapat menyesuaikan cara FlexMatch memproses tiket perjodohan berdasarkan jenis permintaan. Jenis permintaan dapat berupa permintaan kecocokan atau pengisian ulang baru. Secara default, FlexMatch memperlakukan kedua jenis permintaan dengan cara yang sama.

Prioritas pengisian ulang berdampak pada cara FlexMatch menangani tiket setelah menggabungkannya. Prioritas pengisian ulang memerlukan set aturan untuk menggunakan strategi pencarian lengkap. 

FlexMatchtidak cocok dengan beberapa tiket isi ulang bersama-sama.

Untuk mengubah prioritas tiket isi ulang, atur properti. `backfillPriority`
+ **Cocokkan tiket isi ulang terlebih dahulu.** Opsi ini mencoba mencocokkan tiket isi ulang sebelum membuat pertandingan baru. Ini berarti bahwa pemain yang masuk memiliki peluang lebih tinggi untuk bergabung dengan game yang ada. 

  Cara terbaik untuk menggunakan ini jika game Anda menggunakan auto-backfill. Auto-backfill sering digunakan dalam game dengan sesi permainan pendek dan perputaran pemain tinggi. Auto-backfill membantu game-game ini membentuk pertandingan minimum yang layak dan memulainya saat FlexMatch mencari lebih banyak pemain untuk mengisi slot terbuka.

  Atur `backfillPriority` ke `high` .

  ```
  "algorithm": {
      "backfillPriority": "high",
      "strategy": "exhaustiveSearch"
  },
  ```
+ **Match backfill tiket terakhir.** Opsi ini mengabaikan tiket isi ulang sampai mengevaluasi semua tiket lainnya. Ini berarti bahwa FlexMatch mengisi kembali pemain yang masuk ke dalam game yang ada ketika tidak dapat mencocokkan mereka ke dalam game baru. 

  Opsi ini berguna ketika Anda ingin menggunakan backfill sebagai opsi kesempatan terakhir untuk memasukkan pemain ke dalam permainan, seperti ketika tidak ada cukup pemain untuk membentuk pertandingan baru. 

  Atur `backfillPriority` ke `low`. 

  ```
  "algorithm": {
      "backfillPriority": "low",
      "strategy": "exhaustiveSearch"
  },
  ```

## Mendukung tiket lama dengan ekspansi
<a name="match-rulesets-components-algorithm-expansion"></a>

Aturan ekspansi mengendurkan kriteria kecocokan saat pertandingan sulit diselesaikan. Amazon GameLift Serversberlaku aturan ekspansi ketika tiket dalam pertandingan yang diselesaikan sebagian mencapai usia tertentu. Stempel waktu pembuatan tiket menentukan kapan Amazon GameLift Servers menerapkan aturan; secara default, FlexMatch melacak stempel waktu tiket yang paling cocok. 

Untuk mengubah saat FlexMatch menerapkan aturan ekspansi, tetapkan properti `expansionAgeSelection` sebagai berikut: 
+ **Perluas berdasarkan tiket terbaru.** Opsi ini menerapkan aturan perluasan berdasarkan tiket terbaru yang ditambahkan ke kecocokan potensial. Setiap kali FlexMatch cocok dengan tiket baru, jam waktu diatur ulang. Dengan opsi ini, kecocokan yang dihasilkan cenderung memiliki kualitas yang lebih tinggi tetapi membutuhkan waktu lebih lama untuk dicocokkan; permintaan pertandingan mungkin habis sebelum diselesaikan jika terlalu lama untuk dicocokkan. Setel `expansionAgeSelection` ke`newest`. `newest`adalah default.
+ **Perluas berdasarkan tiket tertua.** Opsi ini menerapkan aturan ekspansi berdasarkan tiket tertua dalam pertandingan potensial. Dengan opsi ini, FlexMatch menerapkan ekspansi lebih cepat, yang meningkatkan waktu tunggu untuk pemain paling awal yang cocok, tetapi menurunkan kualitas pertandingan untuk semua pemain. Atur `expansionAgeSelection` ke `oldest`. 

```
"algorithm": {
    "expansionAgeSelection": "oldest",
    "strategy": "exhaustiveSearch"
},
```

# Menyatakan atribut pemain
<a name="match-rulesets-components-attributes"></a>

Di bagian ini, daftar atribut pemain individu untuk disertakan dalam permintaan perjodohan. Ada dua alasan Anda mungkin mendeklarasikan atribut pemain dalam set aturan: 
+ Ketika set aturan berisi aturan yang bergantung pada atribut pemain.
+ Bila Anda ingin meneruskan atribut pemain ke sesi permainan melalui permintaan pertandingan. Misalnya, Anda mungkin ingin meneruskan pilihan karakter pemain ke sesi permainan sebelum setiap pemain terhubung. 

Saat menyatakan atribut pemain, sertakan informasi berikut: 
+ *name *(diperlukan) – Nilai ini harus unik untuk set aturan.
+ *type* (required) — Tipe data dari nilai atribut. Tipe data yang valid adalah nomor, string, daftar string, atau peta string.
+ *default* (opsional) - Masukkan nilai default untuk digunakan jika permintaan perjodohan tidak memberikan nilai atribut. Jika tidak ada default yang dideklarasikan dan permintaan tidak menyertakan nilai, tidak FlexMatch dapat memenuhi permintaan.

# Menentukan tim kecocokan
<a name="match-rulesets-components-teams"></a>

Menjelaskan struktur dan ukuran tim untuk kecocokan. Setiap kecocokan harus memiliki setidaknya satu tim, dan Anda dapat menentukan tim sebanyak yang Anda inginkan. Tim Anda dapat memiliki jumlah pemain yang sama atau asimetris. Misalnya, Anda dapat menentukan tim monster pemain tunggal dan tim pemburu dengan 10 pemain.

FlexMatchproses mencocokkan permintaan sebagai kecocokan kecil atau kecocokan besar, berdasarkan cara kumpulan aturan menentukan ukuran tim. Potensi pertandingan hingga 40 pemain adalah pertandingan kecil, pertandingan dengan lebih dari 40 pemain adalah pertandingan besar. Untuk menentukan ukuran kecocokan potensial set aturan, tambahkan pengaturan *maxPlayer* untuk semua tim yang ditentukan dalam set aturan. 
+ *name * (diperlukan) – Tetapkan nama yang unik untuk setiap tim. Anda menggunakan nama ini dalam aturan dan ekspansi, dan FlexMatch referensi untuk data perjodohan dalam sesi permainan.
+ *MaxPlayers* (wajib) — Tentukan jumlah maksimum pemain yang akan ditetapkan ke tim.
+ *MinPlayers* (wajib) — Tentukan jumlah minimum pemain yang akan ditetapkan ke tim. 
+ *kuantitas* (opsional) - Tentukan jumlah tim yang akan dibuat dengan definisi ini. Saat FlexMatch membuat pertandingan, ini memberi tim ini nama yang disediakan dengan nomor yang ditambahkan. Misalnya`Red-Team1`,`Red-Team2`, dan`Red-Team3`. 

FlexMatchmencoba untuk mengisi tim dengan ukuran pemain maksimum tetapi membuat tim dengan lebih sedikit pemain. Jika Anda ingin semua tim dalam kecocokan memiliki ukuran yang sama, Anda dapat membuat aturan untuk itu. Lihat [FlexMatchcontoh set aturan](match-examples.md) topik untuk contoh `EqualTeamSizes` aturan.

# Mengatur aturan untuk pencocokan pemain
<a name="match-rulesets-components-rules"></a>

Buat seperangkat pernyataan aturan yang mengevaluasi pemain untuk diterima dalam pertandingan. Aturan mungkin menetapkan persyaratan yang berlaku untuk pemain individu, tim, atau seluruh kecocokan. Ketika Amazon GameLift Servers memproses permintaan pertandingan, itu dimulai dengan pemain tertua di kumpulan pemain yang tersedia dan membangun pertandingan di sekitar pemain itu. Untuk bantuan mendetail tentang membuat FlexMatch aturan, lihat[FlexMatchjenis aturan](match-rules-reference-ruletype.md).
+ *name* (required) - Nama bermakna yang secara unik mengidentifikasi aturan dalam set aturan. Nama aturan juga dirujuk dalam log peristiwa dan metrik yang melacak aktivitas yang terkait dengan aturan ini. 
+ *description* (opsional) – Gunakan elemen ini untuk melampirkan deskripsi teks bentuk bebas.
+ *type* (diperlukan) – Elemen jenis mengidentifikasi operasi yang akan digunakan saat memproses aturan. Setiap jenis aturan memerlukan satu set properti tambahan. Lihat daftar jenis aturan dan properti yang valid di [FlexMatch aturan bahasa](match-rules-reference.md). 
+ Properti tipe aturan (mungkin diperlukan) - Bergantung pada jenis aturan yang ditentukan, Anda mungkin perlu menetapkan properti aturan tertentu. Pelajari lebih lanjut tentang properti dan cara menggunakan bahasa ekspresi FlexMatch properti di[FlexMatch aturan bahasa](match-rules-reference.md).

# Memungkinkan persyaratan untuk melonggar dari waktu ke waktu
<a name="match-rulesets-components-expansion"></a>

Ekspansi memungkinkan Anda untuk melonggarkan kriteria aturan dari waktu ke waktu ketika tidak FlexMatch dapat menemukan kecocokan. Fitur ini memastikan bahwa FlexMatch membuat yang terbaik tersedia ketika tidak dapat membuat pasangan yang sempurna. Dengan melonggarkan aturan Anda dengan ekspansi, Anda secara bertahap memperluas kolam pemain yang merupakan kecocokan yang dapat diterima. 

Ekspansi dimulai ketika usia tiket terbaru dalam pertandingan yang tidak lengkap cocok dengan waktu tunggu ekspansi. Saat FlexMatch menambahkan tiket baru ke pertandingan, jam waktu tunggu ekspansi mungkin diatur ulang. Anda dapat menyesuaikan bagaimana ekspansi dimulai di `algorithm` bagian set aturan.

Berikut adalah contoh perluasan yang secara bertahap meningkatkan level keterampilan minimum yang diperlukan untuk kecocokan. Set aturan menggunakan pernyataan aturan jarak, dinamai *SkillDelta*untuk mengharuskan semua pemain dalam pertandingan berada dalam 5 tingkat keterampilan satu sama lain. Jika tidak ada pertandingan baru yang dibuat selama lima belas detik, ekspansi ini mencari perbedaan tingkat keterampilan 10, dan kemudian sepuluh detik kemudian mencari perbedaan 20.

```
"expansions": [{
        "target": "rules[SkillDelta].maxDistance",
        "steps": [{
            "waitTimeSeconds": 15,
            "value": 10
        }, {
            "waitTimeSeconds": 25,
            "value": 20
        }]
    }]
```

Dengan pembuat kecocokan yang mengaktifkan backfill otomatis, jangan terlalu cepat melonggarkan persyaratan jumlah pemain Anda. Diperlukan beberapa detik untuk memulai sesi game baru dan memulai backfill otomatis. Pendekatan yang lebih baik adalah memulai ekspansi Anda setelah pengisian ulang otomatis cenderung dimulai untuk game Anda. Waktu ekspansi bervariasi tergantung pada komposisi tim Anda, jadi lakukan pengujian untuk menemukan strategi ekspansi terbaik untuk game Anda.