Kaikki julkaisut1
  1. Devlogi 01Maailman synty

Devlogi 01Lukuaika 10 min

Maailman synty

Haluan rakentaa metsän, johon pelaajan on pakko lähteä, vaikka nuotion äärellä olisi paljon mukavampaa. Metsän pitäisi muuttua joka yö niin, etten edes itse tiedä tarkkaan, mitä seuraavalla pelikerralla odottaa. Tässä ensimmäisessä devlogissa kerron, miten tuon ajatuksen ympärille on alkanut syntyä kokonainen maailma.

Ajanjakso 19. heinäkuuta 2026 – 29. lokakuuta 2026

Pieni nuotio hehkuu yöllä pimeässä kuusimetsässä, ja valon reunalla on teltta. Makuupussin paikalla on kirkkaan magenta paikkamerkki.

Kaikki alkaa nuotiosta

Synkissä metsissä on aina ollut minusta jotain kiehtovaa. Samoin suomalaisissa muinaisuskomuksissa. Näistä on lähtenyt ajatus Project Campfiresta: 1–4 pelaajan yhteistyöhön perustuvasta selviytymiskauhupelistä, jossa metsä on paljon muutakin kuin tausta tapahtumille. Tavoitteena on luoda tunnelmallinen, jopa kodikas leiripaikka nuotioineen – ja sen ympärille metsä, jonne ei varsinaisesti tekisi mieli lähteä, mutta jonne on pakko mennä, jos aikoo löytää tiensä ulos.

Nuotio on suunniteltu tärkeimmäksi turvapaikaksi. Sen äärellä olisi hetki aikaa valmistautua, mutta metsästä pitäisi hakea tarvikkeita ja etsiä reittiä eteenpäin. Pimeässä liikkuminen on vaarallista, eikä tuli saisi sammua. Mukavan leirin ja pahaenteisen metsän välinen ristiriita on olennainen osa sitä tunnelmaa, jota haen.

Proseduraalisuus kiehtoo minua vähintään yhtä paljon kuin metsän tunnelma. Haluaisin, etten edes itse pelin tekijänä tietäisi tarkkaan, mitä seuraavalla pelikerralla odottaa. Tarkoitus on, että jokainen pelikerta voisi olla hyvin erilainen. Yksi keskeinen keino siihen on, ettei nukkumisen jälkeen ympärillä odota enää sama metsä.

Kehitys alkoi heinäkuussa pelaajan liikkumisesta, nuotiosta ja ajan kulumisesta. Sen jälkeen maailma alkoi kasvaa niiden ympärille. Tähän mennessä olen käyttänyt huomattavan osan työstä itse metsään, sillä sen pitäisi lopulta olla muutakin kuin maisema: siellä liikutaan, suunnistetaan, etsitään tavaroita ja kohdataan vaaroja. Siksi metsän täytyy toimia jo ennen kuin kaikkia varsinaisia pelimekaniikkoja on edes olemassa.

Peliä rakennetaan Unity 6:lla ja HDRP-renderöinnillä. Tällä hetkellä kyse on prototyypistä, ei valmiista pelistä. Esimerkiksi moninpeli on vasta suunnitelmissa, vaikka se kuuluukin pelin tavoitteisiin. Myös tämän jutun kuvat ovat kehityskuvia Unitystä tai Blenderin katselmointirenderöintejä.

Uusi metsä joka yö

Campfirelle ei ole yhtä valmiiksi rakennettua karttaa, joka pysyisi samanlaisena pelikerrasta toiseen. Maailma luodaan proseduraalisesti: järjestelmä rakentaa maaston, puut, polut ja muut alueet sääntöjen ja siemenlukujen perusteella. Nykyisessä prototyypissä nukkuminen käynnistää ympäröivän maailman uudelleengeneroinnin. Leiri säilyy paikallaan, mutta sen ympärillä oleva metsä vaihtuu seuraavaa pelipäivää varten.

Haluan, että uusi aamu herättää pelaajassa kaksi vähän ristiriitaista tunnetta. Toisaalta metsä on jälleen vieras, mikä voi tuntua aika toivottomalta. Toisaalta on vaikea olla miettimättä, mitä sieltä tällä kertaa löytyy. Metsän on tarkoitus olla anteeksiantamaton, eikä vanhan reitin muistaminen saisi olla varma tapa selviytyä. Myös eksyminen on todellinen riski, jos suunnistamisesta ei pidä huolta. Sitä varten peliin on suunnitteilla apukeinoja, mutta kaikkea vaaraa niidenkään ei ole tarkoitus poistaa.

