Attributi esistenti
La configurazione predefinita del 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 il matchmaking che Roblox non include automaticamente nella sua configurazione predefinita, è necessario 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 | Categoriale | Se un server ha un amico o un altro giocatore con lo stesso indirizzo IP del giocatore che si unisce. |
| Voce chat abilitata | Categoriale | Se un giocatore ha la chat vocale abilitata. |
| Età del giocatore | Numerico | L'età del giocatore. |
| Tipo di dispositivo del giocatore | Categoriale | Il tipo di dispositivo del giocatore. Può essere un dispositivo mobile, un computer, un tablet, una console o un dispositivo VR. |
| Lingua del giocatore | Categoriale | La lingua del giocatore. |
| Storia di gioco del giocatore | Numerico | Il numero logaritmico in base 10 dei minuti che un giocatore ha giocato in un universo negli ultimi 28 giorni. |
| Occupazione del server | Numerico | Il numero di giocatori in un server. |
| Gruppo di chat testuale del giocatore | Categoriale | Il gruppo di chat testuale 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 del 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 | Il delta ping del giocatore che si unisce per un server, che è il ping stimato sopra il ping più basso che il giocatore potrebbe raggiungere nel suo miglior datacenter raggiungibile, con un valore massimo rilevante di 100. |
| 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 testuale | 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à più basse hanno punteggi più alti.
dove
Tipo di dispositivo
Un segnale categoriale che misura il rapporto di giocatori sul 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 categoriale 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 categoriale 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 delta ping del giocatore che si unisce in millisecondi se dovesse giocare su un server, che è il ping stimato sopra il ping più basso che il giocatore potrebbe raggiungere nel suo miglior datacenter raggiungibile. Questo segnale ha un valore massimo rilevante di 100 millisecondi. Il punteggio del segnale è inversamente correlato al delta ping, il che significa che valori di delta ping più bassi hanno punteggi più alti.
Occupazione
Un segnale numerico che misura il rapporto di giocatori sul server rispetto alla capacità del server.
Storia di gioco
Il valore dell'attributo Storia di gioco è il numero logaritmico in base 10 dei minuti che un giocatore ha giocato in un universo negli ultimi 28 giorni. Questo segnale numerico confronta il valore medio logaritmico in base 10 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 più basse hanno punteggi più alti.
, dove
Chat vocale
Un giocatore può avere la chat vocale abilitata o disabilitata. Il segnale Chat vocale è un segnale categoriale 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 Chat vocale è 0.
Chat testuale
Un segnale categoriale 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 danno accesso ai segnali personalizzati ai dati del giocatore 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 nei data store, 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 |
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
endlocal MatchmakingService = game:GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Imposta gli attributi iniziali e lo schema per il test
MatchmakingService:InitializeServerAttributesForStudio({
Level = "Avanzato",
Elo = 123.456,
TrainingMode = true
})
end
-- Recupera l'attributo Livello
local currentLevel, errorMessage = MatchmakingService:GetServerAttribute("Level")
if errorMessage then
warn(errorMessage)
else
print("Livello attuale: " .. currentLevel)
end
-- Aggiorna il valore dell'attributo Livello a Avanzato
local success, errorMessage = MatchmakingService:SetServerAttribute("Level", "Avanzato")
if not success then
warn("Impossibile aggiornare l'attributo del server [Livello] a [Avanzato] a causa di errore: " .. errorMessage)
else
print("Impostato con successo [Livello] a [Avanzato]")
endSegnali personalizzati
I segnali personalizzati sono creati e definiti da te e possono essere numerici o categoriali:
- 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 è vicino al livello di abilità medio del server, più alto è il punteggio del segnale numerico. Questo punteggio viene quindi moltiplicato per il peso del segnale.
- I segnali categoriali 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.
Giocatore numerico
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.
local diff = math.abs(server_{aggregation_function}_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scorelocal server_average_Elo = 2000
local joining_player_Elo = 1000
local max_relevant_difference = 1500
local diff = math.abs(server_average_Elo - joining_player_Elo)
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scoreValore 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.
local diff = math.abs(server_sum_{attribute_name} + joining_player_{attribute_name} - constant_value)
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scorelocal server_sum_PowerLevel = 4500
local joining_player_PowerLevel = 9901
local max_relevant_difference = 1500
local constant_value = 5000
local diff = math.abs(server_sum_PowerLevel + joining_player_PowerLevel - constant_value)
local score = 1 - math.min(diff / max_relevant_difference, 1)Giocatore categoriale
Clustering
Massimizza il rapporto di giocatori nel server che hanno lo stesso attributo dell'attributo del giocatore che si unisce.
local score = num_players_same_{attribute_name} / occupancy
return scorelocal num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return scoreDiversificazione
Massimizza il rapporto di giocatori nel server che hanno un attributo diverso dall'attributo del giocatore che si unisce.
local score = num_players_same_{attribute_name} / occupancy
return 1 - scorelocal num_players_same_RpgClass = 15
local occupancy = 19
local score = num_players_same_RpgClass / occupancy
return scoreServer numerico
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.
local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return scorelocal server_Level = 4500
local joining_player_Level = 9000
local max_relevant_difference = 1500
local 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.
local diff = math.abs(server_{attribute_name} - constant_value)
local score = math.min(diff / max_relevant_difference, 1)
return scorelocal server_GameTime = 500
local max_relevant_difference = 1000
local constant_value = 1000
local diff = math.abs(server_GameTime - constant_value)
local score = math.min(diff / max_relevant_difference, 1)Server categoriale
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.
if server_{attribute_name} == joining_player_{attribute_name} then
return 1
else
return 0
endlocal server_GameMode = "Survival"
local joining_player_GameMode = "Survival"
if server_GameMode == joining_player_GameMode then
return 1
else
return 0
endConfronta con 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.
if server_{attribute_name} == constant_value then
return 1
else
return 0
endlocal server_GameNotStarted = true
if server_GameNotStarted == true then
return 1
else
return 0
end