Steamworks-dokumentaatio
Sisällön lähettäminen Steamiin
Alla on opas Valven SteamPipe-työkalun käyttämiseen sisällön toimittamiseksi Steamiin. Lisätietoja pelin päivittämisen parhaista käytännöistä löytyy täältä: Pelin päivitys – parhaat käytännöt.

Johdanto SteamPipe-sisältöjärjestelmään

SteamPipe on Steamin taustalla oleva pelien ja sovellusten sisältöjärjestelmä. SteamPipe sisältää seuraavat ominaisuudet.
  • Tehokas ja nopea sisällönjakelu.
  • Julkiset ja yksityiset betahaarat useiden koontiversioiden testaamista varten.
  • Yksinkertainen verkkopohjainen koontiversioiden hallinta. Lataa uusi koontiversio tai palauta edelliseen muutamalla klikkauksella.
  • Mahdollisuus nähdä koontiversiopäivityksen koko ennen käyttöönottoa.
  • Mahdollisuus jakaa sisältöä useiden sovellusten välillä.
  • Mahdollisuus koota asennuslevyjä julkisesta tai betasisällöstä.
  • Pelit tai sovellukset pysyvät saatavilla offline-tilassa silloinkin, kun päivityksen lataus on aloitettu.
  • Kaikki sisältö on aina salattu, ja käytöstä poistetut versiot eivät näy asiakkaille.
  • Paikallinen SteamPipe-sisältöpalvelin, jota voidaan käyttää kehittämisen aikana.
HUOMAA: On olemassa muutamia SteamPipen kannalta olennaisia käsitteitä. Ennen käytön aloittamista perehdy Sovellukset-dokumentaatiossa kerrottuihin käsitteisiin. Peruskäsitys eri osien yhteensopivuudesta on erittäin hyödyllistä, kun lataat tuotteesi Steamiin.

Pelisisällön rakenne – parhaat käytännöt


SteamPipe on suunniteltu sekä pelin ensiasennusten että päivitysten tehokkaaseen lataamiseen. Se toimii yleensä hyvin pelien erilaisista sisältörakenteista huolimatta. On kuitenkin hyvä tietää muutama tärkeä seikka, joista on hyötyä optimoinnissa ja jotka auttavat välttämään tehottomuutta.

Huomaa! Jos peli käyttää Unreal Engineä, katso osion lopusta pakkaustiedostoja koskevat huomautukset.

SteamPipe jakaa jokaisen tiedoston noin yhden megatavun osiin. Jokainen osa pakataan ja salataan ennen kuin se ladataan Steamin sisällönjakelujärjestelmään. Ne pysyvät pakattuina ja salattuina, kunnes ne ladataan, jolloin niiden salaus puretaan, laajennetaan ja sijoitetaan tarvittaviin tiedostosijainteihin.

Kun SteamPipe käsittelee olemassa olevan pelin päivitystä, se hakee pelin edellistä versiota vastaavia ​​osia. Ihannetapauksessa vain uudet tai muokatut osat mistä tahansa tiedostosta on tunnistettu uusiksi lohkoiksi ja ovat ainoat palaset, jotka käyttäjän on ladattava pelin päivittämiseksi.

Monet pelimoottorit käyttävät pakkaustiedostoja peliresurssien yhdistämiseen ja latausaikojen parantamiseen mahdollistamalla tehokkaamman levyn käytön. Yleensä tämä toimii hyvin SteamPipen kanssa. Jotkin pakkaustiedostojärjestelmät kuitenkin käyttävät tai sallivat sellaisten toimintojen käytön, jotka voivat aiheuttaa ongelmia. Näiden ongelmien vaikutus on lähes aina se, että päivitykset ovat paljon suurempia kuin olisi tarpeen. Ne voivat johtaa nopeisiin latauksiin, mutta myös hitaisiin päivitysprosesseihin, koska tarvitaan suuri määrä paikallisia levyprosesseja.

Jos peli käyttää pakkaustiedostoja, tässä on joitain yleisiä ohjeita.

  • Sisältömuutosten tulisi pysyä samassa paikassa pakatussa tiedostossa kuin ne olivat ennen muutoksia.
  • Vältä sekoittamasta sisällön järjestystä pakkaustiedoston kanssa.
  • Rajoita pakkaustiedoston kokoa.
  • Ryhmittele sisältö tason, alueen tai ominaisuuden mukaan omiin pakkaustiedostoihinsa ja harkitse uusien pakkaustiedostojen lisäämistä päivityksiä varten olemassa olevien muokkaamisen sijaan.
  • Älä sisällytä alkuperäisiä tiedostonimiä tai aikaleimoja.

Ensimmäisessä kohdassa viitataan siihen, mitä tavuja tiedoston sisällä muutetaan yksittäistä sisällön osaa muokattaessa. On ihanteellista, jos kyseisen sisällön tietoja muokataan, suurennetaan tai pienennetään samassa pakkaustiedoston sijainnissa. SteamPipe luo uusia lohkoja vain niille tiedoston osille, joissa on sisältöä. Kaikki pakkaustiedostot tarvitsevat kuitenkin jonkinlaista sisältötaulukkoa (TOC), jotta pelimoottori voi paikantaa sisältötiedot. TOC-järjestelmän rakenteella voi olla suuri vaikutus SteamPipe-latausjärjestelmän tehokkuuteen. Ihannetapauksessa tiedoston alussa tai lopussa on yksi TOC tai TOC-tiedostopuu. Koska muu sisältö voi muuttaa tavun sijaintia tiedostossa, myös niiden TOC-merkinnät muuttuvat. Sellaisessa tapauksessa SteamPipe luo uusia lohkoja muutetuille sisältötiedoille ja TOC-osille.