Pelaajalle maailman pitäisi tuntua arvaamattomalta. Kehitystyössä tarvitsen kuitenkin lähes päinvastaista: saman maailman täytyy olla toistettavissa aina tarvittaessa. Jos löydän virheen tietystä kohdasta metsää, siitä ei ole paljon iloa, jos seuraavalla testikerralla koko kohta on hävinnyt.

Tätä varten projektissa on oma siemenjärjestelmä. Jokaisella pelikerralla on siemenluku, ja jokaisella pelipäivällä on oma numeronsa. Niiden avulla sama pelikerta ja sama päivä voidaan rakentaa uudelleen samoista lähtötiedoista. Seuraavalle päivälle saadaan uusi maailma ilman, että se olisi kehittäjälle täysin arvaamaton.

Lisäksi polut, kasvillisuus, löydettävä sisältö ja muu maailman rakenne käyttävät omia toisistaan erotettuja siemeniään. Ajatuksena on, ettei esimerkiksi uuden loot-arvonnan lisääminen vahingossa siirrä koko metsän polkuja toiseen paikkaan. Järjestelmässä on varaukset myös myöhemmin toteutettaville ominaisuuksille, kuten säälle ja vihollisille. Varattu siemen ei tietenkään tarkoita, että kyseinen pelijärjestelmä olisi jo valmis.

Siemenjärjestelmälle tehtiin myös tarkistustyökalu, joka käy läpi 10 000 siemenlukua ja 100 pelipäivää. Yhteensä siis miljoona mahdollista päivää. Se on aika monta aamua pelissä, jossa ei vielä ole edes valmista sisältöä jokaiselle aamulle. Tarkistuksen tarkoitus on löytää poikkeavia tuloksia ja siementen törmäyksiä ennen kuin niistä tulee pelaajalle ongelmia.

Nykyinen maailmanvaihto etenee niin, että leiri suojataan, vanhaa ympäristöä puretaan ja uusi maasto sekä muu maailma rakennetaan näkyviin. Pelin kello pysähtyy rakentamisen ajaksi, ettei lataamiseen kulunut aika lyhennä pelipäivää. Täydellinen pelin tallennus- ja latausjärjestelmä on silti vielä erillinen keskeneräinen kokonaisuus.

Metsään tarvitaan muutakin kuin puita

Pelkkä puita täynnä oleva kartta ei vielä tee metsästä kiinnostavaa tutkittavaa. Siksi Campfirella on myös looginen kartta. Se muodostuu leirin ympärille kuusikulmaisista eli hex-ruuduista, joilla on erilaisia tehtäviä. Jossakin on tavallista metsää, jossakin erityinen kohde ja jossakin mahdollisuus löytää tavaraa.

Nykyisessä kehitysmaailmassa on 631 hex-ruutua, ja sen tarkemmin mallinnettu ydinmaasto on noin kilometrin levyinen. Ensin ratkaistaan kartan rakenne, sitten sitä vastaava maasto ja kasvillisuus rakennetaan näkyviksi. Kaikki ei siis ole yksi valtava kasa sattumanvaraisia puita.

Karttaan muodostetaan myös polkuverkosto. Nykyisillä asetuksilla leiristä lähtee neljä polkua, ja päivän erityiskohteeseen johtaa aina reitti. Löydettävien paikkojen kohdalla polkuyhteyden todennäköisyys on 75 prosenttia, joten jokaiselle kiinnostavalle paikalle ei välttämättä pääse suoraan polkua pitkin. Verkostoon syntyy myös sivuhaaroja ja umpikujia. Ne vaativat elokuussa useamman korjauskierroksen ennen kuin nykyinen toteutus toimi.

Kun polun sijainti on päätetty, se tehdään osaksi maastoa. Puita jätetään noin kahden metrin päähän polun keskilinjasta ja reunoille lisätään juurakkoista maapintaa. Sama siemen tuottaa tarvittaessa saman polkuverkon uudelleen.

