Attributi e segnali

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Attributi esistenti

La configurazione predefinita di matchmaking di Roblox utilizza segnali basati su attributi esistenti come posizione del giocatore, Gruppoetà e latenza.

Per utilizzare i dati per il matchmaking che Roblox non include automaticamente nella sua configurazione predefinita, devi creare attributi personalizzati e segnali personalizzati.

Attributo Tipo Descrizione
Stima del ritardo del giocatore NumeroicoIl ritardo stimato di un giocatore in un Server.
Ha amici CategorialeSe un server abbia un amico o un altro giocatore con lo stesso indirizzo IP del Giocatoredi destinazione.
La chat vocale è abilitata CategorialeSe un giocatore ha la chat vocale abilitata.
Età del giocatore NumeroicoL'età del giocatore.
Tipo di dispositivo del giocatore CategorialeIl inserisci / scrividi dispositivo del giocatore. Può essere un Dispositivomobile, un computer, un tablet, una console o un DispositivoVR.
Lingua del giocatore CategorialeLa lingua del giocatore.
Storico delle partite del giocatore NumeroicoIl numero log-10 dei minuti in cui un giocatore ha giocato in un universo negli ultimi 28 giorni.
Occupazione del server NumeroicoIl numero di giocatori in un Server.

Segnali esistenti

Segnali seguenti sono definiti da Roblox in base agli 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 La proporzione di giocatori nel server con lo stesso tipo di dispositivo del Giocatoreche 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 Giocatoreche si unisce.1 se c'è un Giocatorepreferito, 0 altrimenti.
Tempo di ritardo La latenza stimata del giocatore per un Server, con un valore massimo rilevante di 250.
Linguaggio La proporzione di giocatori nel server con la stessa lingua del Giocatoreche si unisce
Occupazione La proporzione di giocatori nel server rispetto alla capacità del Server.
Storico 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 di voce La proporzione di giocatori nel server con chat vocale abilitata.

Età

Un segnale numerico che confronta l'età media dei giocatori su un server con l'età del Giocatoreche si unisce.Questo segnale ha una differenza massima rilevante di 25.Il punteggio del segnale è inversamente correlato alla differenza d'età, il che significa che le differenze d'età più basse hanno punteggi più elevati.


ageDifferenceSignalScore = 1 - min(25, ageDifference) / 25, where
ageDifference = abs(avgServerAge - joiningPlayerAge)

Tipo dispositivo

Un segnale categorico che misura la proporzione dei giocatori sul server con lo stesso tipo di dispositivo del Giocatoreche si unisce.I tipi di dispositivi includono: computer, Dispositivomobile, tablet, console e DispositivoVR.


