Documentazione di Steamworks
Matchmaking basato sul livello di abilità
L'API del matchmaking di Steam è ricca di opzioni per abbinare i giocatori in base alle loro abilità. Qui puoi trovare maggiori informazioni sul matchmaking.

Introduzione

Un problema comune nell'abbinare gli utenti nelle partite multigiocatore consiste nel trovare giocatori con un livello di abilità o stile di gioco simili per garantire che tutti ottengano il massimo da ogni partita. Per far fronte a questo problema, Steamworks fornisce l'API delle statistiche e un ricco insieme di opzioni di ricerca per le partite,
integrato nel sistema delle lobby di Steam.

Flusso del processo di matchmaking

Il processo che consente ai giocatori di unirsi per giocare è il seguente:
  1. L'utente seleziona nel gioco l'opzione multigiocatore, indica le impostazioni desiderate (regole, scenario, ecc.) e imposta il livello di abilità dei giocatori con cui vuole giocare.
  2. Il gioco cerca le lobby con regole simili utilizzando l'API di ricerca delle lobby. Uno dei parametri è il livello di abilità dei giocatori da abbinare.
  3. Se la ricerca ha esito positivo, il gioco fa unire l'utente alla lobby. In caso contrario, crea una lobby nuova.
  4. Il proprietario della lobby può quindi aggiornare l'impostazione dell'abilità in base all'abilità media degli utenti presenti nella lobby (o mediante un'altra funzione).
  5. Una volta completata la partita, le statistiche di ogni utente vengono aggiornate con i nuovi valori delle abilità.

Creazione e aggiornamento dell'abilità di un giocatore

Per impostare l'abilità di un giocatore, crea nuove statistiche come descritto nella pagina dell'API delle statistiche. Se lo desideri, puoi configurare più statistiche per controllare diversi aspetti dell'abilità. Ti consigliamo di impostare le statistiche su "solo incremento", che prevede che i server di Steam consentano alle statistiche dell'abilità unicamente di aumentare, impedendo così agli utenti di contrassegnarle come basse per poter giocare contro giocatori più deboli. L'ampiezza dell'intervallo può essere scelta liberamente. Solitamente si opta per un intervallo 0-100, ma ciò non costituisce assolutamente un requisito. Le statistiche delle abilità verranno utilizzate durante la ricerca o la configurazione di partite e poi aggiornate al termine dello scontro. È preferibile contrassegnare queste statistiche solo tramite i server di gioco ufficiali, in modo che i giocatori non possano falsificarle.

Passaggi:
  1. Dalla sezione Amministratore gioco di Steamworks, naviga fino alla scheda "Statistiche" e crea una statistica con proprietà di solo incremento per ciascuna abilità che desideri monitorare.
  2. Nel gioco, ottieni le statistiche dell'utente effettuando la chiamata ISteamUserStats::GetStat per ogni statistica, quindi utilizzale durante il matchmaking
  3. Al termine della partita, aggiorna le statistiche delle abilità dell'utente effettuando la chiamata a ISteamUserStats::SetStat per ogni statistica, seguita dalla chiamata a ISteamUserStats::StoreStats.

Ricerca di una sessione di gioco in base all'abilità

Per creare una lobby per gli utenti con un particolare livello di abilità è necessario che il proprietario aggiunga le statistiche delle abilità degli utenti ai metadati della lobby effettuando la chiamata ISteamMatchmaking::SetLobbyData. Quando un altro utente ricerca una sessione di gioco utilizzando l'API di ricerca delle lobby, può utilizzare ISteamMatchmaking::AddRequestLobbyListNearValueFilter per far sì che la ricerca restituisca le lobby con livelli di abilità simili ai suoi. I risultati restituiti saranno ordinati in base alla corrispondenza migliore. Se puoi misurare l'abilità in diversi modi, puoi aggiungere più filtri di prossimità. I filtri di prossimità precedentemente definiti hanno la priorità nell'ordinamento dei risultati di ricerca. È inoltre possibile specificare i valori minimi e massimi per l'abilità da trovare.

Gestione delle ricerche con pochi risultati

Un problema comune agli altri sistemi di matchmaking è che potrebbero essere restituiti pochi risultati in aggiunta a uno scarso grado di corrispondenza. Ciò accade spesso nei giochi multigiocatore in cui le sessioni di gioco presentano un orario di inizio e di fine molto rigido, come ad esempio i titoli di strategia in tempo reale, che non consentono agli utenti di unirsi quando la sessione è in corso. Questo avviene perchè il numero di utenti che effettuano la ricerca nello stesso secondo può essere molto ridotto. Steam risolve questo problema rendendo la ricerca molto rapida, impiegando qualche centinaio di millisecondi per la restituzione dei risultati. Ciò significa che la ricerca può essere prima ristretta applicando dei filtri specifici, quindi più estesa nei tentativi successivi. Ampliando in questo modo l'intervallo di tempo della ricerca, si ottiene una maggiore possibilità di trovare una buona corrispondenza lasciando comunque al gioco la definizione del periodo di attesa prima che l'utente possa giocare.

Ricerca in base allo stile di gioco

Il matchmaking di Steamworks non è limitato a un unico numero, ma consente di specificare diverse chiavi di ricerca. Ciò permette di cercare corrispondenze in base allo stile di gioco o di avere a disposizione diversi gradi di abilità in base alle differenti modalità di gioco. Per fare questo puoi creare più statistiche per conservare i numeri, impostare più chiavi nella lobby creata e aggiungere più clausole di prossimità alla ricerca.