Polkujen tarkoitus ei kuitenkaan ole olla pelkkä turvallinen opastejärjestelmä. Haluan niiden helpottavan suunnistamista ja houkuttelevan tutkimaan metsää, mutta polkua seuraamalla voi myös päätyä harhaan tai jopa ansaan. Pelaajan pitää itse päättää, kuinka paljon riskiä on valmis ottamaan. Suunnistamisen apukeinoja ja polkuihin liittyviä vaaroja suunnitellaan vielä; nykyinen polkuverkosto on vasta tekninen pohja näille ajatuksille.

Ensimmäinen erityiskohde on näkötorni. Sitä varten on rakennettu oma seitsemän hex-ruudun alue, jossa käsin tehty rakennelma sovitetaan ympäröivään proseduraaliseen maastoon. Kehityksessä torni on toistaiseksi pakotettu leirin viereen, koska saman testipaikan luo pääseminen helpottaa huomattavasti asioiden tarkistamista. Lopullisia sijoittelusääntöjä ei ole vielä vahvistettu.

Myös löydettävän sisällön järjestelmästä on olemassa prototyyppi. Kartassa on lootille omia paikkoja, joilla on leirietäisyyteen perustuvia tasoja ja harvinaisuusluokkia. Testausta varten on laatikoita, joista voi valita palkinnon. Varsinaisia esineitä, niiden määriä tai pelin lopullista tasapainoa ei ole vielä päätetty. Tässä kohtaa lootista voi siis kertoa järjestelmänä, ei valmiina pelikokemuksena.

Entä jos pelaaja ei haluakaan kääntyä takaisin?

Vaikka hex-kartan ydin on rajallinen, en halua, että metsä loppuu pelaajan silmien edessä. Erityisesti näkötornista katsottuna pitäisi näkyä metsää ja maastoa pitkälle horisonttiin, ei paljasta reunaa, jonka takana maailma loppuu.

Ilmakuva korkeasta puisesta näkötornista pienellä aukiolla, ympärillä horisonttiin jatkuva kuusimetsä
Näkötorni ylhäältä, ja metsä jatkuu kohti horisonttia. Taivaalla näkyvät värilliset viivat ovat editorin debug-merkintöjä, eivät osa pelimaailmaa.Lähde: Unity-editorin kaappaus

Ratkaisuksi on rakennettu järjestelmä, joka tuo ympäristöä lisää sitä mukaa kuin pelaaja liikkuu. Lähellä on varsinainen pelimaailma tarkkoine maastoineen ja puineen. Sen ulkopuolella maastoa ja metsää muodostetaan 64 metrin paloina, ja kauas jääneet palat poistetaan muistista. Samalla maailma pitää kiinni siemenjärjestelmän toistettavuudesta.

Kaukana kaikkea ei kannata piirtää yhtä tarkasti. Puiden kevyempiä kuvakorttiesityksiä käytetään nykyisillä oletusasetuksilla noin 700 metriin asti, ja kevennettyä maastoa näkyy useiden kilometrien päähän. Pelaajan näkökulmasta metsän on tarkoitus jatkua käytännössä loputtomiin. En silti väitä, että teknisesti ääretöntä maailmaa olisi testattu kaikkiin mahdollisiin etäisyyksiin.

Yllättävän hankalaksi osoittautui se, että saman metsän pitäisi näyttää samalta myös eri etäisyyksiltä. Lähellä oleva kuusi ei saa vaihtua kaukaa katsottuna yhtäkkiä eri väriseksi tai muotoiseksi puuksi. Syyskuussa ja lokakuussa onkin tehty paljon työtä lähi- ja kaukoesitysten kirkkauden, sävyjen ja siluettien yhtenäistämiseksi. Pieniä eroja on edelleen jäljellä.

Tähän liittyy myös yksi pelin suunnitteluperiaate: mahdolliset kevyemmät grafiikka-asetukset eivät saa tehdä metsästä harvempaa ja helpompaa nähdä läpi. Puita voi piirtää karkeammin, mutta niiden muodostamaa näkösuojaa ei pitäisi saada pois vain laskemalla grafiikan laatua.

Metsän ilmettä etsimässä