Olemme kuitenkin nähneet joissain pelimoottoreissa, että TOC-tiedot on jaettu koko tiedostoon. Vieläkin huonompi ratkaisu on absoluuttisten tavupoikkeama-arvojen käyttäminen. Jos 3 450 tavun sisältö kasvaa kahdeksalla tavulla, kaikkien tämän jälkeisten resurssien siirtymäarvot tiedostossa muuttuvat. Vaikka jokaisen siirtymäarvon koko on vain neljä tai kahdeksan tavua, muutos kahdeksan tavun numeroon johtaa siihen, että SteamPipe luo uuden 1 megatavun lohkon. Tällä voi olla katastrofaalisia vaikutuksia, jolloin jopa muutamien pienten resurssien muuttaminen pakkaustiedostossa johtaa siihen, että käyttäjät joutuvat lataamaan päivitystä varten yli puolet koko tiedostosta. Jos tiedät tai epäilet, että pakkaustiedoston rakenne aiheuttaa tällaisen ongelman, ota yhteyttä Valven edustajaan mahdollisimman pian. Meillä on vaihtoehtoinen koontiversioalgoritmi, joka voi auttaa lieventämään tätä ongelmaa. Sillä on tosin myös haittapuolia.

SteamPipe ei myöskään tiedä pakkaustiedoston resurssien rajoja. Jos megatavua pienempiä resursseja sekoitetaan, uudelleenjärjestelyä ei todennäköisesti pystytä havaitsemaan, koska aiemmin määritettyjä megatavun paloja ei enää ole tiedostossa. Jos haluat optimoida latausaikoja päivityksen yhteydessä järjestämällä resurssit uudelleen pakkaustiedoston sisällä, muista, että päivityksen latauskoko voi olla erittäin suuri. Suosittelemme tätä vain, jos suorituskykyyn on tehty merkittäviä parannuksia.

SteamPipe kokoaa uuden version vanhan rinnalle asiakaslaitteen pakkaustiedoston päivittämiseksi. Kun kaikki uudet tiedostot on koottu, se suorittaa päivityksen poistamalla vanhat tiedostot ja lisäämällä uudet. Toisin sanoen 25 gigatavun pakkaustiedoston päivittämiseksi SteamPipe luo aina uuden 25 gigatavun tiedoston. Jos päivitys muuttaa 10 kyseisen tiedoston tavua, SteamPipe joutuu kopioimaan tietoja vanhasta tiedostosta uuteen lähes 25 gigatavun edestä. Käyttäjän tallennuslaitteistosta riippuen tämä voi olla hyvin hidas prosessi. Tästä syystä suosittelemme kahta asiaa.

Ensinnäkin – rajoita pakkaustiedostojen kokoa. Todennäköisesti yksi tai kaksi gigatavua on riittävästi. Se on enemmän kuin tarpeeksi mahdollistamaan tehokkaan levyn lukemisen peliä ladattaessa.

Toiseksi – pidä saman pakkaustiedoston resurssien laajuus melko rajoitettuna. Esimerkiksi pelin yhtenä tasona tai avattavana ominaisuutena. Näin päivitykset, jotka keskittyvät pelin tiettyihin osiin, eivät aiheuta muiden osien tietojen kopiointia laitteelle. Kun lisätään uusia toimintoja, tasoja ym., ne voidaan ja kannattaa sijoittaa omiin uusiin pakkaustiedostoihinsa. Päivityksen lataavat käyttäjät voivat helposti ladata uudet tiedostot, jolloin vältytään edellä mainituilta pakkaustiedostojen muokkaamiseen liittyviltä ongelmilta.

Jos olet epävarma, voit käyttää paikallista binääritiedostojen vertailutyökalua, kuten Beyond Comparea, vertaillaksesi pakkaustiedostojen versioita. Varmista, että näytetyt erot ovat odotetun kokoisia muuttuneille resursseille ja että tiedostossa ei ole kymmeniä tai satoja pieniä muutoksia. Jos havaitset jotain odottamatonta, tarkista pakkaustiedostotyökalun asetukset.

Pakkaaminen: Koska Steam pakkaa kaikki tiedot latausta ja tallennusta varten, emme yleensä suosittele käyttämään pakkaustiedostoissa yleistä pakkaustapaa. Jos olet kuitenkin huolissasi pelilevyn koosta, saatat silti haluta käyttää tiedostojen pakkaamista. Se toimii hyvin SteamPipen kanssa niin kauan kuin edellä mainitut kriteerit täyttyvät. Erityisesti tulee varmistaa, että pakkaaminen on mahdollisimman resurssikohtaista. Resurssien rajat ylittävä pakkaaminen levittää muutoksia ja vaatii käyttäjiä lataamaan enemmän tietoja kuin on tarpeen.

Salaus: Pakkaamisen tavoin todennäköisesti tarpeetonta. Mainitut riskit pätevät myös salaukseen.

Jos noudatat näitä sääntöjä, pienennät korjaustiedoston kokoa, ja vain uusi sisältö on ladattava. Käyttäjät kiittävät sinua siitä, ja voit parantaa tuotteen laatua lähettämällä lisää päivityksiä.

Jos epäilet, että pelin paketointi ei sovi yhteen SteamPipe-päivitysprosessin kanssa, ota yhteyttä Valve-edustajaan, niin voimme selvittää mahdollisia lisäominaisuuksia.

Unreal Engine – erityishuomiot

Jotkin Unreal Enginen versiot käyttävät pakkaustiedostoissa resurssien täytesäätöä. Tällä voi olla erittäin suuri vaikutus SteamPipe-päivitysten kokoon. Säätö voi aiheuttaa peräkkäisiä resurssien siirtymiä luotaessa uusia versioita, varsinkin jos tiedoston pakkaaminen on käytössä. 1 Mt:n (1 048 576 tavun) täytesäädön käyttäminen auttaa varmistamaan, että uudelleenkohdistukset siirtävät resursseja saman lohkokoon kertoimella, jota SteamPipe käyttää delta-laskelmissa.

Jos esimerkiksi haluat muuttaa tai määrittää täytesäätöä, kun valmistelet pelin pakkaustiedostoja, sinun on vaihdettava yksi rivi tiedostossa UnrealEngine/Engine/source/Programs/AutomationTool/Win/WinPlatform.Automation.cs. Tiedosto sisältää funktion GetPlatformPakCommandLine. Muuta seuraavaa riviä toiminnon sisällä:

string PakParams = " -patchpaddingalign=2048";

Rivin tulisi näyttää tältä:

string PakParams = " -patchpaddingalign=1048576 -blocksize=1048576";

Muutoksen avulla pitäisi olla mahdollista ottaa tiedoston pakkaaminen käyttöön ja silti pystyä käyttämään optimoituja SteamPipe-päivityksiä.

Unreal Engine on Epicin tavaramerkki tai rekisteröity tavaramerkki Yhdysvalloissa ja muualla.

