Steamworks-dokumentasjon
Steams lagertjeneste

En nyere versjon er tilgjengelig på engelsk

Den engelske versjonen av siden er blitt oppdatert etter at denne oversettelsen ble publisert.
Trykk her for å se den engelske versjonen av denne siden.
Steams lagertjeneste er et sett med funksjoner som lar et spill ha vedvarende lager for spillere uten å måtte kjøre spesielle tjenere for å behandle brukere eller gjenstander.

Gi oss tilbakemelding og still spørsmål i diskusjonene om Steams lager i gruppen for Steamworks-utviklere.

Beskrivelse

Lagertjenesten kan brukes på to måter – enten tjenerløst eller med en pålitelig tjener som kjenner til spilltilstanden.

Uten en spilltjener kommuniserer spillklienten direkte med Steam-tjenesten for å hente en brukers lagerinnhold, bruke opp og bytte gjenstander, og motta nye gjenstander som utdeles med grunnlag i spilletid. Brukere kan også kjøpe gjenstander direkte fra gjenstandsbutikken, eller handle eller bytte i Steam-samfunnet.

Men ettersom klienten ikke er pålitelig (og nøklene i en klient alltid kan kapres av en angriper), kan du ikke gi brukere spesifikke gjenstander med denne metoden. Du må heller velge spesifikke gjenstander som kan slippes, og konfigurere hvor ofte de slippes. Ved passende tidspunkt kan spillklienten kalle ISteamInventory::TriggerItemDrop. Steams tjenere behandler spilletid og slippfrekvens for hver spiller. Disse API-ene kalles med en intern klient-API-nøkkel som vi går ut ifra at ikke er pålitelig.

Hvis du har en pålitelig tjener i bruk, kan du bruke en privilegert Steam-API-nøkkel på tjeneren og tildele spesifikke gjenstander når aktuelt. Det er fremdeles viktig å huske på at du ikke kan stole på dine egne klienter, så du kan kun gjøre dette når tjeneren kontrollerer spilltilstanden.

Du kan også bruke Steams lagertjeneste til å selge en enkeltgjenstand eller en samling gjenstander i spillet eller gjennom en nettbasert butikk.

Ta en titt på denne presentasjonen fra Steam Dev Days 2016 for en oversikt over implementasjon, informasjon om spesifikke problemer som lagertjenesten løser for utviklere, og en demonstrasjon av hvordan partnere allerede bruker systemet for å betjene kunder.

https://www.youtube.com/watch?v=jDfhPTSOLis

Oversikt over implementasjon

  1. Opprett gjenstandsdefinisjoner
    Du må begynne ved å opprette og laste opp gjenstandsdefinisjoner (ItemDefs).
    Disse beskriver mulige sett med gjenstander i spillet. Du trenger ikke å bruke disse fra selve spillet ditt, men Steam må ha dem for å vise lageret ordentlig. For å opprette ItemDefs kan du gå til seksjonen for Steam-lageret på konfigurasjonssiden i Steamworks. Du kommer deg dit herfra: https://partner.steamgames.com/apps/inventoryservice/
  2. Slå på lagertjenesten
    Når du har gjenstandsdefinisjoner, slå på lagertjenesten ved å krysse av for «Slå på lagertjeneste» på siden der du lastet opp gjenstandsdefinisjonene. Merk at når gjenstandssynligheten er angitt til privat i Steam-økonomiinnstillingene, er det kun kontoer i Steamworks-partnergruppen som kan få tilgang til gjenstandene i spillet.
  3. Angi gjenstandstjenerens nøkkel
    Generer først en utgivernøkkel for applikasjonen (anvisninger: Slik oppretter du en utgivernøkkel for nett-API-et) og legg den i feltet for ressurstjenernøkkel i innstillinger for Steam-økonomien.
  4. Last ned brukerens lager
    Last ned brukerens lager i spillklienten ved å kalle ISteamInventory::GetAllItems.
    Det er vanligvis lurt å gjøre dette regelmessig i tilfelle brukeren har lagt til flere gjenstander gjennom byttehandel eller kjøp.
    Avhengig av spillet kan det også være aktuelt å kjøre en sjekk på begynnelsen av hver kamp eller hvert brett.
  5. Tildel testgjenstander
    Bruk ISteamInventory::GenerateItems for å legge til spesifikke gjenstander til den aktuelle spillerens konto for utviklingsformål.
  6. Gi en bruker et slipp etter spilletid (valgfritt)
    På aktuelle tidspunkt (vanligvis på slutten av en kamp/fase) kan du kalle ISteamInventory::TriggerItemDrop for å se om en bruker har tjent et nytt slipp.
  7. Selg gjenstander (valgfritt)
    Du må definere priser i itemdefs for å legge til støtte for mikrotransaksjoner. Spillere kan da kjøpe dem på noen forskjellige måter:

API-er

Du finner dokumentasjon for API-ene til Steams lagertjeneste i oppslagsverket her: ISteamInventory

Nett-API-er

Du finner dokumentasjon for nett-API-ene til Steams lagertjeneste i oppslagsverket her: IInventoryService

Nettfunksjoner

Dette er strukturerte nettsider som du kan rette brukeren mot.
  • ItemCart – kan brukes for å sende en handlevogn full av gjenstander som skal kjøpes gjennom Steam.
  • BuyItem – kan brukes for å kjøpe en enkelt gjenstand gjennom Steam.