Milloin monikäyttäjäympäristöt ovat arkeamme?

”Taustalla pyörii ajatus, että jos on kaksi pelaajaa, niin pelaajia on silloin oikeasti neljä.”

Jarkko Väisänen, kehittäjä, Leonidas Oy

”Virtuaaliyhteistila tulee mullistamaan vielä monta asiaa niin työelämässä kuin sosiaalisissa kontakteissakin, ja se tulee varmaan olemaan niitä isoimpia vaikuttajia siihen, millainen tulevaisuuden maailma on.” Kari-Pekka Lammi, kehittäjä, Leonidas Oy

MONIKÄYTTÄJÄYMPÄRISTÖ KEHITTYY VAUHDILLA

Monikäyttäjäympäristö on mielenkiintoinen uutuus. Leonidaksen Vivellä pelattavassa monikäyttäjäympäristössä on synkähkössä kartanomaisemassa Ikean sänky, moottori ja luuranko-avatareja. Devaajat Jarkko Väisänen ja Kari-Pekka Lammi kertovat monikäyttäjäympäristön periaatteista ja koodaamisesta.

Harri: Monikäyttäjäympäristössä pystytään porukalla olemaan samassa virtuaalitilassa, juttelemaan keskenään ja suorittamaan yhteisiä tehtäviä. Tarkoituksena on paikkariippumattomasti pystyä kokoontumaan tärkeiden asioiden äärelle esimerkiksi koulutusmielessä tai markkinointiin liittyen.

Meidän demossamme tehtävänä on koota sänky ja tutkia moottoria. Olemme demonneet tätä monikäyttäjäympäristöä tapahtumissa, ja sieltä ihmiset varmaan muistavat sen luurangon, joka on meidän Jarkko. Hän on aina se vastapeluri monikäyttäjäympäristössä ja ääni kuulokkeissa, joka kertoo sinulle, miten sänky kasataan.

MONIKERRONNALLISUUDEN SYNKRONOINTI ON HAASTAVAA

Harri: Mitä olemme tähän mennessä oppineet client server -jutuista ja mitä interaktioista monikäyttäjäympäristöissä?

Jarkko: Taustalla pyörii ajatus, että jos on kaksi pelaajaa, niin pelaajia on silloin oikeasti neljä. Jos on kolme, pelaajia on sitten jo yhdeksän. Pitää huomioida, että kaikki jutut toimivat keskenään, eli yhdellä koneella on yksi lokaali pelaaja, joka vaikuttaa toisten ihmisten koneella siihen omaan avatariinsa, eli luo sillä sitä monikerronnaisuutta taustalle. Tästä opimme koko ajan lisääkin ja jänniä juttuja on tulossa.

Harri: Onko nämä teknisiä vai enemmänkin toiminnallisia haasteita, että miten jonkun käyttäytyminen vaikuttaa yleisesti siihen ympäristöön?

Jarkko: Haasteena on se, että pelaajilla on siellä lisänä kädet. Ajatuksena on saada myös jalat mukaan uusien träkkereiden myötä. Se taas lisää sitä niin sanottua moninaisuuden kerrannaisuutta vielä ennestään, kun jokainen objekti on toisillakin näkyvissä. Näiden synkronointi taustalla on vaikeaa, ja sitä joudutaan vielä tutkimaan, että se saadaan toimimaan hyvin.

Harri: Synkronoinnissa on vielä monta haastetta ja itsekin yhden demon tehneenä törmäsin kolmeen ongelmaan. Se on verkkoyhteyden latenssi, Unity-moottorin oma raja, eli sille pitää kertoa, tuleeko törmäys sekä laitteen oma mahdollinen katkeaminen Vivellä. Kovin hienoa ja pikkutarkkaa liikettä on vielä haasteellista tehdä.

