Personalizza l'algoritmo di abbinamento - Amazon GameLift

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à.

Personalizza l'algoritmo di abbinamento

FlexMatch ottimizza 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. FlexMatch inserisce tutti i ticket di matchmaking aperti e riempie i ticket in un pool di biglietti.

  2. FlexMatch raggruppa 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.

  3. FlexMatch ordina i biglietti per età, all'interno di ogni batch.

  4. FlexMatch crea 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 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

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 insortByAttributes. 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 subalanced. 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.

    FlexMatch ordina 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. FlexMatch quindi 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 sufastestRegion, 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

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.

FlexMatch non 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

Le regole di espansione allentano i criteri di abbinamento quando le partite sono difficili da completare. Amazon GameLift applica 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 applica le regole; per impostazione predefinita, FlexMatch tiene traccia del timestamp del ticket abbinato più di recente.

Per modificare il momento in cui vengono FlexMatch applicate le regole di espansione, imposta 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 sunewest. 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" },