Steamworksin ohjevideo – pelin rakentaminen SteamPipessa

Ohjevideo esittelee SteamPipen ja vaiheet Steam-mallisovelluksen tekemiseen Steamworksin työkalujen avulla.
https://www.youtube.com/watch?v=SoNH-v6aU9Q.

Steamworksin ohjevideo – uusien alustojen ja kielien lisääminen

Ohjevideo opastaa, miten lisätään uusia alustoja ja kieliä peliin lisäämällä depotteja.
https://www.youtube.com/watch?v=PShS32hcing.

SteamPipen tekniset tiedot

SteamPipe käyttää HTTP-protokollaa sisällön toimittamiseen. Koska lataukset ovat säännöllistä verkkoliikennettä, mikä tahansa kolmannen osapuolen HTTP-välimuisti asiakasohjelman ja Steam-palvelimien välillä parantaa latausnopeutta. Sisältöä voi isännöidä ulkoisten CDN-palveluntarjoajien palvelimilla, jotka on helppo lisätä sisältöverkostoon. Useimpien kuluttajien palomuurit sallivat HTTP-liikenteen eivätkä estä latauksia.

SteamPipella on tehokas korjausalgoritmi, joka perustuu binaarisiin deltoihin ja muuttaa vain olemassa olevien sisältötiedostojen muokattuja osia. Kun sisältö päivitetään, vain nämä deltat on lähetettävä. Tämän ansiosta sekä kehittäjien että käyttäjien siirrot ovat pienempiä ja nopeampia. Useimmat kumppanit huomaavat, että paikallisen SteamPipe-sisältöpalvelimen käyttö ei ole tarpeen, koska yksityisiin haaroihin perustuvia korjaustiedostoja voidaan asentaa tehokkaasti.

Steamin koontiversiotili

Ennen kuin voit luoda koontiversioita Steamissä, sinulla on oltava Steamworks-tililläsi Steam-tili, jolle on myönnetty oikeudet Sovelluksen metadatan muokkaus ja Julkaise sovellusmuutokset Steamiin. Turvallisuussyistä on suositeltavaa, että sinulla on oma koontiversiotili, jolla on vain kyseiset oikeudet. Voit luoda uuden Steam-tilin tätä tarkoitusta varten osoitteessa https://store.steampowered.com/join.

Kuka tahansa Steamworks-tilisi ylläpitäjä voi lisätä Steam-tilin ja myöntää tarvittavat käyttöoikeudet. Lisää tietoa tästä prosessista löytyy dokumentaatiosta Steamworks-tilin hallinta. Esimerkki siitä, miltä tällainen tili saattaa näyttää:

create_build_account.png
Huomaa: Jos Steam-tilin on määritettävä julkaistun sovelluksen koontiversio, siihen tulee liittää joko puhelinnumero tai Steam-mobiilisovellus. Näitä menetelmiä käytetään vahvistamaan julkaistun pelin koontiversion käyttöönotto. Jos Steam-tilillä on myös suojausmuutoksia (sähköpostiosoite, puhelinnumero jne.), sinun on odotettava kolme päivää ennen kuin voit ottaa julkaistun pelin koontiversion käyttöön. Tämä estää vaarantuneita tilejä hallitsemasta pelin julkaistuja koontiversioita.

Aloitusasetukset uusille SteamPipe-sovelluksille

Noudata seuraavia vaiheita uusien SteamPipe-sovellusten määrittämiseksi.
  1. Etsi pelin sovellustunnus (löydät sen valitsemalla pelin etusivulta Steamworksissä).
  2. Siirry sovelluksen sivulle Yleiset asennusmääritykset.
  3. Määritä vähintään yksi julkaisuvaihtoehto (polku ja valinnaiset pelin käynnistämiseen tarvittavat argumentit). Vie hiiri (?)-kohdan päälle saadaksesi lisätietoja kustakin kentästä.

    Alla olevassa esimerkissä näkyy viisi käynnistysvaihtoehtoa, kaksi Windowsille, kaksi macOSille ja yksi Linuxille.
    Käynnistysvaihtoehto 3 näkyy Windowsissa vain, jos käyttäjä omistaa myös määritetyn lisämateriaalin.

    updatedlaunchoptions_3.png
  4. Mene Depotit-välilehdelle ja lisää depotteja tarpeen mukaan sovellukselle. Oletuksena depotti voi jo olla määritetty.
    1. Klikkaa oletusdepottia ja muuta sen nimi oikeaksi ja tunnistettavaksi nimeksi (kuten perussisältö tai Windows-sisältö).
    2. Jätä kieliasetukseksi [Kaikki kielet], ellei kyseessä ole kielikohtainen depotti.
    3. Jätä käyttöjärjestelmäasetukseksi [Kaikki käyttöjärjestelmät], ellei tämä ole käyttöjärjestelmäkohtainen depotti. Jos sovellus toimii kaikilla laitteilla tai vain tietokoneella tai vain Macillä, jätä asetukseksi [Kaikki käyttöjärjestelmät]. Määritä asetus vain käyttöjärjestelmäkohtaisille pelidepoteille.
    4. Klikkaa Lisää uusi depotti luodaksesi lisää depotteja.
    5. Klikkaa Tallenna tallentaaksesi tehdyt muutokset.
  5. Kun olet määrittänyt depottisi, julkaise tekemäsi muutokset Julkaise-välilehdellä.
  6. Vastikään määritetyt depotit on sisällytettävä pakettiin, jotta voit omistaa ne. Jokaisessa Steamin pelissä tulee olla Developer Comp -paketti, joka myönnetään automaattisesti julkaisijaryhmässäsi luetelluille tileille.
    Voit lisätä uudet depotit kyseiseen pakettiin (sekä muihin paketteihin, joissa pitäisi olla nämä depotit) kohdassa Liittyvät paketit ja lisämateriaalit.
Huomaa: Jos suoritettava tiedosto on pääasennuskansion alikansiossa, lisää alikansion nimi Suoritettavat-kenttään. Älä käytä kauttaviivoja tai pisteitä.
Alustaa koskeva huomautus: Kuten yllä näkyy, macOS-sovellukset voidaan käynnistää määrittämällä joko sovelluspaketti (Game.app) tai komentosarja tai binääritiedosto (Game.app/Contents/MacOS/Game). Sovelluspakettimuotoa tulisi suosia, jos mahdollista, koska sen avulla macOS voi määrittää käynnistysparametrit tarkemmin samalla tavalla kuin jos se käynnistettäisiin manuaalisesti Steamin ulkopuolella.