Kari-Pekka: Ainakin sängyn kanssa on ollut yhtä painajaista. Se vaatii todella tarkkoja asetteluja ja ongelma on siinä, että nyt kun synkronoinnissa on monta variaatiota, niin on mahdollista, että yksi pelaaja näkee, että jokin osa on paikallaan, mutta muut näkevät, että se ei ole vielä läheskään omalla paikallaan. Tässä moottori tekee omia ratkaisujaan, että kuinka tarkasti nämä synkronoidaan. Isot yhtiöt painivat näiden samojen ongelmien kanssa, vaikka tekevät isommalla budjetilla kuin me, eli helppoja ratkaisuja ei ole. Monipelaaminen tuo paljon teknisiä haasteita, mutta tarjoaako Unity siihen jotain ratkaisuja, tai joku pilvipalvelu?

Jarkko: Ei vielä. VR on vielä aika uusi juttu ja monipelissä käsien seuranta on kohtuullisen tuore juttu. Tämä on Unityssä alue, joka kehittyy jokaisessa päivityksessä. Itse asiassa tämä on se kovin juttu siellä tällä hetkellä, jota kehitetään. Olen huomannut, että aina kun Unity tarjoaa päivitystä, kannattaa versiopäivitys ajaa heti, sillä jokaisella päivityksellä tulee niin paljon hyviä puolia.

Kuukauden, kahden välein on tullut jotain uutta. Jos ei ihan valmista f-versiota, niin ainakin RC eli release candidate -versioita, joita käyttäjät pääsevät käyttämään. Viimeisimmän rykäisyn tuloksena lisäsimme omaan sovellukseemme Unityn MatchMaker-ominaisuuden.

ADAPTOIDU!

Harri: Aina kun olemme demonneet monikäyttäjäympäristöä, on sitä kehuttu posket hehkuen, että onpa kiva päästä juttelemaan samassa tilassa. Onko vielä teknisiä vinkkejä kehittäjille?

Kari-Pekka: Meidän oman monikäyttäjäympäristön käyttämisessä viimeaikaiset ongelmat ovat aiheutuneet SteamVR -päivityksistä.

Jarkko: Kyllä, niitä on tullut tosiaan melkein päivän sykkeellä, eikä se ole aina hyvä asia. Olemme aina tehneet asiat edellisen version mukaan, ja sitten tulee päivitys, joka muuttaa niitä asioita ja koko homma menee rikki.

Kari-Pekka: Unityn päivityksiä pystytään tosiaan kontrolloimaan, mutta SteamVR vaan päivittyy käyttäjille. Olo on kuin kantaisi vettä avannosta toiseen. On tietenkin upeaa, että asiat muuttuvat paremmiksi ja koko ajan avautuu uusia mahdollisuuksia, joissa halutaan olla tietenkin ensimmäisinä kiinni ja testaamassa sitä kaikkea valtavaa potentiaalia.

Ihmisten demoreaktioista päätellen virtuaaliyhteistila tulee mullistamaan vielä monta asiaa niin työelämässä kuin sosiaalisissa kontakteissakin. Tämä on tärkeä juttu, ja tulee varmaan olemaan niitä isoimpia vaikuttajia siihen, millainen tulevaisuuden maailma on. Sen takia intressit ovat kovat, mutta tällä hetkellä kaiken toimimaan saaminen ja hyvien, pitävien sääntöjen ja neuvojen antaminen tässä on vaikeata. Ohjeeni on, että adaptoidu!

Jos lähdet nyt kehittämään ja haluat tehdä uusinta uutta, niin joudut koko ajan lukemaan ja ottamaan uusia patch noteja ja istumaan foorumeilla. Sinun täytyy varautua siihen, että se sinun hieno työsi, jota olet rakkaudella vaalinut ja saanut toimimaan, ja josta olet saanut kehuja, niin se on rikki seuraavana päivänä. Ja et voi tehdä asialle mitään muuta kuin pyyhkiä kyyneleet poskiltasi ja jatkaa työtäsi.