Vaikka metsä toimisi teknisesti, sen pitää vielä näyttää ja tuntua juuri Campfiren maailmalta. Oma visuaalinen ilme hakee edelleen paikkaansa. Syyskuun lopussa suunta alkoi kuitenkin tarkentua: pohjoismainen, vähän sarjakuvamainen 3D-ilme, jossa suuret muodot ja selkeät väripinnat ovat tärkeämpiä kuin viimeiseen asti yksityiskohtainen teksturointi. Haluan pelille tunnistettavan oman ilmeen, ja sitä joutuu varmasti vielä hienosäätämään kehityksen edetessä.

Pimeyden kanssa on pitänyt etsiä sopivaa rajaa. Jos metsä on liian valoisa, se menettää osan tarkoituksestaan. Jos taas kaikki on mustaa, pelaaminen muuttuu lähinnä arvailuksi. Metsän pitäisi tuntua pimeältä ja uhkaavalta niin, että hahmot, puut ja maaston muodot ovat silti luettavissa. Nuotion lämpimällä valolla on oma tehtävänsä kaiken kylmän ja hillityn vihreän keskellä.

Kuu mustalla yötaivaalla puiden latvojen himmeiden siluettien yllä
Kuu metsän yllä yöllä. Kaukana nuotiosta puut erottuvat vain himmeinä siluetteina.Lähde: Unity-editorin kaappaus

Synkän suomalaisen kuusimetsän tunnelma on lähtökohta, mutta en pyri tekemään metsää täysin valokuvamaisena. Graafinen tyyli saa korostaa sitä, mikä pelimaailmassa on olennaista: tiheää kasvillisuutta, syviä varjoja, selkeitä muotoja ja valon merkitystä. Suomalaisista muinaisuskomuksista haen inspiraatiota pelin maailmaan, mutta se, miten ne lopulta näkyvät pelissä, on vielä osa kehitystyötä.

Iso osa tästä työstä on kiteytynyt yhteen puuhun: kuuseen. Ensimmäiset nykyisen Blender-sarjan versiot syntyivät syyskuun lopussa, ja niitä ehti kertyä 16. Matkalla ovat muuttuneet muun muassa oksat, rungon muoto, kuori ja juuret. Hyväksyttyyn tyyliin päästiin lokakuussa V15-version kohdalla. Yhden kuusen kanssa on siis saanut viettää varsin paljon aikaa.

Tällä hetkellä metsässä on käytössä kaksi kuusivarianttia. Aukeamien lähellä oksat ulottuvat lähes maahan, mutta tiheän metsän sisällä rungon alaosa on paljaampi ja kuolleita oksia jää elävän latvuksen alapuolelle. Sisämetsän versiossa elävä latvus alkaa noin 10 metriä korkeammalta. Valinta ei perustu arvontaan vaan siihen, onko puun lähellä aukeamaa noin 10–13 metrin säteellä.

Yhdessä testimaailmassa aukeamien kuusia oli 57 ja sisämetsän kuusia 5 169. Metsän sisäosaa on siis ainakin siinä maailmassa tarjolla enemmän kuin aukeamia. Kun puun variantti määräytyy kartan perusteella, se myös säilyy saman maailman eri lataus- ja esitystilanteissa.

Metsän ja maailman valaistukselle hyväksyttiin 17. lokakuuta ensimmäinen yhteinen lähtötaso. Se ei tarkoita, että valaistus olisi valmis. Se tarkoittaa, että nyt on olemassa sovittu vertailukohta, johon seuraavia muutoksia voi verrata.

Hyöty tuli vastaan jo kahden päivän päästä. Yksi kaukaisen metsänpohjan varjostukseen tehty kokeilu päästi auringonvaloa ja kirkkaita heijastuksia tiheän metsän alle. Pimeäksi tarkoitetussa paikassa maa alkoi näyttää liian kirkkaalta. Kokeilun ja palautetun version välillä ei muutettu kamerapaikkaa tai muita olosuhteita, joten ero näkyy hyvin alla olevasta liukusäätimestä.

Kokeilu: kaukainen metsänpohja kuusten alla aurinkoa kohti katsottuna
Palautettu: kaukainen metsänpohja kuusten alla aurinkoa kohti katsottuna

Avaa: kokeiluAvaa: palautettu

Sama kamera, vaihe, valotus ja pysäytetty sää. Kokeilun kanssa kaukainen metsänpohja latvuston alla saa auringonvaloa, jota sen ei pitäisi saada.Lähde: Unity-editorin kuvakaappaukset