Yksi esimerkki tästä on, että tällä hetkellä sovellukset, jotka käynnistetään Apple Silicon -laitteilla sovelluspaketin kautta, käynnistävät sovelluksen parhaan käytettävissä olevan arkkitehtuurin, kun taas suorien binääritiedostojen käynnistykset käyttävät samaa arkkitehtuuria kuin Steam-prosessi (tällä hetkellä x86_64).

SDK:n määrittäminen SteamPipe-latauksia varten

Lataa ja pura Steamworks SDK:n uusin versio koneelle, jolla aiot lähettää koontiversioita.

SteamPipe-työkalut löytyvät SDK:n tools-kansiosta, jossa on kaksi asiaankuuluvaa alihakemistoa.

ContentBuilder-hakemisto on samassa paikassa, jossa pelin sisältö ja SteamPipe-rakennustyökalut sijaitsevat. Hakemisto sisältää seuraavat alihakemistot:
  • builder – sisältää aluksi vain steamcmd.exe:n, joka on Steamin komentoriviversio
  • builder_linux – steamcmd:n Linux-versio
  • builder_osx – steamcmd:n macOS-versio
  • content – sisältää kaikki pelitiedostot, jotka kootaan depotteihin
  • output – koontilokien, lohkovälimuistin ja välitulosteen sijaintipaikka HUOMAA: Tämä kansio voidaan poistaa tai tyhjentää milloin tahansa, mutta sen poistamisen jälkeinen latausaika on pidempi.
  • scripts – paikka, jonne kaikki koontiversiokomentosarjat sijoitetaan pelidepottien kokoamista varten.
steampipebuilddir.png

Kannattaa suorittaa steamcmd.exe-tiedosto kerran suoraan alustan kokoamiskansiossa käynnistääksesi koontijärjestelmän. Tämän pitäisi täyttää kokoamishakemisto tiedostoilla, joita se tarvitsee depottien rakentamiseen.

ContentServer-hakemisto sisältää työkalut oman paikallisen SteamPipe-sisältöpalvelimen suorittamiseen niin halutessasi.

SteamCmd macOSissa

Suorita seuraavat vaiheet ottaaksesi SteamCmd:n käyttöön macOSissa:
  1. Siirry päätteellä kohtaan tools\ContentBuilder\builder_osx.
  2. Suorita komento chmod +x steamcmd.
  3. Kirjoita bash ./steamcmd.sh.
  4. SteamCmd käynnistyy ja päivittyy uusimpaan koontiversioon, jolloin SteamCmd-kehote jää avoimeksi.
  5. Kirjoita exit ja paina return poistuaksesi kehotteesta.
Tämän jälkeen voit seurata dokumentaation ohjeita (korvaamalla polut tarvittaessa) luodaksesi depotti- ja sovellusmääritystiedostoja sisällön lataamiseksi Steamiin.

SteamPipe-koontiversion määritystiedostojen luominen

Jos haluat ladata tiedostoja sovellukseesi SteamPipen avulla, sinun on luotava komentosarjoja, jotka kuvaavat koontiversiotasi ja jokaista siihen sisällytettävää depottia. Tässä näkyvät komentosarjaesimerkit ovat Steamworks SDK:n kansiossa Tools\ContentBuilder\scripts.

SteamPipe GUI -työkalu

Jos käytät Windowsia ja haluat mieluummin graafisen käyttöliittymätyökalun asetustiedostojen luomiseen ja koontiversioiden lataamiseen, voit käyttää SteamPipeGUI:ta, joka löytyy Steamworks SDK:n työkalukansiosta. Pakkaustiedostossa on lisäohjeita, joilla pääset alkuun.

Jos päätät käyttää GUI-työkalua, seuraavien osien lukeminen on silti suositeltavaa, jotta voit tutustua paremmin SteamPipen toimintaan.

Yksinkertainen koontikomentosarja


Aloitetaan yksinkertaisimmalla mahdollisella koontikomentosarjalla. Otetaan esimerkiksi peli, jonka sovellustunnus on 1000 ja jolla on yksi depotti, jonka depottitunnus on 1001. Halutaan ladata kaikki tiedostot sisältökansiosta ja sen alikansioista. Tätä varten tarvitaan yksi ainoa koontiversion komentosarja. Luo silmäys SDK:hon sisältyvää simple_app_build.vdf-tiedostoon.

