Månmodul

Månmodul

Anteckning

Den här artikeln beskriver ett undersökande exempel som vi har skapat i Mixed Reality Design Labs, en plats där vi delar våra lärdomar om och förslag för utveckling av appar med mixad verklighet. Våra designrelaterade artiklar och vår kod kommer att utvecklas när vi gör nya upptäckter.

Anteckning

Den här exempelappen har utformats för HoloLens 1:a generationen.

Lunar Module är en exempelapp med öppen källkod från Microsofts Mixed Reality Design Labs. Lär dig hur du utökar HoloLens basgester med tvåhandsspårning och Xbox-kontrollantindata, skapar objekt som är reaktiva för ytmappning och plansökning och implementerar enkla menysystem. Alla projektets komponenter är tillgängliga för användning i dina egna appar för mixad verklighet.

Demonstrationsvideo

Inspelad med HoloLens 2 med Mixed Reality Capture

Ompröva klassiska upplevelser för Windows Mixed Reality

Högt upp i atmosfären undersöker ett litet fartyg som påminner om Apollo-modulen metodiskt ojämn terräng nedanför. Vår orädde pilot upptäcker ett lämpligt landningsområde. Nedstigningen är mödosam men tack och lov har denna resa gjorts många gånger tidigare ...

Ursprungligt gränssnitt från Ataris månlandare från 1979
Ursprungligt gränssnitt från Ataris månlandare från 1979

Lunar Lander är en arkadklassiker där spelare försöker lotsa en månlandare på en platt plats i mån terräng. Alla födda på 1970-talet har troligen tillbringat timmar i en arkad med ögonen limmade på detta vektorskepp som rasar från himlen. När en spelare navigerar sitt skepp mot ett landningsområde skalas terrängen för att visa gradvis mer information. Framgång innebär landning inom det säkra tröskelvärdet för horisontell och vertikal hastighet. Poäng tilldelas för tid som spenderas landning och återstående bränsle, med en multiplikator baserat på landningsområdets storlek.

Bortsett från spelet, arkaden eran av spel förde konstant innovation av kontroll system. Från de enklaste fyrvägs joystick- och knappkonfigurationerna (sett i den ikoniska Pac-Man) till de mycket specifika och komplicerade system som sågs i slutet av 90- och 00-talet (som de i golfsimulatorer och järnvägsskyttar). Indataschemat som används i Lunar Lander-maskinen är spännande av två skäl: curb appeal och nedsänkning.

Ataris Lunar Lander-arkadkonsol
Atari's Lunar Lander arkadkonsol

Varför bestämde sig Atari och så många andra spelföretag för att tänka om?

Ett barn som går genom en arkad kommer naturligtvis att fascineras av den nyaste, flashigaste maskinen. Men Lunar Lander har en ny inmatningsmekaniker som stack ut från publiken.

Lunar Lander använder två knappar för att rotera skeppet vänster och höger och en dragkraftsspak för att kontrollera mängden dragkraft som fartyget producerar. Den här spaken ger användarna en viss finess som en vanlig joystick inte kan ge. Det råkar också vara en komponent som är gemensam för moderna flyg cockpits. Atari ville att Lunar Lander skulle fördjupa användaren i känslan av att de faktiskt lotsade en månmodul. Detta begrepp kallas taktil nedsänkning.

Taktil nedsänkning är upplevelsen av sensorisk feedback från att utföra repetitiva åtgärder. I det här fallet hjälper den repetitiva åtgärden att justera begränsningsspaken och rotationen, som våra ögon ser och våra öron hör, att ansluta spelaren till landningen av ett skepp på månens yta. Detta begrepp kan kopplas till det psykologiska begreppet "flöde". Om en användare är helt absorberad i en uppgift som har rätt blandning av utmaning och belöning, eller enkelt uttryckt, är de "i zonen".

Förmodligen är den mest framträdande typen av nedsänkning i mixad verklighet rumslig nedsänkning. Hela poängen med mixad verklighet är att lura oss själva att tro att dessa digitala objekt existerar i den verkliga världen. Vi syntetiserar hologram i vår omgivning, rumsligt nedsänkta i hela miljöer och upplevelser. Det betyder inte att vi fortfarande inte kan använda andra typer av nedsänkningar i våra erfarenheter precis som Atari gjorde med taktil nedsänkning i Lunar Lander.

Designa med nedsänkning

Hur kan vi tillämpa taktil nedsänkning på en uppdaterad, volymtrisk uppföljare till Atari-klassikern? Innan du tar itu med indataschemat måste spelkonstruktionen för tredimensionellt utrymme åtgärdas.

Visualisera ytmappning i HoloLens
Visualisera rumslig mappning i HoloLens

Genom att utnyttja en användares omgivning har vi effektivt oändliga terrängalternativ för landning av vår månmodul. För att göra spelet mest likt den ursprungliga titeln kan en användare potentiellt manipulera och placera landningsdynor med olika svårigheter i sin miljö.

Att kräva att användaren lär sig indataschemat, kontrollerar fartyget och har ett litet mål att landa på är mycket att fråga. En lyckad spelupplevelse har rätt blandning av utmaning och belöning. Användaren kan välja en svårighetsgrad, med det enklaste läget som helt enkelt kräver att användaren hamnar i ett användardefinierat område på en yta som genomsöks av HoloLens. När en användare får kläm på spelet kan de sedan öka svårigheten som de anser lämpligt.

Lägga till indata för handgester

