Rólunk Cikkek Galéria Projektek Tagok Tudásbázis Tanfolyam Workshopok 3D Nyomtatás

Leap Saber - Beat Saber adaptálása kézkövetésre

Írta: Szakál Vince Abosa
2022.02.03.

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.