Muutoksen vaikutusta myös mitattiin. Yksi kaukana kamerasta oleva maan pikseli oli hylätyssä kokeilussa lähes kaksi kertaa kirkkaampi kuin palautetussa versiossa. Kokeilu peruttiin samana päivänä, ja aiemmin hyväksytty varjostus palautettiin. Aurinkoa, sumua tai metsän tiheyttä ei säädetty vain siksi, että ongelma näyttäisi pienemmältä.

Metsänpohjassa on sen jälkeen työstetty muun muassa neulaskarikkeen, sammalen ja pienempien maastonmuotojen ilmettä. Osa toteutuksista on jo käytössä, mutta mukana on edelleen oletuksena pois päältä olevia kokeiluja.

Metsää olisi mukava myös pyörittää

Yksi jatkuvista haasteista on ollut suorituskyky. Oma koneeni on tällä hetkellä yksi kehityksen pullonkauloista, ja isoa osaa optimoinnista on pitänyt tehdä samaan aikaan, kun metsä vasta rakentuu. Toisaalta siitä on ollut hyötyäkin: ongelmia tulee ratkaistua jo nyt sen sijaan, että ne odottaisivat pelin loppuvaiheisiin.

Kun maailmassa on paljon maastoa ja tuhansia puita, suorituskyvystä tulee väistämättä osa kehitystyötä. Erityisen hyvä rasitustesti on näkymä korkealta metsän yli. Silloin peli joutuu piirtämään paljon sellaista, mikä tavallisessa metsässä jää puiden taakse piiloon.

Lokakuussa vertailtiin kaukaisten puiden kahta piirtotapaa samassa näkymässä noin 70 metrin korkeudelta. Kuvassa oli noin 7 000 puuta. Kun monimutkaisempi esitys vaihdettiin yksinkertaisempaan, näytönohjaimen yhteen ruutuun käyttämä aika putosi noin 166 millisekunnista 11 millisekuntiin. Se on juuri tämän vertailun GPU-aika, ei koko pelin FPS-lukema. Uusi esitystapa näytti ensin liian tummalta ja litteältä, joten sitä piti vielä korjata ennen kuin siitä tuli oletusvaihtoehto.

Näytönohjaimen aika ruutua kohden, sama tornin näkymä

Monimutkaisempi kaukopuunoin 166 msYksinkertaisempi kaukopuunoin 11 ms
Näytönohjaimen aika ruutua kohden, sama tornin näkymä
Monimutkaisempi kaukopuunoin 166 ms
Yksinkertaisempi kaukopuunoin 11 ms
Yksi mittaus Unity-editorissa: sama näkymä ja samat puut, vain kaukaisten puiden piirtotapa eroaa. Luku ei ole pelin ruudunpäivitysnopeus.Lähde: Unity-editorin mittaus

Toinen ongelma löytyi maailman käynnistymisestä. Ennen lokakuun optimointeja maailman valmistuminen kesti samoilla testisiemenillä noin 90 sekuntia. Osasyy oli se, että järjestelmä teki vain vähän työtä kerrallaan ja odotti eri vaiheiden valmistumista turhaan. Työn järjestystä muuttamalla sama mittaus saatiin noin 50 sekuntiin. Tavoite on ollut alle 30 sekuntia, eikä siihen ole vielä päästy.

Myös liikkuessa tapahtuvassa maailman rakentamisessa on ollut nykimistä. Erään kaukomaaston palan laskentaa saatiin nopeutettua noin 25 millisekunnista alle kuuteen ilman, että lopputulos muuttui. Se auttaa, mutta ei tarkoita, että kaikki liikkumisen aikaiset ruutupudotukset olisivat kadonneet.

Suorituskyky on edelleen yksi projektin keskeneräisistä asioista. Optimoinnin tuloksia pitää lisäksi verrata samoilla siemenillä, samoissa näkymissä ja samoilla asetuksilla. Muuten erilaisista FPS-luvuista saa helposti aikaan komean kaavion, joka ei oikeastaan kerro mitään.

Miten tätä kaikkea oikein tehdään?

