

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Progetta un set di FlexMatch regole
<a name="match-design-ruleset"></a>

Questo argomento tratta la struttura di base di un set di regole e come creare un set di regole per piccole partite fino a 40 giocatori. Un set di regole di matchmaking fa due cose: definisce la struttura e le dimensioni della squadra di una partita e indica al matchmaker come scegliere i giocatori per formare la migliore partita possibile. 

Ma il tuo set di regole di matchmaking può fare di più. Ad esempio, puoi:
+ Ottimizza l'algoritmo di matchmaking per il tuo gioco.
+ Imposta i requisiti minimi di latenza dei giocatori per proteggere la qualità del gioco.
+ Riduci gradualmente i requisiti di squadra e le regole delle partite nel tempo, in modo che tutti i giocatori attivi possano trovare una partita accettabile quando ne vogliono una.
+ Definisci la gestione delle richieste di matchmaking di gruppo utilizzando l'aggregazione dei gruppi.
+ Elabora partite di grandi dimensioni con 40 o più giocatori. Per ulteriori informazioni sulla creazione di partite di grandi dimensioni, vedi[Progetta un set di regole per FlexMatch partite di grandi dimensioni](match-design-rulesets-large.md).

Quando crei un set di regole di matchmaking, considera le seguenti attività facoltative e obbligatorie: 
+ [Descrivi il set di regole (obbligatorio)](match-rulesets-components-set.md)
+ [Personalizza l'algoritmo di corrispondenza](match-rulesets-components-algorithm.md)
+ [Dichiara gli attributi del giocatore](match-rulesets-components-attributes.md)
+ [Definisci le squadre di gioco](match-rulesets-components-teams.md)
+ [Stabilisci le regole per l'abbinamento dei giocatori](match-rulesets-components-rules.md)
+ [Consenti ai requisiti di attenuarsi nel tempo](match-rulesets-components-expansion.md)

Puoi creare il tuo set di regole utilizzando la Amazon GameLift Servers console o l'`[CreateMatchmakingRuleSet](https://docs.aws.amazon.com/gameliftservers/latest/apireference/API_CreateMatchmakingRuleSet.html)`operazione.

# Descrivi il set di regole (obbligatorio)
<a name="match-rulesets-components-set"></a>

Fornisci i dettagli per il set di regole.
+ *nome* (opzionale) — Un'etichetta descrittiva per uso personale. Questo valore non è associato al nome del set di regole specificato durante la creazione del set di regole conAmazon GameLift Servers.
+ *ruleLanguageVersion*— La versione del linguaggio delle espressioni di proprietà utilizzato per creare FlexMatch le regole. Il valore deve essere `1.0`.

# Personalizza l'algoritmo di corrispondenza
<a name="match-rulesets-components-algorithm"></a>

FlexMatchottimizza l'algoritmo predefinito per la maggior parte dei giochi per far sì che i giocatori accedano a partite accettabili con tempi di attesa minimi. Puoi personalizzare l'algoritmo e adattare il matchmaking al tuo gioco.

Quello che segue è l'algoritmo di FlexMatch matchmaking predefinito: 

1. FlexMatchinserisce tutti i ticket di matchmaking aperti e riempie i ticket in un pool di biglietti.

1. FlexMatchraggruppa casualmente i biglietti del pool in uno o più lotti. Man mano che il pool di ticket si ingrandisce, FlexMatch forma lotti aggiuntivi per mantenere una dimensione ottimale dei batch.

1. FlexMatchordina i biglietti per età, all'interno di ogni batch.

1. FlexMatchcrea una partita sulla base del ticket più vecchio di ogni lotto. 

Per personalizzare l'algoritmo di corrispondenza, aggiungi un `algorithm` componente allo schema del set di regole. Vedi [FlexMatch schema del set di regole](match-ruleset-schema.md) per le informazioni di riferimento complete. 

Utilizza le seguenti personalizzazioni opzionali per influire sulle diverse fasi del processo di matchmaking. 
+ [Aggiungi l'ordinamento pre-batch](#match-rulesets-components-algorithm-presort)
+ [Batch di moduli basati sugli attributi BatchDistance](https://docs.aws.amazon.com//gameliftservers/latest/flexmatchguide/match-rules-reference-ruletype.html#match-rules-reference-ruletype-batchdistance)
+ [Dai priorità ai ticket di riempimento](#match-rulesets-components-algorithm-backfill)
+ [Preferisci i biglietti più vecchi con le espansioni](#match-rulesets-components-algorithm-expansion)

## Aggiungi l'ordinamento pre-batch
<a name="match-rulesets-components-algorithm-presort"></a>

Puoi ordinare il pool di biglietti prima di formare i batch. Questo tipo di personalizzazione è più efficace con giochi con grandi pool di biglietti. L'ordinamento pre-batch può aiutare ad accelerare il processo di matchmaking e ad aumentare l'uniformità dei giocatori nelle caratteristiche definite.

Definisci i metodi di ordinamento pre-batch utilizzando la proprietà algorithm. `batchingPreference` L'impostazione predefinita è `random`.

Le opzioni per personalizzare l'ordinamento pre-batch includono:
+ **Ordina per attributi del giocatore.** Fornisci un elenco di attributi del giocatore per preordinare il pool di biglietti. 

  Per ordinare in base agli attributi del giocatore, imposta `batchingPreference` e definisci l'elenco degli attributi del giocatore in`sortByAttributes`. `sorted` Per usare un attributo, devi prima dichiararlo nel `playerAttributes` componente del set di regole. 

  Nell'esempio seguente, FlexMatch ordina il pool di biglietti in base alla mappa di gioco preferita dai giocatori e quindi in base alle abilità del giocatore. È più probabile che i batch risultanti contengano giocatori con abilità simili che desiderano utilizzare la stessa mappa.

  ```
  "algorithm": {
      "batchingPreference": "sorted",
      "sortByAttributes": ["map", "player_skill"],
      "strategy": "exhaustiveSearch"
  },
  ```
+ **Ordina per latenza.** Crea corrispondenze con la latenza più bassa disponibile o crea rapidamente corrispondenze con una latenza accettabile. Questa personalizzazione è utile per i set di regole che formano partite di grandi dimensioni con più di 40 giocatori. 

  Imposta la proprietà dell'algoritmo `strategy` su`balanced`. La strategia bilanciata limita i tipi disponibili di istruzioni delle regole. Per ulteriori informazioni, consulta [Progetta un set di regole per FlexMatch partite di grandi dimensioni](match-design-rulesets-large.md). 

  FlexMatchordina i ticket in base ai dati di latenza riportati dai giocatori in uno dei seguenti modi: 
  + *posizioni con la latenza più bassa.* Il pool di biglietti è preordinato in base alle località in cui i giocatori segnalano i valori di latenza più bassi. FlexMatchquindi raggruppa i ticket a bassa latenza nelle stesse posizioni, creando un'esperienza di gioco migliore. Riduce anche il numero di ticket in ogni lotto, quindi il matchmaking può richiedere più tempo. Per utilizzare questa personalizzazione, imposta `batchingPreference` su`fastestRegion`, come mostrato nell'esempio seguente.

    ```
    "algorithm": {
        "batchingPreference": "fastestRegion",
        "strategy": "balanced"
    },
    ```
  + *La latenza accettabile corrisponde rapidamente.* Il pool di biglietti è preordinato in base alle località in cui i giocatori segnalano un valore di latenza accettabile. Ciò forma un minor numero di lotti contenenti più biglietti. Con più biglietti in ogni lotto, trovare partite accettabili è più veloce. Per utilizzare questa personalizzazione, impostate la proprietà `batchingPreference` su` largestPopulation`, come illustrato nell'esempio seguente.

    ```
    "algorithm": {
        "batchingPreference": "largestPopulation",
        "strategy": "balanced"
    },
    ```
**Nota**  
Il valore predefinito per la strategia bilanciata è`largestPopulation`.

## Dai priorità ai ticket di riempimento
<a name="match-rulesets-components-algorithm-backfill"></a>

Se il tuo gioco implementa il backfill automatico o il riempimento manuale, puoi personalizzare il modo in cui FlexMatch elabora i ticket di matchmaking in base al tipo di richiesta. Il tipo di richiesta può essere una nuova richiesta di match o di backfill. Per impostazione predefinita, FlexMatch tratta entrambi i tipi di richieste allo stesso modo.

La prioritizzazione di Backfill influisce sul modo in cui vengono FlexMatch gestiti i ticket dopo averli raggruppati. La prioritizzazione dei backfill richiede set di regole per utilizzare la strategia di ricerca esaustiva. 

FlexMatchnon abbina più ticket di backfill insieme.

Per modificare la priorità per i ticket di riempimento, imposta la proprietà. `backfillPriority`
+ **Abbina prima i biglietti di backfill.** Questa opzione cerca di abbinare i ticket di riserva prima di creare nuove partite. Ciò significa che i giocatori entranti hanno maggiori possibilità di partecipare a una partita esistente. 

  È preferibile utilizzarlo se il gioco utilizza il backfill automatico. Il riempimento automatico viene spesso utilizzato nei giochi con sessioni di gioco brevi e tempi di risposta elevati. Il backfill automatico aiuta questi giochi a creare un numero minimo di partite possibili e a farle iniziare mentre FlexMatch cercano altri giocatori per riempire gli slot aperti.

  Imposta `backfillPriority` su `high`.

  ```
  "algorithm": {
      "backfillPriority": "high",
      "strategy": "exhaustiveSearch"
  },
  ```
+ **I biglietti Match Backfill durano.** Questa opzione ignora i ticket di backfill finché non valuta tutti gli altri ticket. Ciò significa che FlexMatch inserisce i giocatori entranti nelle partite esistenti quando non riesce ad abbinarli a nuove partite. 

  Questa opzione è utile quando desideri utilizzare il backfill come ultima possibilità per coinvolgere i giocatori in una partita, ad esempio quando non ci sono abbastanza giocatori per formare una nuova partita. 

  Imposta `backfillPriority` su `low`. 

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

## Preferisci i biglietti più vecchi con le espansioni
<a name="match-rulesets-components-algorithm-expansion"></a>

Le regole di espansione allentano i criteri di abbinamento quando le partite sono difficili da completare. Amazon GameLift Serversapplica le regole di espansione quando i biglietti di una partita parzialmente completata raggiungono una certa età. I timestamp di creazione dei ticket determinano quando Amazon GameLift Servers applicare le regole; per impostazione predefinita, FlexMatch tiene traccia del timestamp del ticket abbinato più di recente. 

Per modificare quando vengono FlexMatch applicate le regole di espansione, impostate la proprietà come segue: `expansionAgeSelection` 
+ **Espandi in base ai biglietti più recenti.** Questa opzione applica le regole di espansione in base al ticket più recente aggiunto alla potenziale partita. Ogni volta che viene FlexMatch abbinato un nuovo ticket, l'orologio viene azzerato. Con questa opzione, le corrispondenze risultanti tendono ad essere di qualità superiore, ma richiedono più tempo per essere abbinate; le richieste di abbinamento potrebbero scadere prima di essere completate se impiegano troppo tempo a corrispondere. Impostato `expansionAgeSelection` su`newest`. `newest`è l'impostazione predefinita.
+ **Espandi in base ai ticket più vecchi.** Questa opzione applica regole di espansione basate sul ticket più vecchio della potenziale partita. Con questa opzione, FlexMatch applica le espansioni più velocemente, il che migliora i tempi di attesa per i primi giocatori abbinati, ma riduce la qualità della partita per tutti i giocatori. Imposta `expansionAgeSelection` su `oldest`. 

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

# Dichiara gli attributi del giocatore
<a name="match-rulesets-components-attributes"></a>

In questa sezione, elenca gli attributi dei singoli giocatori da includere nelle richieste di matchmaking. Esistono due motivi per cui potresti dichiarare gli attributi dei giocatori in un set di regole: 
+ Quando il set di regole contiene regole che si basano sugli attributi del giocatore.
+ Quando vuoi passare un attributo del giocatore alla sessione di gioco tramite la richiesta della partita. Ad esempio, potresti voler passare le scelte dei personaggi dei giocatori alla sessione di gioco prima che ogni giocatore si connetta. 

Nella dichiarazione di un attributo di un giocatore, includere le informazioni riportate di seguito: 
+ *name* (obbligatorio): questo valore deve essere univoco per il set di regole.
+ *type* (obbligatorio) — Il tipo di dati del valore dell'attributo. I tipi di dati validi sono numero, stringa, elenco di stringhe o mappa di stringhe.
+ *default* (opzionale): immetti un valore predefinito da utilizzare se una richiesta di matchmaking non fornisce un valore di attributo. Se non viene dichiarato alcun valore predefinito e una richiesta non include un valore, non FlexMatch può soddisfare la richiesta.

# Definisci le squadre di gioco
<a name="match-rulesets-components-teams"></a>

Descrivi la struttura e le dimensioni dei team per un abbinamento. Ogni abbinamento deve avere almeno un team e puoi definire tutti i team che desideri. I tuoi team possono avere lo stesso numero di giocatori o essere asimmetrici. Ad esempio, potresti definire un team di mostri con un giocatore singolo e un team di cacciatori con 10 giocatori.

FlexMatch elabora le richieste di abbinamento come abbinamento piccolo o grande, in base a come il set di regole definisce le dimensioni del team. Le partite potenziali con un massimo di 40 giocatori sono partite piccole, le partite con più di 40 giocatori sono partite grandi. Per determinare la dimensione dell'abbinamento potenziale di un set di regole, aggiungi le impostazioni *maxPlayer* per tutti i team definiti nel set di regole. 
+ *nome* (obbligatorio): assegna a ogni squadra un nome univoco. Utilizzi questo nome nelle regole, nelle espansioni e nei FlexMatch riferimenti per i dati di matchmaking in una sessione di gioco.
+ *MaxPlayers* (obbligatorio): specifica il numero massimo di giocatori da assegnare alla squadra.
+ *MinPlayers* (obbligatorio): specifica il numero minimo di giocatori da assegnare alla squadra. 
+ *quantità* (opzionale): specifica il numero di squadre da formare con questa definizione. Quando FlexMatch crea una partita, assegna a queste squadre il nome fornito con un numero aggiunto. Ad esempio `Red-Team1``Red-Team2`, e`Red-Team3`. 

FlexMatchtenta di riempire le squadre fino al numero massimo di giocatori, ma crea squadre con meno giocatori. Se vuoi che tutti i team dell'abbinamento abbiano le stesse dimensioni, puoi creare una regola apposita. Vedi l'[FlexMatchesempi di set di regole](match-examples.md)argomento per un esempio di `EqualTeamSizes` regola.

# Stabilisci le regole per l'abbinamento dei giocatori
<a name="match-rulesets-components-rules"></a>

Crea una serie di regole che valutino l'accettazione dei giocatori in una partita. Le regole possono stabilire i requisiti che si applicano a singoli giocatori, team o un intero abbinamento. Quando Amazon GameLift Servers elabora una richiesta di abbinamento, inizia con il giocatore meno recente nel pool di giocatori disponibili e crea un abbinamento per quel giocatore. Per informazioni dettagliate sulla creazione di FlexMatch regole, consulta[FlexMatchtipi di regole](match-rules-reference-ruletype.md).
+ *name* (obbligatorio): un nome significativo che identifica in modo univoco la regola all'interno di un set di regole. I nomi delle regole sono anche presenti nei log di eventi e parametri in grado di monitorare le attività correlate a questa regola. 
+ *descrizione* (opzionale) — Utilizzate questo elemento per allegare una descrizione testuale in formato libero.
+ *type* (obbligatorio) — L'elemento type identifica l'operazione da utilizzare durante l'elaborazione della regola. Ogni tipo di regola richiede un set di proprietà aggiuntive. Consulta l'elenco delle proprietà e dei tipi di regole validi disponibile in [FlexMatch linguaggio delle regole](match-rules-reference.md). 
+ Proprietà del tipo di regola (potrebbe essere obbligatoria): a seconda del tipo di regola definita, potrebbe essere necessario impostare determinate proprietà della regola. Ulteriori informazioni sulle proprietà e su come utilizzare il linguaggio di espressione delle proprietà FlexMatch sono disponibili in [FlexMatch linguaggio delle regole](match-rules-reference.md).

# Consenti ai requisiti di attenuarsi nel tempo
<a name="match-rulesets-components-expansion"></a>

Le espansioni ti consentono di allentare i criteri delle regole nel tempo quando non FlexMatch riesci a trovare una corrispondenza. Questa funzionalità FlexMatch assicura che il miglior risultato sia disponibile quando non riesce a creare un abbinamento perfetto. Allentando le regole con un'espansione, si amplia gradualmente il numero di giocatori che rappresentano una partita accettabile. 

Le espansioni iniziano quando l'età del biglietto più recente nella partita incompleta corrisponde al tempo di attesa per l'espansione. Quando si FlexMatch aggiunge un nuovo ticket alla partita, l'orologio del tempo di attesa per l'espansione potrebbe essere azzerato. Puoi personalizzare l'inizio delle espansioni nella `algorithm` sezione del set di regole.

Ecco un esempio di espansione che aumenta gradualmente il livello minimo di abilità richiesto per la partita. Il set di regole utilizza una regola sulla distanza, denominata in *SkillDelta*modo da richiedere che tutti i giocatori di una partita si trovino a meno di 5 livelli di abilità l'uno dall'altro. Se non vengono create nuove partite per quindici secondi, questa espansione rileva una differenza di livello di abilità di 10, quindi dieci secondi dopo una differenza di 20.

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

Con i matchmaker che hanno abilitato il riempimento automatico, non limitarti troppo rapidamente ai requisiti di conteggio dei giocatori. Sono necessari alcuni secondi per l'avvio della nuova sessione di gioco e l'avvio del backfill. Un approccio migliore consiste nell'avviare l'espansione dopo che il riempimento automatico tende a entrare in gioco nei giochi. I tempi di espansione variano a seconda della composizione della squadra, quindi fai dei test per trovare la strategia di espansione migliore per il tuo gioco.