deviceTypeSignalScore = (# players with same device as joining player) / (# players on the server)

Amici

Un giocatore preferito è un giocatore che è amico del giocatore che si unisce o che condivide lo stesso indirizzo IP del Giocatoreche 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 sul Server.


friendsSignalScore = hasFriends ? 1 : 0

Il segnale Amici può anche essere considerato un segnale numerico con un valore massimo rilevante di 1.


friendsSignalScore = min(# preferred players in server, 1) / 1

Lingua

Un segnale categorico che misura la proporzione di giocatori sul server che condividono la stessa impostazione linguistica del Giocatoreche si unisce.


languageSignalScore = (# players with same language setting as joining player) / (# players on the server)

Latenza

Un segnale numerico che misura il tempo di ping stimato in millisecondi del giocatore di destinazione se dovesse giocare 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 i valori di ping più bassi hanno punteggi più elevati.


latencySignalScore = 1 - min(250, estimatedPingMs) / 250

Occupazione

Un segnale numerico che misura la proporzione dei giocatori sul server alla capacità del Server.


occupancySignalScore = (# players in server) / serverCapacity

Storia del gioco

Il valore dell'attributo Storia di gioco è il numero log-10 dei minuti in cui un giocatore ha giocato in un universo negli ultimi 28 giorni.Questo segnale numerico compara il valore della cronologia media di gioco dei giocatori nel server al valore della cronologia di gioco del Giocatoreche 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 le differenze di storia di gioco più basse hanno punteggi più elevati.


playHistorySignalScore = 1 - min(4.6, playHistoryDifference / 4.6), where
playHistoryDifference = abs(avgServerPlayHistory - joiningPlayerPlayHistory)

Chat vocale

Un giocatore può avere la chat vocale abilitata o disabilitata.Il segnale di chat vocale è un segnale categorico che misura la proporzione di giocatori con la stessa impostazione di chat vocale del giocatore che si unisce al numero di giocatori nel Server.

Se un luogo ha disattivato la chat vocale, il peso del segnale della chat vocale è 0.


voiceChatSignalScore = (# players with same voice chat setting as joining player) / (# players on the server)

Attributi personalizzati

Gli attributi personalizzati danno accesso ai segnali personalizzati ai dati del giocatore e del server.Per ulteriori informazioni sulla creazione dei propri attributi personalizzati, vedi Crea un attributo personalizzato.Per ulteriori informazioni sugli attributi esistenti di Roblox, vedi Attributi esistenti.

Attributo Caratteristiche
Giocatore Dati personalizzati persistenti che persistono negli store di dati, come il livello o il punteggio di un Giocatoreall'interno dell'esperienza Gestiti utilizzando le API DataStore
Server Non persistente e solo fino a quando 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 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 server

local MatchmakingService = game::GetService("MatchmakingService")
local RunService = game:GetService("RunService")
if RunService:IsStudio() then
-- Configura gli attributi iniziali e lo schema per i test
MatchmakingService:InitializeServerAttributesForStudio(
{
Level = "Advanced",
Elo = 123.456,
TrainingMode = true
})
end
-- Recupera l'attributo Livello
local currentLevel, error = MatchmakingService:GetServerAttribute("Level")
if error then
print(error)
else
print("Current level: " .. currentLevel)
end
-- Aggiorna il valore dell'attributo Livello a Avanzato
local success, error = MatchmakingService:SetServerAttribute("Level", "Advanced")
if not success then
print("Failed to update server attribute [Level] to [Advanced] due to error: " .. error)
else
print("Successfully set [Level] to [Advanced]")
end

Segnali personalizzati

I segnali personalizzati vengono creati e definiti da te e possono essere numerici o categorici:

  • I segnali numerici sono numeri.Confrontano la differenza tra l'attributo del Giocatoredi connessione e il valore aggregato del Server, con differenze maggiori che abbassano o aumentano il punteggio.Ad esempio, più vicino è il livello di abilità di un giocatore al livello medio di abilità del Server, maggiore è il punteggio del segnale numerico.Questo punteggio viene quindi moltiplicato dal peso del segnale.
  • I segnali categorici sono stringhe o booleani.Sono basati su quanto l'attributo del Giocatoredi connessione sia comune quando confrontato con gli altri giocatori nel Server.Ad esempio, se una percentuale elevata dei giocatori all'interno di un server ha la stessa lingua preferita del Giocatoreche si unisce, il punteggio aumenta.Questo punteggio viene quindi moltiplicato anche dal peso del segnale.

Per ulteriori informazioni sulla creazione dei tuoi segnali personalizzati, vedi Crea un segnale personalizzato.Per ulteriori informazioni sui segnali Roblox esistenti, vedi Segnali esistenti.

Giocatore numerico

Unire il giocatore

Minimizza la differenza tra l'attributo medio del giocatore del Servere l'attributo del Giocatoreche si unisce.Le differenze oltre 1000 restituiscono un punteggio di segnale di 0.

Unirsi alla formula del giocatore per il segnale numerico del giocatore

local diff = math.abs(server_{aggregation_function}_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Unirsi all'esempio del giocatore per il segnale numerico del giocatore

local 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 score
Valore costante

Minimizza la differenza tra l'attributo giocatore medio del Servere un valore costante di 500.Le differenze oltre 1000 restituiscono un punteggio di segnale di 0.

Formula di valore costante per il segnale numerico del giocatore

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 score
Esempio di valore costante per il segnale numerico del giocatore

local 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

Clusterizzazione

Massimizza la proporzione dei giocatori nel server che hanno lo stesso attributo dell'attributo del Giocatoreche si unisce.

Formula di clusterizzazione per il segnale categorico del giocatore

local score = num_players_same_{attribute_name} / occupancy
return score
Esempio di clusterizzazione per segnale categorico del giocatore

local num_players_same_Guild = 15
local occupancy = 19
local score = num_players_same_Guild / occupancy
return score
Diversificazione

Massimizza la proporzione dei giocatori nel server che hanno un attributo diverso dall'attributo del Giocatoreche si unisce.

Formula di diversificazione per il segnale categorico del giocatore

local score = num_players_same_{attribute_name} / occupancy
return 1 - score
Esempio di diversificazione per segnale categorale del giocatore

local num_players_same_RpgClass = 15
local occupancy = 19
local score = num_players_same_RpgClass / occupancy
return score

Server numerico

Unire il giocatore

Minimizza la differenza tra l'attributo del Servere l'attributo del Giocatoredi connessione. Le differenze oltre 1000 restituiscono un punteggio di segnale di 0.

Unirsi alla formula del giocatore per il segnale numerico del server

local diff = math.abs(server_{attribute_name} - joining_player_{attribute_name})
local score = 1 - math.min(diff / max_relevant_difference, 1)
return score
Unirsi all'esempio del giocatore per il segnale numerico del giocatore

local 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 Servere un valore costante. Le differenze oltre questo valore costante restituiscono un punteggio di segnale di 0.

Formula di valore costante per il segnale numerico del server

local 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 server

local 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)

Categoria del server

Confronta con il join del giocatore

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.

Unirsi alla formula del giocatore per il segnale categorale del server

if server_{attribute_name} = joining_player_{attribute_name} then
return 1
else
return 0
end
Unirsi all'esempio del giocatore per il segnale categorico del server

local server_GameMode = "Survival"
local joining_player_GameMode = "Survival"
if server_GameMode = joining_player_GameMode then
return 1
else
return 0
end
Confronta con il 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 di valore costante per il segnale categorico del server

if server_{attribute_name} = constant_value then
return 1
else
return 0
end
Esempio di valore costante per il segnale categorico del server

local server_GameNotStarted = true
if server_GameNotStarted = true then
return 1
else
return 0
end