HoloLens-basindata har bara två gester – Air Tap och Bloom. Användare behöver inte komma ihåg sammanhangsbaserade nyanser eller en tvättlista med specifika gester som gör plattformens gränssnitt både mångsidigt och lätt att lära sig. Även om systemet bara kan exponera dessa två gester kan HoloLens som enhet spåra två händer samtidigt. Vår ode till Lunar Lander är en [uppslukande app, vilket innebär att vi kan utöka basuppsättningen av gester för att utnyttja två händer och lägga till våra egna härligt taktila medel för navigering i månmodulen.

När vi tittade tillbaka på det ursprungliga kontrollschemat behövde vi lösa för dragkraft och rotation. Förbehållet är rotation i den nya kontexten lägger till ytterligare en axel (tekniskt två, men Y-axeln är mindre viktig för landning). De två distinkta skeppsrörelserna lämpar sig naturligt för att mappas till varje hand:

Tryck och dra gest för att rotera lander på alla tre axlarna
Tryck och dra gest för att rotera lander på alla tre axlarna

Dragkraft

Spaken på den ursprungliga arkadmaskinen mappades till en skala av värden, ju högre spaken flyttades desto mer dragkraft tillämpades på fartyget. En viktig nyans att påpeka här är hur användaren kan ta bort handen från kontrollen och upprätthålla ett önskat värde. Vi kan effektivt använda tryck-och-dra-beteende för att uppnå samma resultat. Värdet för framstöten börjar på noll. Användaren trycker och drar för att öka värdet. Då kunde de släppa taget för att underhålla det. Varje ändring av tryck- och dra-gestvärde skulle vara deltat från det ursprungliga värdet.

Rotation

Det här är lite svårare. Att ha holografiska "rotera" knappar att trycka på ger en fruktansvärd upplevelse. Det finns ingen fysisk kontroll att utnyttja, så beteendet måste komma från manipulering av ett objekt som representerar landaren eller med själva landaren. Vi kom på en metod med tryck-och-dra, som gör det möjligt för en användare att effektivt "trycka och dra" den i den riktning de vill att den ska möta. När en användare trycker och håller blir punkten i utrymmet där gesten initierades ursprunget för rotation. Om du drar från ursprunget konverteras deltat i handens översättning (X,Y,Z) och tillämpas på deltat i markörens rotationsvärden. Eller helt enkelt, dra vänster <-> höger, upp <-> ner, framåt <-> tillbaka i utrymmen roterar fartyget därefter.

Eftersom HoloLens kan spåra två händer kan rotation tilldelas till höger medan dragkraften styrs av vänster. Finess är den drivande faktorn för framgång i detta spel. Känslan av dessa interaktioner är den absolut högsta prioriteten. Särskilt i samband med taktil nedsänkning. Ett fartyg som reagerar för snabbt skulle vara svårt att styra, medan ett för långsamt skulle kräva att användaren "trycker och drar" på fartyget under en besvärligt lång tid.

Lägga till indata för spelkontrollanter

Handgester på HoloLens ger en ny metod för detaljerad kontroll, men det finns fortfarande en viss brist på "sann" taktil feedback som du får från analoga kontroller. Genom att ansluta en Xbox-spelkontroll kan vi få tillbaka den här fysiska känslan samtidigt som vi använder kontrollpinnarna för att behålla detaljerad kontroll.

Det finns flera sätt att tillämpa det relativt raka kontrollschemat på Xbox-kontrollanten. Eftersom vi försöker hålla oss så nära den ursprungliga arkaduppsättningen som möjligt mappar Thrust bäst till utlösarknappen. Dessa knappar är analoga kontroller, vilket innebär att de har mer än enkla på och av tillstånd, de svarar faktiskt på graden av tryck på dem. Detta ger oss en liknande konstruktion som framstötsspaken. Till skillnad från det ursprungliga spelet och handgesten kommer den här kontrollen att minska fartygets dragkraft när en användare slutar sätta press på utlösaren. Det ger fortfarande användaren samma grad av finess som det ursprungliga arkadspelet gjorde.

Vänster tumsticka mappas till Yaw and Roll, höger tumsticka mappas till Pitch and Roll
Vänster tumstick mappas till gäsp och rulla; höger tumsticka mappas till pitch and roll

De dubbla tumpinnarna lämpar sig naturligt för att kontrollera fartygsrotation. Tyvärr finns det tre axlar där fartyget kan rotera och två tumpinnar som båda stöder två axlar. Det här matchningsfelet innebär att antingen en tumstick styr en axel; eller så finns det överlappande axlar för tumpinnarna. Den tidigare lösningen kändes "trasig" eftersom tumpinnarna i sig blandar sina lokala X- och Y-värden. Den senare lösningen krävde viss testning för att hitta vilka redundanta axlar som känns mest naturliga. Det slutliga exemplet använder gäsp och rulle (Y- och X-axlar) för den vänstra tumstickan, och pitch and roll (Z- och X-axlar) för den högra tumstickan. Detta kändes mest naturligt eftersom rullen verkar självständigt para ihop bra med gäsp och tonhöjd. Som en sidoanteckning sker användning av båda tumpinnarna för roll också för att fördubbla rotationsvärdet; det är ganska kul att ha lander do loopar.

Den här exempelappen visar hur rumslig igenkänning och taktil nedsänkning avsevärt kan förändra en upplevelse tack vare Windows Mixed Reality utökningsbara indatamodaliteter. Medan Lunar Lander kanske närmar sig 40 år, kommer begreppen som exponeras med den lilla oktagonen med ben att leva vidare för alltid. När du föreställer dig framtiden, varför inte titta på det förflutna?

Teknisk information

Du hittar skript och prefabs för lunar module-exempelappen på github:et Mixed Reality Design Labs.

Om författaren

Bild av Addison Linville Addison Linville
UX-Designer @Microsoft

Se även