Harri: Tulee mieleen Javascript-maailma, jossa etenemisnopeus myös on huimaa.

Kari-Pekka: Kyllä, teitä on varoitettu. Paljon parannettavaa löytyy ja potentiaali on mieletön. Meillä on tolkuttomasti ideoita ja parannusehdotuksia, mitä kaikkea tällä voi toteuttaa ja kaikki tästä monikäyttäjäympäristöstä innostuneet varmasti itsekin ymmärtävän sen potentiaalin, ja mitä tämä kaikki mahdollistaa. Tämä on asia, joka tulee, mutta milloin se tulee ja milloin on fiksua alkaa siihen tekemään juttuja, niin tähän on vähän vaikeampi antaa vastausta.

Harri: Se voidaan sanoa, että se hetki ei ole ehkä juuri nyt.

Kari-Pekka: Kyllä. Aika tulee ratkaisemaan monta meidän ongelmaa ja tämä muuttuu vain helpommaksi, se on selvää. Kun tällä alalla joku on ratkaistu hyvin, yleensä siitä tulee standardi. Kunhan tämä ensimmäinen aalto saadaan taltutettua, niin sitten meno on jo tasaisempaa tulevaisuudessa. Uskoisin.

Jarkko: Ensimmäisiä hyviä askeleita on jo otettu. Esimerkiksi OpenVR on hyvä juttu, sillä se yhtenäistää paljon erilaisten valmistajien käyttämiä sarjoja.

Harri: Se ratkaisee tätä ongelmaa, että vaikka meillä on eri valmistajien silmikoita käytössä, niin silti sama sovellus toimisi kaikissa.

UNITYN UUSIA OMINAISUUKSIA

Harri: Onko Unityn lähitulevaisuudessa jotain ominaisuuksia, mitä odotatte?

Kari-Pekka: Ainakin natiivia media playeria, sitä toivotaan riemusta kiljuen. Kyllä 360-videoilla on niin paljon annettavaa, että olisi hienoa, jos siihen olisi tuki Unityn puolelta ilman kolmansia osapuolia. Se avaa jälleen kerran ovet entistä parempaan immersioon ja hyötykäyttöön. Natiivi media player ja parannetut monipeliominaisuudet, niitä odotan.

Jarkko: Ollaan pääsemässä Unityn puolelta MMO-verkkokoodiin ja sen toteuttamiseen enemmänkin. Sitä olen tässä odotellut kuin kuuta nousevaa. Jos sitä saisi sovellettua vielä VR:ään, niin se olisi tosi huikea juttu. Karrikoitu esimerkki on WoW eli World of Warcraft. Ajatellaan, että käyttäjiä on VR:ssä saman verran. Se on yksi ruusuisen tulevaisuuden kuvista.

Kari-Pekka: En enää koskaan astuisi pihalle!

Harri: Unity on joskus kommentoinut, että he haluaisivat, että VR-kehitys tapahtuisi VR:n sisällä. Voitteko vähän avata tätä?

Jarkko: Ajatellaan, että meillä on jo maailma periaatteessa valmiiksi tehtynä, niin menet editorin sisällä sinne VR-maailmaan, ja pystyt siellä luomaan uusia asioita. Siellä on jonkin näköinen UI esimerkkinä, mistä pystyt nappailemaan tavaraa. Tämän ominaisuuden on oikeastaan pakko tulla, koska isoimmalla kilpailijalla eli Unreal Enginellä se jo on. Ihan varmasti yksi seuraavista jutuista, mikä tulee mukaan.

Kari-Pekka: Muistatko sen kehittämäni hotspot-työkalun? Se on juuri VR-devausta VR:n sisällä.

Harri: Miten koodin kirjoittaminen, onko se edelleen näppiksellä tapahtuvaa, vai onko siihen jotain uutta ratkaisua?