Pelinkehityksessäni tekoälyllä on iso rooli, ja haluan olla siitä avoin. Koodin kirjoittamisesta huolehtivat pääasiassa tekoälyagentit. Itse työstän niiden avulla pelimekaniikan suunnittelua, visuaalista suuntaa ja assetteja sekä arvioin, mitä lopputuloksesta oikeasti kelpuutetaan peliin. Blender-mallinnuksessa tekoälyllä luotu malli voi toimia referenssinä, mutta peliin tarkoitettu varsinainen asset rakennetaan ja viimeistellään erikseen.

Tämä ei tarkoita sitä, että pelin voisi tehdä yhdellä hyvin muotoillulla promptilla. Moni pieneltä näyttäväkin asia käy läpi useita kierroksia ja ristiintarkistuksia. Tekoäly ei ole mikään ihmekone, joka hoitaa kaiken kerralla. Välillä mennään aika lailla perse edellä puuhun ja joudutaan ottamaan uusi lähtö. Ilman tekoälyä tämänkaltaisen pelin saaminen edes pelattavaan muotoon veisi minulta todennäköisesti vuosikausia, mutta työn määrä on silti yllättänyt.

Samaan aikaan Blenderissä

Unity-maailman rinnalla Blenderissä valmistuu jatkuvasti esineitä, rakennelmia ja kasvillisuutta, jotka eivät vielä näy pelissä. Mallit tehdään, niistä otetaan katselmointikuvat ja niitä korjataan tarvittaessa useita kierroksia. Osa hyväksytään, osa jää odottamaan lisää työtä. Lisäksi jokainen valmis malli täytyy vielä saada toimimaan Unityssä oikeine materiaaleineen, mittakaavoineen ja käyttötarkoituksineen.

Kasvillisuuteen on tehty nuoria kuusia, kaatuneita runkoja, kantoja ja juuria. Esinepuolella työn alla ovat olleet esimerkiksi nuotio, kirves, puukko, myrskylyhty, lamppuöljy ja erilaiset säilykepurkit. Valmiita Blender-malleja ei kuitenkaan pidä sekoittaa pelissä jo käytössä oleviin esineisiin. Moni niistä odottaa vielä katselmointia tai Unityyn viemistä.

Hyvä esimerkki on makuupussi. Blenderissä siitä on tehty jo seitsemän versiota, mutta pelissä nukutaan edelleen väliaikaisessa paikkamerkissä. Valmiin näköinen esine ja pelissä toimiva esine eivät siis ole aivan sama asia.

Missä mennään nyt?

Kolmessa kuukaudessa projektiin on syntynyt jo paljon enemmän kuin pelkkä metsänäkymä. Päivä- ja yökierto, nukkuminen, leirin säilyminen yön yli, maailman uudelleengenerointi, polut ja ensimmäinen erityiskohde toimivat prototyypissä. Maailmaa voidaan tutkia, ja se rakentuu pelaajan ympärille tämän liikkuessa.

Tämä ei silti tarkoita, että itse peli olisi pitkällä valmiina kokonaisuutena. Lootissa on vielä prototyypin sisältöä, hirviöt ja moninpeli puuttuvat, ja suorituskykyä pitää edelleen parantaa. Projektikortin prosentit ovat omia suuntaa-antavia arvioitani, eivät laskennallisia lupauksia valmistumisesta.

Juuri nyt painopiste on metsän kasvillisuudessa ja ympäristössä. Lisää puita, kasvillisuutta, metsänpohjaa ja luonnollisia yksityiskohtia tarvitaan ennen kuin metsä tuntuu riittävän vaihtelevalta. Kalliohyllyjä ja niiden läpi kulkevia polkuja on myös kokeiltu; niistä olisi tarkoitus kertoa tarkemmin seuraavassa devlogissa. Sääjärjestelmä on suunnitteilla, mutta ei heti seuraavana työlistalla.

Ensimmäisten kuukausien tulos on ennen kaikkea se, että maailmalle on nyt olemassa toimiva pohja. Tämän pelin vaatima työmäärä on yllättänyt minut, ja suurin osa suunnitellusta pelistä on edelleen tekemättä.

Eniten odotan nyt sitä, että metsä alkaa vähitellen herätä eloon ja tuntua kokonaan omalta maailmaltaan. Sellaiselta, jossa leiristä on hetken hyvä olla – ja jonka ulkopuolella ei voi koskaan olla aivan varma, mitä seuraavan mutkan takaa löytyy.

maailman generointikasvillisuusvalaistussuorituskyky