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à.
Esempio: imposta i requisiti a livello di team e i limiti di latenza
Questo esempio illustra come impostare team di giocatori e applicare un set di regole a ciascun team anziché a ciascun singolo giocatore. Utilizza una singola definizione per creare tre team ugualmente abbinati. Inoltre, stabilisce una latenza massima per tutti i giocatori. I massimi della latenza possono diventare più flessibili nel corso del tempo per completare la corrispondenza. Questo esempio riporta le seguenti istruzioni:
-
Creare tre squadre di giocatori.
-
Includere da tre a cinque giocatori in ciascuna squadra.
-
le squadre finali devono contenere lo stesso o quasi lo stesso numero di giocatori (all'interno di una stessa squadra).
-
-
Includere i seguente attributi giocatore:
-
Il livello di competenza di un giocatore (se non viene fornito, l'impostazione predefinita è su 10).
-
Il ruolo del carattere del giocatore (se non viene fornito, l'impostazione predefinita è su "peasant").
-
-
Scegliere i giocatori se il loro livello di competenza è analogo ad altri giocatori presenti nella corrispondenza.
-
Verificare che ogni squadra disponga di una competenza media dei giocatori entro i 10 punti.
-
-
Limitare le squadre al seguente numero di caratteri "medic":
-
Una corrispondenza intera può avere al massimo cinque medic.
-
-
Vengono abbinati solo i giocatori che segnalano una latenza massima di 50 millisecondi.
-
Se una corrispondenza non viene completata in modo rapido, rendere il requisito relativo alla latenza dei giocatori più flessibile come segue:
-
Dopo 10 secondi, consentire valori per la latenza giocatori fino a 100 ms.
-
Dopo 20 secondi, consentire valori per la latenza giocatori fino a 150 ms.
-
Note sull'utilizzo di questo set di regole:
-
Il set di regole garantisce che le squadre vengano abbinate in modo uniforme in base alle competenze dei giocatori. Per valutare la
FairTeamSkill
regola, FlexMatch aggiunge provvisoriamente il potenziale giocatore a una squadra e calcola l'abilità media dei giocatori della squadra. Quindi la confronta con l'abilità media dei giocatori in entrambi i team. Se la regola ha esito negativo, il giocatore potenziale non viene aggiunto alla corrispondenza. -
La squadra e i requisiti in termini di livello di corrispondenza (numero totale di medic) vengono archiviati attraverso una regola di raccolta. Questo tipo di regola richiede un elenco di attributi di caratteri per tutti i giocatori e controlli rispetto ai conteggi massimi. Utilizzare
flatten
per creare un elenco di tutti i giocatori in tutte le squadre. -
Durante la valutazione in base alla latenza, annotare quanto segue:
-
I dati di latenza vengono forniti nella richiesta di abbinamento come parte dell'oggetto Player. Non è un attributo del giocatore, perciò non deve essere elencato come uno.
-
Il matchmaker valuta la latenza per regione. Qualsiasi regione con una latenza più elevata rispetto al massimo viene ignorata. Per essere accettato per una corrispondenza, un giocatore deve avere almeno una regione con una latenza inferiore al massimo.
-
Se una richiesta di abbinamento omette i dati di latenza di uno o più giocatori, la richiesta viene respinta per tutte le corrispondenze.
-
{ "name": "three_team_game", "ruleLanguageVersion": "1.0", "playerAttributes": [{ "name": "skill", "type": "number", "default": 10 },{ "name": "character", "type": "string_list", "default": [ "peasant" ] }], "teams": [{ "name": "trio", "minPlayers": 3, "maxPlayers": 5, "quantity": 3 }], "rules": [{ "name": "FairTeamSkill", "description": "The average skill of players in each team is within 10 points from the average skill of players in the match", "type": "distance", // get players for each team, and average separately to produce list of 3 "measurements": [ "avg(teams[*].players.attributes[skill])" ], // get players for each team, flatten into a single list, and average to produce overall average "referenceValue": "avg(flatten(teams[*].players.attributes[skill]))", "maxDistance": 10 // minDistance would achieve the opposite result }, { "name": "CloseTeamSizes", "description": "Only launch a game when the team sizes are within 1 of each other. e.g. 3 v 3 v 4 is okay, but not 3 v 5 v 5", "type": "distance", "measurements": [ "max(count(teams[*].players))"], "referenceValue": "min(count(teams[*].players))", "maxDistance": 1 }, { "name": "OverallMedicLimit", "description": "Don't allow more than 5 medics in the game", "type": "collection", // This is similar to above, but the flatten flattens everything into a single // list of characters in the game. "measurements": [ "flatten(teams[*].players.attributes[character])"], "operation": "contains", "referenceValue": "medic", "maxCount": 5 }, { "name": "FastConnection", "description": "Prefer matches with fast player connections first", "type": "latency", "maxLatency": 50 }], "expansions": [{ "target": "rules[FastConnection].maxLatency", "steps": [{ "waitTimeSeconds": 10, "value": 100 }, { "waitTimeSeconds": 20, "value": 150 }] }] }