Jarkko: On olemassa Play Makerin kaltaisia assetteja, millä ei tarvitse kirjoittaa koodia, mutta jos halutaan jotain äärimmäisen tarkkaa ajastettua hommaa, niin sanoisin, että sen joutuu vieläkin koodaamaan. Siitä ei varmaan hetkeen olla pääsemässä ihan täysin eroon.

Kari-Pekka: WebVR:ää tutkiessani törmäsin kyllä alustoihin, jotka toimivat selainpohjana sillä tavalla, että koodia ei tarvinnut itse paljoa näpytellä. Veteli vain linkkejä palloista toiseen, niin pystyi tekemään jo aika paljon. Esimerkiksi Vizor on sellainen.

Simppeleihin ohjelmiin se olisi hyvä suunta tuottaa koodia VR:n sisällä, mutta minun mielestäni tekeminen pitäisi nostaa korkeammalle abstraktiotasolle. Se täytyy saada jollain tavalla visuaalisesti toimivaksi, että voit raahata objekteja työkaluja käyttämällä ja silmillä, äänellä tai muulla komennolla syöttää niitä. Se jää nähtäväksi, milloin joku tekee toimivan reseptin, että voimme silmikot päässä sanella, heilua, tanssia tai huutaa ja maailma ympärillämme muuttuu.

MITEN MONIKÄYTTÄJÄYMPÄRISTÖ SYNTYY?

Kari-Pekka: Itse käytän Visual Studiota. Jos olet joskus koodannut C#:lla ja menet uuteen kieleen, ja sinulla on Visual Studion apu alla C#:iin, niin aika hyvät avut on. Myös Google, YouTube ja foorumit auttavat paljon. Enää ei tarvitse vuosikaupalla itsekseen opiskella yliopistolla, vaan kyllä apuvälineitä on jo niin paljon, että jollain tavalla koodista selviää itsenäisestikin. Visual Studiossa on hyvät lisenssit, ja niihin saa lisäplugineita, joilla tulee jo ihan kokonaisia blokkejakin. Tekstieditoria en suosittele kenellekään.

Harri: Kun saatte Visual Studiossa tai Unityssä jonkun pätkän valmiiksi, ja haluatte sen testata, niin kuinka kauan menee siihen, että se saadaan Vivelle? Kuinka paljon se on vielä käsityötä?

Kari-Pekka: itse asiassa Steam-plugini tukee näitä, että kun olet saanut koodisi valmiiksi, tallentanut ja editorissa vetänyt viittaukset ja objektit paikoilleen, niin painat vaan playtä, niin saman tien pääset näkemään työsi tulokset.

Jarkko: Kun olet kirjoittanut koodin, niin oikeassa alareunassa pyörii merkki. Kun se on pyörinyt, niin koodi on koottu ja valmis käyttöön.

Kari-Pekka: Se on todella nopeaa ja testaaminen editorissa tapahtuu miellyttävästi. Itsekin Fillarillaa tehdessäni pystyin luottamaan, että jos se toimii editorissa, se toimii myös Gearissa.

Harri: Kun Unityllä on koodattu monikäyttäjäympäristöä, niin miten se testataan? Vedät headsetin päähän, painat playtä, otat kapulat ja testaat?

Kari-Pekka: Kyllä. Se ei ole ehkä ihan niin suorituskykyinen, mutta kuin käännetty, kun editori vie siinä virtoja aika paljonkin. Pikaisia testejä sillä voi tehdä, ja se on suuri apu. Ei tulisi mitään, jos aina pitäisi tehdä uusi paketti.

Lue aikaisemmat blogipostauksemme:

Miltä tuntuu lentää vihaisten lintujen kanssa?

Devaaja avautuu: miten fillarilla vr-sovellus tehtiin?

Kuuntele koko tarina Ballmerin Piikistä!

Muut linkit:

Adam

A Boy & His Kite

Johanna Kalliomäki