Steamworks-dokumentasjon
Matchmaking basert på ferdighet
Steams matchmaking-API har mange alternativer for å matche spillere basert på ferdighet. Mer informasjon om grunnleggende verktøy for matchmaking finnes her.

Oversikt

En vanlig problemstilling når man matcher brukere for flerspiller er å finne brukere med samme ferdighetsnivå eller spillestil, for å sørge for at brukere får mest ut av hver kamp. For å løse dette så tilbyr Steamworks et stort utvalg med søkemuligheter for å finne kamper, basert på lobbysystemet til Steam og statistikk-API-et.

Prosessflyt for matchmaking

Den vanlige modellen for å få grupper til å spille sammen er som følger:
  1. Brukeren velger spillet som de har lyst til å spille flerspiller i, og hva slags flerspiller de vil ha (regler, scenario, osv.). De angir også hva slags ferdighetsnivå de har lyst til å matche med.
  2. Spillet søker etter lobbyer med et lignende sett med regler, med API-et for lobbysøk. En av parametrene er ferdighetsnivået de har lyst til å spille mot.
  3. Hvis en lobby finnes, så blir spillet med i den lobbyen. Hvis ingen lobby finnes, så opprettes en ny lobby.
  4. Eieren av lobbyen kan så oppdatere ferdighetsinnstillingen for lobbyen basert på gjennomsnittlig ferdighetsnivå for brukere i lobbyen (eller ved bruk av en annen funksjon).
  5. Når kampen er ferdig, kan statistikken for hver spiller oppdateres med nye ferdighetsverdier.

Oppretting og oppdatering av ferdighetsverdi for en spiller

For å sette opp ferdighet for en spiller, må du opprette ny statistikk som beskrevet på siden for statistikk-API-et. If desired, you can set up multiple stats to track multiple skill axis. You'll want to set the stats as 'Increment Only' - meaning that the Steam servers enforce the skill stat can only increase, preventing a user as marking them as low skill so they can play against easy targets. Spennet kan være så stort eller lite som du vil – 0 til 100 er vanlig, men ikke et krav. Denne statistikken brukes ved søk og oppsett av kamper, og kan så oppdateres når en kamp tar slutt. Hvis det er mulig, gjør det slik at denne statistikken kun kan angis av offisielle spilltjenere slik at spillere ikke kan tukle med den.

Steg:
  1. Create an increment-only stat for each skill axis you want to track through the 'Stats' tab for your game in the Steamworks Game Admin
  2. I spillet ditt kan du hente en brukers ferdighetsstatistikk ved å kalle ISteamUserStats::GetStat for hver statistikk, og så bruke statistikken i matchmaking.
  3. After a game has completed, update the user's skill stat(s) by calling ISteamUserStats::SetStat for each stat followed by ISteamUserStats::StoreStats

Finding a game session matching by skill

To create a lobby for users of a particular skill level, once a lobby has been created, the owner should add their skill stat(s) to the lobby metadata by calling ISteamMatchmaking::SetLobbyData. Når en annen bruker søker etter en spilløkt ved bruk av API-et for lobbysøk, så kan søkeren bruke ISteamMatchmaking::AddRequestLobbyListNearValueFilter for å finne lobbyer med ferdighetsnivåer nær brukerens nivå. Resultatene som returneres, sorteres etter mest mulig samsvar. If you have multiple measures of skill, you can add multiple near filters, with the near filters set earlier taking precedence in the sort order of the search results. You can also specify mininum or maximum values for the skill to find.

Dealing with low numbers of search results

A common problem with other matchmaking systems is that a search can result in a low number of results, where it's hard to find any game let alone a well-matched one. This is common for multiplayer games where the game session has a strict start and end, like an RTS, without users being able to join a game in progress. This is because the number of users searching at the same second in time can be fairly small. Steam løser dette ved å gjøre hvert søk veldig raskt. Vanligvis tar det bare noen hundre millisekunder å få svar. Dette betyr at du kan starte med er relativt begrenset filter og så utvide søket med etterfølgende søk. This expands the window of time, leading to an increased chance of having a good match occur, while still leaving control in the hands of the game for how long it should make a user wait before letting them play.

Matching by playstyle

Steamworks matchmaking isn't restricted to just one number - you can specify multiple keys to search on. This lets you try and match on playstyle, or have different skill measures for different game modes. To do this, you can make multiple stats to store the numbers, set the multiple keys in the created lobby, and add multiple near-clauses to the search.