Steamworks-dokumentaatio
Toimintosarjan kerrokset
Toimintosarjan kerrokset ovat valinnainen joukko toimintomäärityksiä, jotka voi lisätä olemassa olevien komentojen päälle. Kerrokset hakevat toimintonsa senhetkisestä toimintosarjasta, toisin kuin toimintosarjoissa. Ne eivät korvaa jo aktiivisia ominaisuuksia vaan lisäävät pieniä muokkauksia. Nämä voivat olla asetusten muutoksia tai perustoimintosarjan määritysten lisäyksiä tai poistoja. Voit lisätä useamman kuin yhden kerroksen kerralla, ja niitä käytetään peräkkäin.

Teknisesti katsoen aktiivisia kerroksia voi olla samalla kertaa hurjasti, mutta käytännössä liian monen kerrosken olemassaolo voi hämmentää pelaajia.

Huomaa!
  • Jo aktiivisen toimintosarjan aktivointi ei vaikuta sen kerroksiin.
  • Kun uusi toimintosarja aktivoidaan, kaikki aktiiviset kerrokset poistetaan vanhasta sarjasta.
  • Jo aktiivisen toimintosarjan aktivointi ei vaikuta mitenkään.
  • Jo aktiivisen toimintosarjan aktivointi ei muuta sen järjestystä pinossa.
  • Toimintosarjakerroksen aktivoinnin poistaminen ja uudelleen aktivointi sijoittaa sen pinon alkuun.
  • ActivateActionSetLayer-jäsenfunktion kutsuminen ei vaadi paljon resursseja, ja sitä voidaan huoletta kutsua toistuvasti (katso selite jäljempänä)

    Tarkkana useiden kerrosten kanssa!

    Vaikka voit käyttää toimintosarjan kerrosten jokaiseen kehykseen, se ei ole suositeltavaa varsinkaan, jos kerroksia on enemmän kuin yksi. Viimeisin käytetty kerros korvaa aiemmin käytetyt tiedot, joten varmista, että käytät kerroksia oikeassa järjestyksessä. Koodissa voi olla ajoitukseen liittyviä virheitä, jotka voivat muuttaa järjestystä.

    Toimintosarjan kerrokset on tarkoitettu rajoitettuun käyttöön. Niitä kannattaa käyttää tai poistaa vain pelin tietyissä muutosvaiheissa.

    Jos pelissä on Steam-syötetuki, kehittäjä voi määrittää toimintosarjan kerroksia, jotka pelin koodi käynnistää. Legacy-tilassa pelaajat voivat määrittää omia toimintosarjan kerroksia ja niitä käynnistäviä syötteitä. Samalla tavalla he voivat määrittää omia pelaajan käynnistämiä toimintosarjan kerroksia.

    Käytännön esimerkki


    Oletetaan, että kyseessä on luokkapohjainen ammuskelupeli, jossa on ajoneuvoja. Pelissä on Steam-syötetuki, ja siinä käytetään toimintosarjan kerroksia. Peruspelissä perustoimintosarja on aina aktiivinen ja kattaa juoksemisen, esineiden nostamisen, hypyt jne.

    action_set_layers_basic_1.png

    Kun pelaaja valitsee luokan, soveltuva kerros lisätään, esimerkiksi "tarkka-ampuja".

    action_set_layers_sniper_2.png

    Koodi voi näyttää tältä:

    void changeClass(EClassID myClass) { if(myClass == SNIPER) { SteamInput()->ActivateActionSetLayer( controllerHandle1, sniperLayerHandle ); } //logiikka muille luokille }

    Jos pelaaja nousee ajoneuvoon tai poistuu siitä, ajoneuvokerroksen ohjaimet aktivoidaan tai niiden aktivointi poistetaan tasojen vaihtuessa. Tällöin ajoneuvon toimintojen uusia ohjaimia lisätään tai poistetaan.

    action_set_layers_vehicle_1.png

    void changeVehicle(EVehicleID myVehicle, bool entering) { InputActionSetHandle_t layerHandle; if(myVehicle == AUTOMATIC) { layerHandle = automaticHandle; //automaattivaihteisto – ohjaus, kaasu, jarru } else if(myVehicle == STICK_SHIFT) { layerHandle = stickShiftHandle; //manuaalivaihteisto – ohjaus, kaasu, jarru, kytkin, vaihteen vaihto jne. } if(entering) { SteamInput()>ActivateActionSetLayer( controllerHandle1, layerHandle ); // käytä ajoneuvon toimintosarjan kerrosta, kun menet autoon } else { SteamInput()>DeactivateActionSetLayer( controllerHandle1, layerHandle ); /poista ajoneuvon toimintosarjan kerrosta, kun poistut autosta } }

    Tässä pelissä pelaajat voivat käyttää asetta myös ajoneuvon kyydistä. Kun tarkka-ampuja käyttää tarkkuuskiväärin tähtäintä, kolmas toimintosarjan kerros aktivoituu. Ei väliä, käveleekö pelaaja vai ajaako autolla.

    action_set_layers_scope.png

    void useScope(bool entering) { if(entering) { SteamInput()->ActivateActionSetLayer( controllerHandle1, scopeHandle ); //käytä tähtäinkerrosta tähdättäessä } else { SteamInput()->DeactivateActionSetLayer( controllerHandle1, scopeHandle ); //poista tähtäinkerros, kun tähtäin lasketaan } }

    Näin kerrokset yhdistyvät:

    action_set_layers_result_2.png

    Huomaa, että kerrokset voivat sekä lisätä uusia toimintoja entisten päälle että korvata aiempia määrityksiä. Tässä tapauksessa ajoneuvon "jarru"- ja "kaasu"-toiminnot korvaavat peruskerroksen "hyppää"- ja "vuorovaikutus"-toiminnot. Lisäksi "ohjaa" korvaa "liiku"-toiminnon, joka on sidottu kosketuslevyyn ja sauvaan perustasolla. "Tähtää"-toiminto hylkää puolestaan kiikaritähtäimen toimintosarjakerroksen. Kun kaikki kolme toimintosarjan kerrosta on pinottu, perussarjan ainoa jäljellä oleva toiminto on "ammu".

    Legacy-tila


    Voit luoda toimintosarjakerroksia melkein samalla tavalla kuin tavallisia toimintosarjoja. Klikkaa määrittäjässä Lisää toimintokerros -painiketta:

    add_action_layer.png

    Voit antaa toimintosarjakerrokselle nimen ja valita määritykset. Koska kyseessä on vanha toimintosarjakerros, peli ei tunnista sitä. Pelaajan on aktivoitava se itse. Valitse ensin syöte, joka käynnistää toimintosarjakerroksen. Avaa sitten määritysvalikko ja klikkaa toimintosarjan aktivointikuvaketta vasemmalta:

    bind_action_set.png

    Toimintosarjan aktivointivalikko avautuu:

    change_action_set.png

    Tässä tapauksessa käytetään kerrosta, ei aktivoida toimintosarjaa. Valitse alasvetovalikosta Käytä toimintokerrosta:

    apply_action_set_layer.png

    Valitse sitten, mihin kerrokseen sitä käytetään:

    select_action_set_layer.png

    Samalla tavalla voit myös poistaa kerroksen erillisillä määrityksillä.