Leap Saber - Beat Saber adaptálása kézkövetésre
A Beat Saber az világ egyik legnépszerűbb virtuális valóság (VR) játéka. Ezen projekt célja a játék lemásolása és VR kontrollerkről kézkövetéssel való vezérlésre adaptálása volt. A Leap Motion különleges lehetőségei egyszerre adnak új lehetőségeket és korlátozásokat a játék kezelésére. Ezek kiegyensúlyozása volt a projekt egyik legérdekesebb része.
A Leap Motion szenzor
Az eszköz célja általános kézkövetés, tehát minden ízület és az alkar pozícióját is képes követni valós időben, kicsi késleltetéssel. A szenzor működésének alapja egyszerű: két nagy látószögű infravörös kamera alapján követi a kézmozgást, melyeket IR LED-ek általi megvilágítás segít. Az eszköz látómezeje kb. 140x120° és nagyjából a szenzortól 10-60cm-re követ a legjobban. A mostanra Ultraleap-re átnevezett cég nemrég adott ki egy frissített hardvert, mely 170x170°-os látómezővel rendelkezik és főleg VR headset-ekbe és bevásárlóközponti kiosk-ok érintésmentes kezelésére optimalizálták.
A Leap Motion szenzor felépítése
Az adatok feldolgozására az Ultraleap által folyamatosan fejlesztett illesztőprogram elérhető több programozási nyelven, illetve Unity integráció formájában is, illetve a szenzor nyers adatai használhatóak általános gépi látási feladatokra is UVC webkamera interfészen keresztül.
A Leap Motion legújabb szoftverének összehasonlítása az előző verzióval
Beat Saber
A Beat Saber megjelenése óta töretlen népszerűségnek örvend egyszerű, látványos játékmenetének és az egyre bővülő dal választékának köszönhetően. A hivatalos pályákon kívül egy nagy közösség is kialakult plusz pályák készítésére, ami széles és folyamatosan frissülő választékot biztosít a még több dalra vágyó játékosoknak. Az játékmenet lényege, hogy a játékos felé érkező ritmushoz igazított kockákat a megfelelő irányban vágja el. A projekt szempontjából nagyon előnyös volt hogy egyszerű a felépítése és játékmenete, mivel sokkal könnyebb volt a fejlesztés és hamarabb lehetett az adaptációra fókuszálni.
“Inspiráció”
A projekt ötlete eredetileg egy Twitter posztból származik, de mivel ez a Quest 2 VR headset-re készült és nem volt elérhető a forráskódja, az itt bemutatott projekt teljesen tiszta lappal kezdődött.
A Leap adaptáció fő problémái
Kéz elhelyezkedés
A kockák folyamatos érkezése azt eredményezi, hogy sokszor előre nyúlna az ember hogy hamarabb elérje a kockákat, ezzel előidézve több problémát. Először is könnyű olyan helyre kerülnie a kezeknek, ahol a szenzor már nem képes jól követni őket. Ezen kívül a kockák nem feltétlen ugyanabban az időben érik el a kardokat. Ez a VR verzióban is így van, de a kezek a kockákhoz képesti nagyságuk miatt sokkal többet tudnak előre-hátra mozogni. Ezt a problémát több módon is próbáltam orvosolni: kikapcsoltam a mélység követést, valamint a kezek színét a szenzortól való távolsággal változtatom figyelmeztető visszajelzésképpen.
Követési minőség
A kardok az ujjak végéhez való rögzítése egy kézenfekvő döntésnek tűnt, de valójában több gond is volt vele: a szög természetellenes a játék közben és a Leap mutatóujjat elég zajosan tudja csak követni néhány szögben. Ennek megoldására a szenzorhoz képest a kezek el vannak tolva, a kardok pedig a csuklókhoz lettek rögzítve és egy kényelmes és játékmenethez megfelelő szögben állnak.
Pályák betöltése
A Beat Saber pályák betöltésének lehetősége nem volt az eredeti terv része, de egy kis utánajárás után kiderült, a játék egy JSON alapú, a dal készítő közösségnek köszönhetően alaposan dokumentált formátumot használ. Egy külön wiki oldal van szentelve a formátum részleteinek, melyek könnyen feldolgozhatónak bizonyultak. Ugyan nem minden részét használja fel a map formátumnak a Leap-es változat, de a pályák lényegi része így megjelenítésre kerül. Ennek a megoldásnak a nagy előnye, hogy a játék akármilyen Beat Saber-hez készült map-el használható, melyekből óriási válaszék elérhető például a BSaber oldalon, vagy akár AI segítségével tetszőleges YouTube videóból generálhatóak a BeatSage segítségével. A pályák egy mappából dinamikusan töltődnek be minden indításkor, így akármikor bővíthető a dal választék.
Menük
A Leap-es kézkövetésben nincs semmilyen beépített kurzor, és ugyan vannak megoldások arra, hogy hogyan lehet rámutatni dolgokra, de egyik sem teljesen optimális. Ennek megoldására a menüt átdolgoztam hogy a játékmenet egyféle kiterjesztése legyen és így egy egyszerű tutorial-ként is szolgál. A videón is látható módon a kiválasztáshoz a megfelelő kockát kell elvágni.
Effektek
A kockák dinamikus átvágása fontos része a Beat Saber ikonikus grafikájának. Ezt az EzySlice bővítménnyel valósítottam meg. Az elvágott darabok azonban felgyűltek a kezek alatt, ami ugyan szórakoztató volt egy ideig, de hosszú távon zavaró volt a játékmenet szempontjából. Ennek javítására egy robbanásszerű impulzust adok minden darabnak, aminek következtében lerepülnek a pályáról. A bloom is fontos része volt a grafikának, amit a KinoBloom bővítmény segítségével valósítottam meg.
Az elkészült játék
Hova tovább?
A projekt több részét is tervezem még fejleszteni, például egy Leaderboard készítésével, valamint egy komplexebb pontozási rendszerrel. A kényelem sokat javult a fejlesztés során, de úgy gondolom egy kis kísérletezéssel még jobbá lehetne tenni. Ezen kívül a Leap más szögekben való elhelyezésével is próbálkozni akarok. Az egyik legérdekesebb továbbfejlesztési irány pedig a HoloLens vagy Quest 2 kézkövetésére való átültetés lenne, melynek megvalósítására már van is elképzelésem.