Attributi esistenti
La configurazione predefinita della matchmaking di Roblox utilizza segnali basati su attributi esistenti come la posizione del giocatore, il gruppo di età e la latenza.
Per utilizzare dati per la matchmaking che Roblox non include automaticamente nella sua configurazione predefinita, devi creare attributi personalizzati e segnali personalizzati.
| Attributo | Tipo | Descrizione |
|---|---|---|
| Latenza Stimata del Giocatore | Numerico | La latenza stimata di un giocatore in un server. |
| Ha Amici | Categorico | Se un server ha un amico o un altro giocatore con lo stesso indirizzo IP del giocatore che si unisce. |
| Chat vocale abilitata | Categorico | Se un giocatore ha abilitato la chat vocale. |
| Età del Giocatore | Numerico | L'età del giocatore. |
| Tipo di Dispositivo del Giocatore | Categorico | Il tipo di dispositivo del giocatore. Può essere un dispositivo mobile, un computer, un tablet, una console o un dispositivo VR. |
| Lingua del Giocatore | Categorico | La lingua del giocatore. |
| Storia di Gioco del Giocatore | Numerico | Il numero di minuti (in logaritmo base 10) che un giocatore ha giocato in un universo nei 28 giorni scorsi. |
| Occupazione del Server | Numerico | Il numero di giocatori in un server. |
| Gruppo Chat di Testo del Giocatore | Categorico | Il gruppo chat di testo del giocatore dove possono chattare insieme. |
Segnali esistenti
I seguenti sono segnali definiti da Roblox derivati dagli attributi di Roblox:
| Segnale | Descrizione |
|---|---|
| Età | La differenza tra l'età media dei giocatori nel server e l'età del giocatore che si unisce, con una differenza massima rilevante di 25. |
| Tipo di Dispositivo | Il rapporto di giocatori nel server con lo stesso tipo di dispositivo del giocatore che si unisce. |
| Amici | Il numero di persone nel server che sono amici con il giocatore che si unisce o che condividono un indirizzo IP con il giocatore che si unisce. 1 se c'è un giocatore preferito, 0 altrimenti. |
| Latenza | La latenza stimata del giocatore per un server, con un valore massimo rilevante di 250. |
| Lingua | Il rapporto di giocatori nel server con la stessa lingua del giocatore che si unisce |
| Occupazione | Il rapporto di giocatori nel server rispetto alla capacità del server. |
| Storia di Gioco | La differenza tra la storia di gioco media nel server e la storia di gioco del giocatore che si unisce, con una differenza massima rilevante di 4.6. |
| Chat Vocale | Il rapporto di giocatori nel server con la chat vocale abilitata. |
| Chat di Testo | Il rapporto di giocatori nel server che possono chattare con il giocatore che si unisce insieme. |
Età
Un segnale numerico che confronta le età medie dei giocatori su un server con l'età del giocatore che si unisce. Questo segnale ha una differenza massima rilevante di 25. Il punteggio del segnale è inversamente correlato alla differenza di età, il che significa che le differenze di età inferiori hanno punteggi più alti.
dove
Tipo di Dispositivo
Un segnale categorico che misura il rapporto di giocatori nel server con lo stesso tipo di dispositivo del giocatore che si unisce. I tipi di dispositivo includono: Computer, dispositivo mobile, tablet, console e dispositivo VR.
Amici
Un giocatore preferito è un giocatore che è amico del giocatore che si unisce o che condivide lo stesso indirizzo IP del giocatore che si unisce. Il segnale Amici è un segnale categorico con un punteggio di 1 quando c'è un giocatore preferito nel server e un punteggio di 0 quando non ci sono giocatori preferiti nel server.
Il segnale Amici può anche essere considerato un segnale numerico con un valore massimo rilevante di 1.
Lingua
Un segnale categorico che misura il rapporto di giocatori nel server che condividono la stessa impostazione della lingua del giocatore che si unisce.
Latenza
Un segnale numerico che misura il tempo di ping stimato in millisecondi del giocatore che si unisce se giocasse su un server. Questo segnale ha un valore massimo rilevante di 250 millisecondi. Il punteggio del segnale è inversamente correlato al ping, il che significa che valori di ping inferiori hanno punteggi più alti.
Occupazione
Un segnale numerico che misura il rapporto di giocatori nel server rispetto alla capacità del server.
Storia di Gioco
Il valore dell'attributo Storia di Gioco è il numero logaritmico in base 10 di minuti che un giocatore ha giocato in un universo nei 28 giorni scorsi. Questo segnale numerico confronta il valore medio logaritmico della Storia di Gioco dei giocatori nel server con il valore della Storia di Gioco del giocatore che si unisce. Questo segnale ha una differenza massima rilevante di 4.6. Il punteggio del segnale è inversamente correlato alla differenza di storia di gioco, il che significa che differenze di storia di gioco inferiori hanno punteggi più alti.
, dove
Chat Vocale
Un giocatore può avere la chat vocale abilitata o disabilitata. Il segnale Chat Vocale è un segnale categorico che misura il rapporto di giocatori con la stessa impostazione della chat vocale del giocatore che si unisce rispetto al numero di giocatori nel server.
Se un luogo ha la chat vocale disabilitata, il peso del segnale della Chat Vocale è 0.
Chat di Testo
Un segnale categorico che misura il rapporto di giocatori nel server che possono chattare con il giocatore che si unisce insieme in comune.
Attributi personalizzati
Gli attributi personalizzati consentono ai segnali personalizzati di accedere ai dati dei giocatori e del server. Per ulteriori informazioni su come creare i tuoi attributi personalizzati, vedere Crea un attributo personalizzato. Per ulteriori informazioni sugli attributi esistenti di Roblox, vedere Attributi esistenti.
| Attributo | Caratteristiche |
|---|---|
| Giocatore | Persistente Dati personalizzati del giocatore che persistono negli archivi dati, come il livello o il punteggio di un giocatore all'interno del gioco Gestito utilizzando le API DataStore |
| Server | Non persistente e dura solo finché il server è attivo Dati specifici del server come il livello del server o la modalità di gioco Gestito utilizzando l'API MatchmakingService |
Esempio di attributo del giocatore
local DataStoreService = game:GetService("DataStoreService")
local eloStore = DataStoreService:GetDataStore("PlayerElo")
function onMatchEnded(players: {Player}, winners: {Player}, losers: {Player})
for _, player in players do
local updatedElo = CalculateUpdatedElo(player, winners, losers)
local success, errorMessage = pcall(function()
eloStore:SetAsync(player.UserId, updatedElo)
end)
end
end
Esempio di attributo del serverlocal MatchmakingService = game:GetService("MatchmakingService")local RunService = game:GetService("RunService")if RunService:IsStudio() then-- Imposta gli attributi iniziali e lo schema per il testMatchmakingService:InitializeServerAttributesForStudio({Level = "Avanzato",Elo = 123.456,TrainingMode = true})end-- Recupera l'attributo di Livellolocal currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")if errorMessage thenwarn(errorMessage)elseprint("Livello attuale: " .. currentLevel)end-- Aggiorna il valore dell'attributo di Livello a Avanzatolocal success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Avanzato")if not success thenwarn("Impossibile aggiornare l'attributo del server [Level] a [Avanzato] a causa di errore: " .. errorMessage)elseprint("Impostato correttamente [Level] a [Avanzato]")end
Segnali personalizzati
I segnali personalizzati sono creati e definiti da te e possono essere numerici o categorici:
- I segnali numerici sono numeri. Confrontano la differenza tra l'attributo del giocatore che si unisce e il valore aggregato del server, con differenze maggiori che abbassano o aumentano il punteggio. Ad esempio, più il livello di abilità di un giocatore si avvicina al livello di abilità medio del server, più alto sarà il punteggio del segnale numerico. Questo punteggio viene quindi moltiplicato per il peso del segnale.
- I segnali categorici sono stringhe o booleani. Si basano su quanto sia comune l'attributo del giocatore che si unisce rispetto agli altri giocatori nel server. Ad esempio, se una percentuale elevata dei giocatori all'interno di un server ha la stessa lingua preferita del giocatore che si unisce, il punteggio aumenta. Anche questo punteggio viene moltiplicato per il peso del segnale.
Per ulteriori informazioni su come creare i tuoi segnali personalizzati, vedere Crea un segnale personalizzato. Per ulteriori informazioni sui segnali esistenti di Roblox, vedere Segnali esistenti.
Numerico del Giocatore
Giocatore che si unisce
Minimizza la differenza tra l'attributo medio del giocatore del server e l'attributo del giocatore che si unisce. Differenze superiori a 1000 restituiscono un punteggio del segnale di 0.
Formula del giocatore che si unisce per il segnale numerico del giocatorelocal diff = math.abs(server_{aggregation_function}_{attribute_name} - joining_player_{attribute_name})local score = 1 - math.min(diff / max_relevant_difference, 1)return score
Esempio di giocatore che si unisce per il segnale numerico del giocatorelocal server_average_Elo = 2000local joining_player_Elo = 1000local max_relevant_difference = 1500local diff = math.abs(server_average_Elo - joining_player_Elo)local score = 1 - math.min(diff / max_relevant_difference, 1)return score
Valore Costante
Minimizza la differenza tra l'attributo medio del giocatore del server e un valore costante di 500. Differenze superiori a 1000 restituiscono un punteggio del segnale di 0.
Formula del valore costante per il segnale numerico del giocatorelocal diff = math.abs(server_sum_{attribute_name} + joining_player_{attribute_name} - constant_value)local score = 1 - math.min(diff / max_relevant_difference, 1)return score
Esempio di valore costante per il segnale numerico del giocatorelocal server_sum_PowerLevel = 4500local joining_player_PowerLevel = 9901local max_relevant_difference = 1500local constant_value = 5000local diff = math.abs(server_sum_PowerLevel + joining_player_PowerLevel - constant_value)local score = 1 - math.min(diff / max_relevant_difference, 1)
Categoriale del Giocatore
Clustering
Massimizza il rapporto di giocatori nel server che hanno lo stesso attributo dell'attributo del giocatore che si unisce.
Formula di clustering per il segnale categorico del giocatorelocal score = num_players_same_{attribute_name} / occupancyreturn score
Esempio di clustering per il segnale categorico del giocatorelocal num_players_same_Guild = 15local occupancy = 19local score = num_players_same_Guild / occupancyreturn score
Diversificazione
Massimizza il rapporto di giocatori nel server che hanno un attributo diverso dall'attributo del giocatore che si unisce.
Formula di diversificazione per il segnale categorico del giocatorelocal score = num_players_same_{attribute_name} / occupancyreturn 1 - score
Esempio di diversificazione per il segnale categorico del giocatorelocal num_players_same_RpgClass = 15local occupancy = 19local score = num_players_same_RpgClass / occupancyreturn score
Numerico del Server
Giocatore che si unisce
Minimizza la differenza tra l'attributo del server e l'attributo del giocatore che si unisce. Differenze superiori a 1000 restituiscono un punteggio del segnale di 0.
Formula del giocatore che si unisce per il segnale numerico del serverlocal diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})local score = 1 - math.min(diff / max_relevant_difference, 1)return score
Esempio di giocatore che si unisce per il segnale numerico del serverlocal server_Level = 4500local joining_player_Level = 9000local max_relevant_difference = 1500local diff = math.abs(server_Level - joining_player_Level)local score = 1 - math.min(diff / max_relevant_difference, 1)
Valore Costante
Minimizza la differenza tra il valore dell'attributo del server e un valore costante. Differenze superiori a questo valore costante restituiscono un punteggio del segnale di 0.
Formula del valore costante per il segnale numerico del serverlocal diff = math.abs(server_{attribute_name} - constant_value)local score = math.min(diff / max_relevant_difference, 1)return score
Esempio di valore costante per il segnale numerico del serverlocal server_GameTime = 500local max_relevant_difference = 1000local constant_value = 1000local diff = math.abs(server_GameTime - constant_value)local score = math.min(diff / max_relevant_difference, 1)
Categoriale del Server
Confronta con il giocatore che si unisce
Il punteggio è 1 quando il valore dell'attributo del server (ad esempio, Modalità di Gioco) è uguale al valore dell'attributo del giocatore (ad esempio, Modalità di Gioco Preferita). Altrimenti, il punteggio del segnale è 0.
Formula del giocatore che si unisce per il segnale categorico del serverif server_{attribute_name} == joining_player_{attribute_name} thenreturn 1elsereturn 0end
Esempio di giocatore che si unisce per il segnale categorico del serverlocal server_GameMode = "Survival"local joining_player_GameMode = "Survival"if server_GameMode == joining_player_GameMode thenreturn 1elsereturn 0end
Confronta con un valore costante
Il punteggio è 1 quando il valore dell'attributo del server è uguale a un valore costante di vero. Altrimenti, il punteggio del segnale è 0.
Formula del valore costante per il segnale categorico del serverif server_{attribute_name} == constant_value thenreturn 1elsereturn 0end
Esempio di valore costante per il segnale categorico del serverlocal server_GameNotStarted = trueif server_GameNotStarted == true thenreturn 1elsereturn 0end