"AppBuild" { "AppID" "1000" // sovellustunnus "Desc" "Tämä on yksinkertainen koontiversion komentosarja" // koontiversion sisäinen kuvaus "ContentRoot" "..\content\" // sisällön pääkansio, suhteessa tämän tiedoston sijaintiin "BuildOutput" "..\output\" // koontiversion tulostuskansio koontiversion lokeja ja välimuistitiedostoja varten "Depots" { "1001" // depotin tunnus { "FileMapping" { "LocalPath" "*" // kaikki tiedostot sisällön pääkansiosta "DepotPath" "." // juureen määritetyt depotit "recursive" "1" // sisällytä kaikki alikansiot } } } }

Säädä pelin sovellus- ja depottitunnuksia tarpeen mukaan. Koontiversion käynnistämiseksi tulee suorittaa steamcmd ja pari parametria.
tools\ContentBuilder\builder\steamcmd.exe +login <account_name> <password> +run_app_build ..\scripts\simple_app_build.vdf +quit

Seuraavat vaiheet käydään läpi SteamPipea käytettäessä.
  1. Steamcmd.exe päivittyy uusimpaan versioon.
  2. Steamcmd.exe kirjautuu Steamin palvelinpuolen järjestelmään käyttämällä annettua Steam-kokoamistiliä.
  3. Koontiversion käynnistys rekisteröidään MDS-palvelimelle (Master Depot Server), joka varmistaa, että käyttäjällä on tarvittavat oikeudet sovelluksen muokkaamiseen.
  4. Kullekin sovelluksen koontiversioon sisältyvälle depotille luodaan tiedostoluettelo sisältökansion tiedostojen ja depotin koontiversion asetustiedostossa määritettyjen suodatussääntöjen perusteella.
  5. Jokainen tiedosto skannataan ja jaetaan pieniin, noin megatavun osiin. Jos depotti on koottu aiemmin, tämä osiointi säilyttää mahdollisimman paljon muuttumattomia lohkoja.
  6. Uudet tiedostolohkot on pakattu, salattu ja sitten ladattu MDS-palvelimelle.
  7. Depottiversiolle luodaan lopullinen manifesti. Jokainen manifesti yksilöidään 64-bittisellä manifestitunnisteella.
  8. Kun kaikki depotit on käsitelty, MDS saa valmiiksi tämän sovelluksen koontiversion ja määrittää sille yleisen koontiversiotunnuksen.
  9. Kun koontiversio on valmis, koontiversion tulostuskansiossa voi olla csm- ja csd-tiedostoja. Ne ovat väliaikaisia ja voidaan poistaa, mutta ne nopeuttavat myöhempiä koontikertoja.


Kun koontiversio on valmis, näet sen sovellusten koontiversiosivulla, tässä tapauksessa https://partner.steamgames.com/apps/builds/1000. Siellä voit julkaista kyseisen koontiversion oletushaaralle tai mille tahansa betahaaralle, ja käyttäjät voivat ladata päivityksen muutamassa minuutissa.

Koontiversioiden kehittyneet komentosarjat


Jos sovelluksessasi on paljon depotteja, joissa on monimutkaiset tiedostojen kartoitussäännöt, voit luoda kullekin depotille koontiversion komentosarjan, johon sovelluksen koontikomentosarja viittaa. Katsotaanpa ensin käytettävissä olevia parametreja sovelluksen koontikomentosarjassa.

  • AppID – Pelisi sovellustunnus. Lähettävä Steam-kumppanitili tarvitsee sovelluksen metadatan muokkausoikeudet.
  • Desc – Kuvaus näkyy vain itsellesi sovellushallintapaneelin omien koontiversioiden osiossa. Tätä voidaan muuttaa milloin tahansa sen jälkeen, kun olet ladannut koontiversiosi Koontiversiot-sivulle.
  • ContentRoot – Pelitiedostojen juurikansio voi olla absoluuttinen polku tai suhteellinen koontikomentosarjatiedostoon nähden.
  • BuildOutput – Rakennuslokien, depottiluetteloiden, kappalevälimuistien ja välitulosteen sijaintihakemisto. Käytä erillistä levyä koontitulostetta varten parhaan suorituskyvyn saavuttamiseksi. Tämä jakaa levyn IO-kuormituksen ja antaa sisällön juurilevyn käsitellä lukupyynnöt ja tulostuslevyn kirjoituspyynnöt.
  • Preview – Tämän tyyppinen koontiversio tulostaa vain lokit ja tiedostoluettelon koontiversion tulostuskansioon. Esikatselukoontiversioiden luominen on hyvä tapa iteroida latausskriptejä ja varmistaa, että tiedostojen kartoitukset, suodattimet ja ominaisuudet toimivat tarkoitetulla tavalla.
  • Local – Aseta tämä paikallisen SteamPipe-sisältöpalvelimen (LCS) htdocs-poluksi. LCS kokoaa sisältöä vain omalle HTTP-palvelimellesi, ja voit testata pelin asennusta käyttämällä Steam-asiakasohjelmaa.
  • SetLive – Betahaaran nimi, joka otetaan automaattisesti käyttöön onnistuneen kokoamisen jälkeen. Jos se on tyhjä, haaraa ei käytetä. Huomaa, että oletushaaraa ei voi ottaa automaattisesti käyttöön. Se on tehtävä sovelluksen ylläpitopaneelin kautta.
  • Depots – Tämä osio sisältää kaikki tiedostokartoitukset, suodattimet ja tiedostojen ominaisuudet jokaiselle depotille tai viittaa erilliseen komentosarjatiedostoon jokaiselle depotille.

Esimerkki app_build_1000.vdf-sovelluksen komentosarjasta, jossa käytetään kaikkia vaihtoehtoja:
"AppBuild" { "AppID" "1000" // sovellustunnus "Desc" "Your build description here" // koontiversion sisäinen kuvaus "Preview" "1" // tekee koontiversiosta esikatseluversion, mitään ei ole ladattu "Local" "..\..\ContentServer\htdocs" // laittaa sisällön paikalliselle sisältöpalvelimelle sen sijaan, että se ladattaisiin Steamiin "SetLive" "AlphaTest" // asettaa koontiversion betahaaraan "ContentRoot" "..\content\" // sisällön juurikansio suhteessa tähän komentotiedostoon "BuildOutput" "D:\build_output\" // asettaa koontiversion välimuistin ja lokitiedostot eri asemaan paremman suorituskyvyn takaamiseksi "Depots" { // kunkin depotin tiedostokartoitusohjeet ovat erillisissä komentosarjatiedostoissa "1001" "depot_build_1001.vdf" "1002" "depot_build_1002.vdf" } }

Tämä sovelluskomentosarja viittaa kahteen depotin komentosarjatiedostoon, jotka määrittävät kaikki tiedostokartoitukset ja tiedoston ominaisuudet. Seuraavat ohjeet ovat saatavilla depotin koontiversion komentosarjassa (myös silloin, jos osio sisältyy sovelluskomentosarjaan).

  • DepotID – Depotin tunnus.
  • ContentRoot – Voit vaihtoehtoisesti ohittaa pelitiedostojen juurikansion sovelluskomentosarjan depottikohtaisesti.
  • FileMapping – Yhdistää yksittäisen tiedoston tai joukon tiedostoja paikallisesta sisältöjuurikansiosta depottiisi. Käytössä voi olla useita tiedostojen kartoituksia, jotka lisäävät tiedostoja depottiin. LocalPath-parametri on suhteellinen polku sisällön juurikansioon ja voi sisältää erikoismerkkejä, kuten ? tai *. Se koskee myös vastaavia tiedostoja alikansioissa, jos Recursive on käytössä. DepotPath-parametri määrittää, missä valittujen tiedostojen pitäisi näkyä depotissa (käytä vain merkkiä . ilman erityiskartoitusta).
  • FileExclusion – Sulkee pois kartoitetut tiedostot uudelleen ja voi sisältää myös erikoismerkkejä, kuten ? tai *.
  • InstallScript – Merkitsee tiedoston asennuskomentosarjaksi ja allekirjoittaa tiedoston koontiversioprosessin aikana. Steam-asiakasohjelma tietää suorittaa ne missä tahansa sovelluksessa, joka ottaa depotin käyttöön.
  • FileProperties – Lisää tiedostoon erityiset merkinnät:
    • userconfig – Käyttäjä tai peli pystyy muokkaamaan tiedostoa. Tätä ei voi ohittaa päivityksellä. Vaikka päivitys on erilainen kuin tiedoston edellinen versio, vahvistusvirhettä ei aiheudu.
    • versioedconfig – Samankaltainen kuin userconfig. Erona on, että jos depotin tiedosto päivitetään, se korvataan paikallisesti, kun käyttäjän peli päivittyy. Päivitä depottitiedosto vain silloin, kun tarvittava muoto muuttuu tai kun korjaat virheitä.

Esimerkki depot_build_1002.vdf depotin koontiversion komentosarjasta käyttää kaikkia vaihtoehtoja:
"DepotBuild" { "DepotID" "1002" "ContentRoot" "C:\content\depot1002" // ohita sovelluksen koontikomentosarjan ContentRoot "FileMapping" { // kaikki lähdetiedostot ja -kansiot kohteessa ".\bin" kartoitetaan depotin kansioon ".\executables" "LocalPath" "bin\*" "DepotPath" "executables\" "Recursive" "1" // sisällytä alikansiot } "FileMapping" { // korvaa äänitiedostot kohteessa \\audio saksankielisillä versioilla "LocalPath" "localization\german\audio\*" "DepotPath" "audio\" } "FileMapping" { // kopioi saksalaisen version asennuskomentosarja depotin juurikansioon "LocalPath" "localization\german\german_installscript.vdf" "DepotPath" "." } "FileExclusion" "bin\server.exe" // jätä pois tiedosto "FileExclusion" "*.pdb" // jätä pois PDB-tiedostot kaikkialla "FileExclusion" "bin\tools*" // jätä pois tiedostot kansiossa bin\tools\ "InstallScript" "localization\german\german_installscript.vdf" "FileProperties" { "LocalPath" "bin\setup.cfg" "Attributes" "userconfig" // tätä tiedostoa muokataan suorituksen aikana } }

Huomaa! Komentosarjat voidaan nimetä halutulla tavalla, mutta käytämme johdonmukaisuuden vuoksi nimiä app_build_<AppID> ja depot_build_<DepotID>. Jos tiedät kokoavasi sovelluksia tällä koneella, kannattaa luoda komentosarjahakemisto kullekin sovellukselle. Tämä helpottaa sovellusten koontiversioiden komentosarjojen järjestelyä.

SteamPipen käyttö CI/CD-ympäristössä


Steamcmd voidaan määrittää jatkuvaa integrointia varten tai laitteelle tai virtuaalikoneelle, jonka näköistiedosto asennetaan usein uudelleen. Siihen vaaditaan määritystiedosto, joka sisältää kirjautumistunnuksen. Noudata seuraavia ohjeita, jotta alkuperäinen kirjautumistunnus tallentuu oikein.

  1. Suorita "steamcmd.exe +login <username>" koneella, joka suorittaa koontiversion.
  2. Anna salasana ja SteamGuard-tunnus.
  3. Kirjoita "info", jolloin tilin pitäisi näkyä liitettynä.
  4. Kirjoita "quit".
  5. Älä anna seuraavilla kerroilla salasanaa. Suorita vain "steamcmd.exe +login <username>".
  6. Varmista, että sijaintiin <Steam>\config\config.vdf tallennettu määritystiedosto tallennetaan ja säilytetään suoritusten välillä, koska tiedosto voidaan päivittää onnistuneen kirjautumisen jälkeen.

Huomaa! Jos kirjaudut sisään uudelleen ja annat salasanan, uusi SteamGuard-tunnus luodaan ja vaaditaan kirjautumiseen.

Päivitysten hallinta

Kun sovellus on julkaistu asiakkaille, nämä saavat oletusversioksi merkityn koontiversion. Uusi koontiversio kannattaa aina testata ennen kuin se tuodaan asiakkaiden saataville. Lisätietoja aiheesta löytyy sivulta Testaaminen Steamissä.

Koontiversioiden virheenkorjaus

Jos koontiversio ei onnistunut, virhetietoja kannattaa hakea tulostushakemistosta, ei konsolista, jossa koontikomentosarja suoritettiin. Useimmat virhetiedot löytyvät *.log-tiedostoista.
Virheenkorjaukseen voi käyttää näitä Steam-asiakasohjelman komentoja ja asiakaspuolen tiedostoja:
  • "app_status [appid]" – Näyttää sovelluksen nykyisen tilan asiakasohjelmassa.
  • "app_info_print [appid]" – Näyttää pelin Steamworks-määritykset (depotit, käynnistysasetukset jne.).
  • "app_config_print [appid]" – Näyttää pelin nykyiset käyttäjämääritykset (käytössä oleva kieli, asennushakemisto jne.).
  • file "logs\content_log.txt" – Luettelee kaikki kirjatut SteamPipe-toiminnot ja -virheet.
  • file "steamapps\appmanifest_[appid].acf" – Näyttää sovelluksen tämänhetkisen asennustilan (KeyValues).

Vähittäismyyntiin tarkoitettujen asennuslevyjen luominen

Jos haluat luoda SteamPipe-peleille asennuslevyjä, ensin on määritettävä koontiversion projektitiedosto.
Esimerkissä alla SKU-tiedoston nimi on "sku_goldmaster.txt".
"sku" { "name" "Test Game Installer" "appid" "202930" "disk_size_mb" "640" "included_depots" { "1" "202931" "2" "202932" } }
Kannattaa huomioida seuraavat asiat:
  • Luo uusi kansio, johon vähittäismyynnin levykuvat kirjoitetaan, esim. D:\retail_disks. Vain osiossa included_depots olevat depotit lisätään. Poissulkuosio ei ole enää käytössä.
  • Steam.exe (komentoriviparametreilla -dev ja -console) tai steamcmd.exe sopivat asennuskuvien luomiseen. Käytä molemmissa tapauksissa komentoa build_installer.
  • Kirjaudu sisään Steam-tilillä, joka omistaa pelin ja kaikki depotit, jotka haluat vähittäismyyntilevylle. Muuten tili ei tarvitse erityisiä oikeuksia, joten kuka tahansa voi koota asennuslevyjä.
  • Jos käytät Steam.exe-tiedostoa, lopeta kaikki muut lataukset.
  • Mene konsolisivulle ja käytä komentoa build_installer:
    build_installer sku_goldmaster.txt "D:\retail_disks"
    Kokoaminen voi viedä jonkin aikaa, koska kaikki depotit ladataan uudelleen ensimmäistä kertaa.
  • Jos kokoat Gold Masteria käyttämällä paikallista sisältöpalvelinta, suorita:
    @localcontentserver "webserver"
    build_installer sku_goldmaster.txt "D:\retail_disks" local
    Syöte viittaa varmuuskopioon, sillä vähittäismyyntiin tarkoitettu asennuslevy ja pelin paikallinen varmuuskopio ovat käytännössä sama asia.
  • Backup finished for AppID... kertoo, että asennuslevyn kuvat ovat valmiita. Lisätietoa varmuuskopioinnista löytyy täältä: logs\backup_log.txt.
  • D:\retail_disks sisältää uusia kansioita (Disk_1, Disk_2 jne.), joiden maksimikoko on 640 Mt, kuten disk_size_mb määrittää. Jokaisessa levykansiossa on sku.sis-tiedosto ja .csd ja .csm kullekin depotille. Suuremmat depotit käyttävät useampaa levyä. Vähittäismyynnin asennuslevyjen sisältö on aina salattu (toisin kuin paikalliset varmuuskopiotiedostot). Kopioi SDK GM -asennustiedostot (setup.exe, setup.ini jne.) ensimmäisen levyn kansioon, ja vähittäismyyntiin tarkoitettu asennuslevy on valmis.
  • Kun luot Gold Masteria macOSille, muista avata goldmaster/disk_assets/SteamRetailInstaller.dmg-kuva Macilla. Kopioi sieltä löytyvä sovellus tallennusvälineen juurihakemistoon. Kannattaa vaihtaa asennussovelluksen nimi, luoda oma kuvake ja rakentaa ikkuna niin, että vain asennusohjelma näkyy.
  • Kun luot monilevyistä Gold Masteria macOSille, varmista, että levyjen osien nimet täsmäävät. Osan nimestä tulee osa asennuspolkua. Jos nimet eivät täsmää, asennusohjelma ei löydä seuraavaa levyä.

Vähittäismyyntiin tarkoitetun asennusohjelman luominen betahaarasta

Yllä kuvailtu prosessi luo vähittäismyyntiin tarkoitetun asennusohjelman oletushaarasta. Jos haluat luoda asennusohjelman betahaaran perusteella, on ensin luotava baseline-niminen betahaara. Käytä sen jälkeen seuraavaa komentoa ohjelman luomiseen perushaarasta:
build_installer <project file> <target folder> <beta key> <beta pwd> steamcmd ex: build_installer sku_goldmaster.txt "D:\retail_disks" baseline superSecret script ex: steamcmd.exe +login user_name password +build_installer "..\Build\GameDataSku.txt" c:\destination beta_key beta_password +exit

Lisämateriaalin asentaminen vähittäismyynnin asennusohjelmasta

Joskus voi olla tarpeen luoda vähittäismyyntiin asennusohjelma, joka sisältää lisämateriaalipaketit. Tällaisissa tapauksissa asennusohjelman luominen vaatii muutaman muutoksen.
Sisällytä lisämateriaalien sovellustunnukset sku_goldmaster.txt-tiedoston included_depots-osioon. Kun olet suorittanut build_installer-prosessin, etsi asennusohjelmalle luotu sku.sis-tiedosto ja avaa se tekstieditorilla.
Lisää lisämateriaalin sovellustunnus apps-osioon. Esimerkiksi, jos pelillä on sovellustunnus 1000 ja lisämateriaalilla 1010, apps-osio kannattaa muokata näin:
"apps" { "0" "1000" "1" "1010" }
Näin varmistetaan, että Steam tarkistaa lisämateriaalin omistajuuden ja kehottaa käyttäjää antamaan tunnuksen, jos lisämateriaalia ei omista Steamiin kirjautumiseen käytettävä tili.

Vähittäismyyntiin tarkoitetun asennusohjelman luominen useammalle sovellustunnukselle yksittäisellä levy- tai asennuspaketilla

Useita Steam Pipe -sovelluksia sisältävän Gold Masterin luomiseksi luo jokainen sovelluksen asennusohjelma erikseen, mutta ohjaa ne kaikki samaan kansioon. Jokainen koontiversio yhdistyy olemassa olevaan asennuskuvaan.

Vähittäismyyntiin tarkoitetun asennuslevyn räätälöinti

Lisätietoja asennussovelluksen räätälöimisestä voi lukea täältä.

Pelin lataus ennen julkaisua

Kaikki sisältö, kaikilla vähittäiskaupan levyillä ja kaikilla sisältöpalvelimilla on oletuksena aina salattu. Jos peli vaihdetaan esilataustilaan, omistajat voivat ladata sisällön, mutta se pysyy salattuna käyttäjien levyllä, eikä sitä voi pelata. Kun peli julkaistaan virallisesti, Steam purkaa esiladatun sisällön salauksen, ja käyttäjä voi pelata peliä.

Pelin vaihtamista esilataustilaan suositellaan seuraavissa tapauksissa:
  • kun lähetetään vähittäismyyntilevyjä tuotetunnuksilla ennen kuin peli on saatavilla (piratismin estämiseksi)
  • kun pelillä on ennakko-ostomahdollisuus ja kokoa yli 20 Gt.

Ota yhteyttä Steam Publishingiin, jos uskot pelisi edellyttävän ennakkolataamista.

Lisämateriaalin luominen

Lisämateriaali luodaan emopelin depottina. Lisämateriaali (DLC) -dokumentaatio tarjoaa lisätietoa.

SteamPipe-vianmääritys

"Login Failure: Account Login Denied Failed" steamcmd-kirjautumisen yhteydessä

Syy: todennäköisesti SteamGuard estää kirjautumisen. Ratkaisu:
  • Varmista sisäänkirjautumiseen käytettyyn tiliin liitetty sähköpostiosoite ja katso, oletko saanut sähköpostiviestin Steamin tuelta. Kopioi sähköpostista löytyvä koodi.
  • Suorita seuraava steamcmd: set_steam_guard_code <code>
  • Yritä kirjautua uudelleen steamcmd:stä: Steam>login <buildaccount> <password>

Latausongelmien vianmääritys

  • Käynnistä tietokone, modeemi, reititin jne. uudelleen.
  • Tarkista palomuurin asetukset. Uusi järjestelmä vaatii portin 80 (HTTP) ja kaikki muut Steam-portit, jotka on lueteltu täällä.
  • Poista paikalliset virusten tai roskapostien esto-ohjelmat väliaikaisesti käytöstä.
  • Tarkista Steamin latausalue kohdasta Asetukset > Lataukset. Alueen pitäisi vastata sijaintiasi.
  • Lopeta lataus, poista pelin asennus ja asenna se uudelleen (tyhjennä luettelovälimuistit).
  • Poistu Steamistä ja poista kansiot appcache ja depotcache Steamin asennuskansiosta.
  • Yritä valita Steamin latausalueeksi jokin muu, kaukainen alue. Tämä saattaa toimia, jos lähellä oleva sisältöpalvelin tarjoaa virheellistä dataa.

Mac- tai Linux-versiot eivät asenna tiedostoja. Mistä se voi johtua?

Jos testaat Steamin kautta pelin tai sovelluksen asennusta useille alustoille, saattaa käydä niin, että koontiversio otetaan käyttöön Windowsissa, mutta tiedostoja ei oteta käyttöön Macissa tai Linuxissa, vaikka SteamPipe-prosessi on määritetty lataamaan Mac- tai Linux-depotteja. Yksi vaihe jää helposti huomaamatta: vaihtoehtoisten depottien lisääminen käyttöönotettavaan pakettiin. Seuraavin ohjein on helppo tarkistaa, mitkä depotit sisältyvät pakettiin:
  1. Siirry Sovelluksen ylläpito -sivulle.
  2. Klikkaa Näytä kaikki liittyvät esineet -osiossa Kaikki liittyvät paketit, lisämateriaalit, demot ja työkalut.
  3. Klikkaa ladattavan paketin otsikkoa.
  4. Tarkasta Sisältyvät depotit -osio.
  5. Käytä toimintoa Lisää tai poista depotteja varmistaaksesi, että paketille on määritetty oikeat depotit.
Aiheesta löytyy useita keskusteluja, joista voi olla apua:

Tiedoston steamcmd.exe suorittaminen johtaa seuraavaan virheeseen: "SteamUpdater: Virhe: Steamin päivittämiseen vaaditaan verkkoyhteys. Varmista verkkoyhteys ja yritä uudelleen."

Ratkaisu: Siirry kohtaan Internet-asetukset->Yhteydet->Lähiverkkoasetukset ja rastita kohta Tunnista asetukset automaattisesti.

Sovelluksen koontiversion suorittaminen johtaa seuraavaan virheeseen: "Virhe! DepotBuild for scriptname.vdf epäonnistui – tila = 6."

Mahdolliset syyt:
  • Tilillä ei ole sovelluksen käyttöoikeuksia.
    • Varmista, että sovellustunnus on oikein app_build.vdf-tiedostossa.
    • Varmista, että koontiversiotilillä on sovellustunnukseen oikeat käyttöoikeudet.
  • Steamcmd ei löydä depotin sisältöä.
    • Varmista, että app_build-komentosarjan contentroot-arvo on kelvollinen polku komentosarjatiedoston sijaintiin.
    • Varmista, että depot_build-komentosarjan LocalPath-arvo on kelvollinen polku suhteessa app_build-komentosarjapolkuun. Varmista, että polku sisältää todellista sisältöä.

Sovelluksen koontiversion suorittaminen johtaa seuraavaan virheeseen: "Virhe! Sovelluksen NNNNN tietojen hakeminen epäonnistui (tarkista kirjautuminen ja tilaus)."

Virhe kertoo, ettei Steam voi hakea tietoja sovelluksesta. Joko sovellusta ei ole tai käyttäjällä ei ole pääsyä siihen.
  • Varmista, että NNNNN on sovellukselle määritetty sovellustunnus.
  • Varmista, että sovellustunnus on oikein app_build.vdf-tiedostossa.
  • Jos kyseessä on uusi sovellustunnus, tarkista, että Steamworks-sovelluksen ylläpitomääritykset on julkaistu. Uusilla sovelluksilla tulisi olla SteamPipe-asennushakemisto sekä depotti, jotka löytyvät kohdasta Muokkaa Steamworks-asetuksia. Asennushakemisto on Asennus-välilehdellä kohdassa Yleinen asennus, depotit löytyvät SteamPipe-välilehdeltä. Muutokset julkaistaan Julkaisu-välilehden kautta.
  • Jos kaikki on kunnossa, varmista, että tilisi omistaa sovellustunnuksen.

"Sovelluksen [AppName] asentamisessa tapahtui virhe (virheellinen sisältömääritys)" käynnistysvaiheessa.

Mahdolliset syyt:
  • Yhtään koontiversiota ei ole julkaistu käyttöön haarassa, josta yrität asentaa.
    Ratkaisu: julkaise koontiversio haaraan siirtymällä osoitteeseen https://partner.steamgames.com/apps/builds/<pelin sovellustunnus> ja valitse haara Steam-asiakasohjelmassa (kuten täällä selitetään).
  • Virheelliset pelin käynnistysasetukset.
    Ratkaisu: tarkista käynnistysasetukset pelin sovelluksen ylläpidon Asennus-välilehdeltä. https://partner.steamgames.com/apps/config/<pelin sovellustunnus>.
  • Et omista pelin muodostavia depottitunnuksia.
    Ratkaisu: varmista, että tarvittavat depotit on lisätty kehitystilaukseen (katso lisätietoja kohdasta Pakettien muokkaaminen).

En muista, mikä steamcmd-komento on tai miten se toimii

Käytä steamcmd:n find-komentoa etsiäksesi mitä tahansa steamcmd-komentoa. Se hakee osittain vastaavat komentonimet ja luettelee komentosyntaksin.
Steam>find build_installer ConVars: Commands: build_installer: <project file> <target folder> <beta key> <beta pwd>