Módulo lunarLunar Module

Observação

Este artigo discute um exemplo exploratório que criamos nos laboratórios de design de realidade misturada, um lugar onde compartilhamos nossas aprendeções e sugestões para o desenvolvimento de aplicativos de realidade misturada.This article discusses an exploratory sample we’ve created in the Mixed Reality Design Labs, a place where we share our learnings about and suggestions for mixed reality app development. Nossos artigos e códigos relacionados ao design irão evoluir à medida que fizermos novas descobertas.Our design-related articles and code will evolve as we make new discoveries.

O módulo lunar é um aplicativo de exemplo de código-fonte aberto dos laboratórios de design de realidade misturada da Microsoft.Lunar Module is an open-source sample app from Microsoft's Mixed Reality Design Labs. Saiba como estender gestos de base do HoloLens com acompanhamento de duas mãos e entrada do controlador Xbox, criar objetos que são reativos para mapeamento de superfície e localização de plano e implementar sistemas de menu simples.Learn how to extend HoloLens' base gestures with two-handed tracking and Xbox controller input, create objects that are reactive to surface mapping and plane finding, and implement simple menu systems. Todos os componentes do projeto estão disponíveis para uso em suas próprias experiências de aplicativo de realidade misturada.All of the project's components are available for use in your own mixed reality app experiences.

Vídeo de demonstraçãoDemo video

Registrado com o HoloLens 2 usando a captura de realidade misturadaRecorded with HoloLens 2 using Mixed Reality Capture

Reconsiderando experiências clássicas para a realidade mista do WindowsRethinking classic experiences for Windows Mixed Reality

Alto na atmosfera, uma pequena que sobrou de remessa do módulo Apollo pesquisa metodicamente o terreno irregular abaixo.High up in the atmosphere, a small ship reminiscent of the Apollo module methodically surveys jagged terrain below. Nosso piloto Fearless é uma área de aterrissagem adequada.Our fearless pilot spots a suitable landing area. A descendente é árdua, mas felizmente, essa jornada foi feita muitas vezes antes...The descent is arduous but thankfully, this journey has been made many times before...

Interface original da Atari lander lunar 1979Original interface from Atari’s 1979 Lunar Lander
Interface original da Atari lander lunar 1979Original interface from Atari’s 1979 Lunar Lander

Lunar Lander é um clássico, em que os jogadores tentam fazer um piloto de uma lua Lander em um ponto simples de terreno lunar.Lunar Lander is an arcade classic where players attempt to pilot a moon lander onto a flat spot of lunar terrain. Qualquer pessoa nasceu na 70 tem mais chances de horas em um horário comercial com seus olhos colados com esse vetor entregue plummeting do céu.Anyone born in the 1970s has most likely spent hours in an arcade with their eyes glued to this vector ship plummeting from the sky. Como um jogador navega pelo seu envio para uma área de aterrissagem, o terreno é dimensionado para revelar cada vez mais detalhes.As a player navigates their ship toward a landing area, the terrain scales to reveal progressively more detail. Sucesso significa o patamar dentro do limite seguro de velocidade horizontal e vertical.Success means landing within the safe threshold of horizontal and vertical speed. Os pontos são concedidos para o tempo gasto e o combustível restante, com um multiplicador com base no tamanho da área de aterrissagem.Points are awarded for time spent landing and remaining fuel, with a multiplier based on the size of the landing area.

Além do jogo, a época de partida dos jogos trouxe inovação constante de esquemas de controle.Aside from the gameplay, the arcade era of games brought constant innovation of control schemes. Do joystick de quatro vias e das configurações de botão mais simples (visto no icônico Pac-Man) para os esquemas altamente específicos e complicados vistos nas últimas 90 s e 00s (como aquelas em simuladores de golfe e trilhos de trilho).From the simplest four-way joystick and button configurations (seen in the iconic Pac-Man) to the highly specific and complicated schemes seen in the late 90 s and 00s (like those in golf simulators and rail shooters). O esquema de entrada usado na máquina lander lunar é intrigante por dois motivos: moderada e imersão.The input scheme used in the Lunar Lander machine is intriguing for two reasons: curb appeal and immersion.

Console de Atari lunar LanderAtari’s Lunar Lander’s arcade console
Console Atari lunar LanderAtari's Lunar Lander arcade console

Por que Atari e tantas outras empresas de jogos decidem reconsiderar a entrada?Why did Atari and so many other game companies decide to rethink input?

Um criança percorrendo um intrigada será naturalmente o mais novo computador flashiest.A kid walking through an arcade will naturally be intrigued by the newest, flashiest machine. Mas o lunar Lander apresenta um mecânico de entrada romance que me esgotou da sua escala.But Lunar Lander features a novel input mechanic that stood out from the crowd.

O lander lunar usa dois botões para girar o envio para a esquerda e para a direita e uma alavanca de Thrustmaster para controlar a quantidade de Thrustmaster que o navio produz.Lunar Lander uses two buttons for rotating the ship left and right and a thrust lever to control the amount of thrust the ship produces. Essa alavanca dá aos usuários um determinado nível de astúcia que um joystick regular não pode fornecer.This lever gives users a certain level of finesse a regular joystick can’t provide. Também é um componente comum às ferramentas cockpit de aviação moderna.It also happens to be a component common to modern aviation cockpits. Atari queria lander lunar para aprofundar o usuário na sensação de que eles estavam na verdade, realizando um piloto de um módulo lunar.Atari wanted Lunar Lander to immerse the user in the feeling that they were in fact piloting a lunar module. Esse conceito é conhecido como tactile imersão.This concept is known as tactile immersion.

TACTILE imersão é a experiência de comentários de sensor de fazer ações repetitivas.Tactile immersion is the experience of sensory feedback from doing repetitive actions. Nesse caso, a ação repetitiva de ajustar a alavanca de limitação e a rotação, que nossos olhos veem e nossos ouvidos Ouve, ajuda a conectar o jogador ao ato de pouso de uma entrega na superfície da lua.In this case, the repetitive action of adjusting the throttle lever and rotation, which our eyes see and our ears hear, helps connect the player to the act of landing a ship on the moon’s surface. Esse conceito pode ser vinculado ao conceito de psicológica de "Flow".This concept can be tied to the psychological concept of "flow." Onde um usuário é totalmente absorvido em uma tarefa que tem a combinação certa de desafio e recompensa, ou ainda mais simplesmente, eles estão "na zona".Where a user is fully absorbed in a task that has the right mixture of challenge and reward, or put more simply, they’re “in the zone.”

De forma improvada, o tipo mais proeminente de imersão em realidade misturada é imersão espacial.Arguably, the most prominent type of immersion in mixed reality is spatial immersion. O ponto total da realidade misturada é nos enganar a acreditar que esses objetos digitais existem no mundo real.The whole point of mixed reality is to fool ourselves into believing these digital objects exist in the real world. Estamos sintetizando hologramas em nossos arredores, imersos espacialmente em ambientes e experiências inteiros.We’re synthesizing holograms in our surroundings, spatially immersed in entire environments and experiences. Isso não significa que ainda podemos empregar outros tipos de imersão em nossas experiências, assim como Atari fez com tactile imersão no lunar Lander.This doesn’t mean we can’t still employ other types of immersion in our experiences just as Atari did with tactile immersion in Lunar Lander.

Criando com imersãoDesigning with immersion

Como podemos aplicar tactile imersão a uma atualização volumétricos sequência para o Atari clássico?How might we apply tactile immersion to an updated, volumetric sequel to the Atari classic? Antes de lidar com o esquema de entrada, a construção do jogo para o espaço tridimensional precisa ser resolvida.Before tackling the input scheme, the game construct for three-dimensional space needs to be addressed.

Visualizando o mapeamento de superfície no HoloLensVisualizing surface mapping in HoloLens
Visualizando o mapeamento espacial no HoloLensVisualizing spatial mapping in HoloLens

Aproveitando o ambiente de um usuário, nós efetivamente temos opções de terrenos infinitas para o patamar do nosso módulo lunar.By leveraging a user’s surroundings, we effectively have infinite terrain options for landing our lunar module. Para tornar o jogo mais parecido com o título original, um usuário poderia potencialmente manipular e colocar os pads de pouso de diversas dificuldades em seu ambiente.To make the game most like the original title, a user could potentially manipulate and place landing pads of varying difficulties in their environment.

Pilotando o módulo lunarFlying the Lunar Module
Pilotando o módulo lunarFlying the Lunar Module

Exigir que o usuário Aprenda o esquema de entrada, controle a remessa e faça com que um pequeno destino seja um grande alvo é muito a ser solicitado.Requiring the user to learn the input scheme, control the ship, and have a small target to land on is a lot to ask. Uma experiência de jogo bem-sucedida apresenta a combinação certa de desafio e recompensa.A successful game experience features the right mix of challenge and reward. O usuário pode escolher um nível de dificuldade, com o modo mais fácil simplesmente exigindo que o usuário alcance com êxito uma área definida pelo usuário em uma superfície digitalizada pelo HoloLens.The user can choose a level of difficulty, with the easiest mode simply requiring the user to successfully land in a user-defined area on a surface scanned by the HoloLens. Quando um usuário sai do jogo, ele pode então se ajustar à dificuldade que eles veem.Once a user gets the hang of the game, they can then crank up the difficulty as they see fit.

Adicionando entrada para gestos de mãoAdding input for hand gestures

A entrada base do HoloLens tem apenas dois gestos – toque e flor.HoloLens base input has only two gestures - Air Tap and Bloom. Os usuários não precisam lembrar nuances contextuais ou uma lista lavanderia de gestos específicos que tornam a interface da plataforma versátil e fácil de aprender.Users don’t need to remember contextual nuances or a laundry list of specific gestures that makes the platform’s interface both versatile and easy to learn. Embora o sistema possa expor apenas esses dois gestos, o HoloLens como um dispositivo pode rastrear duas mãos ao mesmo tempo.While the system may only expose these two gestures, HoloLens as a device is can track two hands at once. Nosso ode para lunar Lander é um aplicativo de "imersão", o que significa que podemos estender o conjunto base de gestos para aproveitar duas mãos e adicionar nossa própria agradavelmente tactile significa para a navegação de módulo lunar.Our ode to Lunar Lander is an [immersive app, which means we can extend the base set of gestures to leverage two hands and add our own delightfully tactile means for lunar module navigation.

Voltando ao esquema de controle original, precisávamos resolver para Thrustmaster e Rotation.Looking back at the original control scheme, we needed to solve for thrust and rotation. A limitação é a rotação no novo contexto adiciona um eixo adicional (tecnicamente, dois, mas o eixo Y é menos importante para a aterrissagem).The caveat is rotation in the new context adds an additional axis (technically two, but the Y axis is less important for landing). Os dois movimentos de envio distintos naturalmente se prestam para serem mapeados para cada mão:The two distinct ship movements naturally lend themselves to be mapped to each hand:

Gesto de tocar e arrastar para girar Lander em todos os três eixosTap and drag gesture to rotate lander on all three axes
Gesto de tocar e arrastar para girar Lander em todos os três eixosTap and drag gesture to rotate lander on all three axes

ThrustmasterThrust

A alavanca no computador original de alta prioridade mapeada para uma escala de valores, quanto mais alta a alavanca foi movida, mais o ThrustMaster foi aplicado à remessa.The lever on the original arcade machine mapped to a scale of values, the higher the lever was moved the more thrust was applied to the ship. Uma nuance importante para destacar aqui é como o usuário pode tirar seu alcance do controle e manter um valor desejado.An important nuance to point out here is how the user can take their hand off of the control and maintain a desired value. Podemos usar efetivamente o comportamento de toque e arrastar para obter o mesmo resultado.We can effectively use tap-and-drag behavior to achieve the same result. O valor de Thrustmaster começa em zero.The thrust value starts at zero. O usuário toca e arrasta para aumentar o valor.The user taps and drags to increase the value. Nesse ponto, eles poderiam deixar de continuar a mantê-lo.At that point they could let go to maintain it. Qualquer alteração de valor de gesto de toque e arrastar seria o Delta do valor original.Any tap-and-drag gesture value change would be the delta from the original value.

RotaçãoRotation

Isso é um pouco mais complicado.This is a little more tricky. Ter os botões "girar" de Holographic para tocar para uma experiência terrível.Having holographic “rotate” buttons to tap makes for a terrible experience. Não há um controle físico para aproveitar, portanto, o comportamento deve vir da manipulação de um objeto que representa o Lander ou com o próprio Lander.There isn’t a physical control to leverage, so the behavior must come from manipulation of an object representing the lander, or with the lander itself. Nós reunimos um método usando TAP-and-arraste, que permite que um usuário "empurre e empurre" com eficiência na direção que desejam que ele tenha uma face.We came up with a method using tap-and-drag, which enables a user to effectively “push and pull” it in the direction they want it to face. A qualquer momento que um usuário toca e se mantém, o ponto no espaço em que o gesto foi iniciado se torna a origem da rotação.Anytime a user taps and holds, the point in space where the gesture was initiated becomes the origin for rotation. Arrastar da origem converte o Delta da tradução do lado (X, Y, Z) e o aplica ao Delta dos valores de rotação do Lander.Dragging from the origin converts the delta of the hand's translation (X,Y,Z) and applies it to the delta of the lander's rotation values. Ou, mais simplesmente, arrastando para a esquerda <-> direito, < > para baixo, encaminhar <-> de volta em espaços gira a remessa de acordo.Or more simply, dragging left <-> right, up <-> down, forward <-> back in spaces rotates the ship accordingly.

Como o HoloLens pode acompanhar duas mãos, a rotação pode ser atribuída à mão à direita enquanto o ThrustMaster é controlado pela esquerda.Since the HoloLens can track two hands, rotation can be assigned to the right hand while thrust is controlled by the left. Astúcia é o fator determinante para o sucesso neste jogo.Finesse is the driving factor for success in this game. A sensação dessas interações é a prioridade mais alta absoluta.The feel of these interactions is the absolute highest priority. Especialmente no contexto de tactile imersão.Especially in context of tactile immersion. Um envio que reage muito rapidamente seria difícil de ser direcionado, enquanto um pouco lento exigiria que o usuário "Envie por push e puxe" na entrega por um longo período de tempo estranha.A ship that reacts too quickly would be difficult to steer, while one too slow would require the user to “push and pull” on the ship for an awkwardly long amount of time.

Adicionando entrada para controladores de jogoAdding input for game controllers

Enquanto os gestos de mão no HoloLens fornecem um método romance de controle refinado, ainda há uma certa falta de comentários de tactile "verdadeiro" que você obtém de controles analógicos.While hand gestures on the HoloLens provide a novel method of fine-grain control, There's still a certain lack of 'true' tactile feedback that you get from analog controls. Conectar um controlador de jogo do Xbox nos permite voltar essa sensação de física, aproveitando os pentes de controle para manter o controle refinado.Connecting an Xbox game controller allows us to bring back this sense of physicality while leveraging the control sticks to keep fine-grain control.

Há várias maneiras de aplicar o esquema de controle relativamente direto ao controlador Xbox.There are multiple ways to apply the relatively straight-forward control scheme to the Xbox controller. Como estamos tentando permanecer o mais próximo possível da configuração original, o Thrustmaster mapeia melhor para o botão disparador.Since we're trying to stay as close to the original arcade set up as possible, Thrust maps best to the trigger button. Esses botões são controles analógicos, o que significa que eles têm mais do que Estados simples e desligados , eles realmente respondem ao grau de pressão colocados neles.These buttons are analog controls, meaning they have more than simple on and off states, they actually respond to the degree of pressure put on them. Isso nos dá um constructo semelhante à alavanca de Thrustmaster.This gives us a similar construct as the thrust lever. Ao contrário do jogo original e do gesto de mão, esse controle recortará a Thrustmaster do navio quando um usuário parar de colocar a pressão no gatilho.Unlike the original game and the hand gesture, this control will cut the ship's thrust once a user stops putting pressure on the trigger. Ele ainda dá ao usuário o mesmo grau de astúcia que o jogo de Altova original.It still gives the user the same degree of finesse as the original arcade game did.

Thumbstick à esquerda é mapeada para guinada e roll, a Thumbstick direita é mapeada para pitch e rollLeft thumbstick is mapped to Yaw and Roll, Right thumbstick is mapped to Pitch and Roll
O Thumbstick esquerdo é mapeado para guinada e roll; o Thumbstick direito é mapeado para pitch e rollLeft thumbstick is mapped to yaw and roll; right thumbstick is mapped to pitch and roll

O Thumbsticks duplo se presta naturalmente ao controle da rotação de remessa.The dual thumbsticks naturally lend themselves to controlling ship rotation. Infelizmente, há três eixos nos quais a remessa pode girar e duas Thumbsticks que dão suporte a dois eixos.Unfortunately, there are three axes on which the ship can rotate and two thumbsticks which both support two axes. Essa incompatibilidade significa que um Thumbstick controla um eixo; ou há sobreposição de eixos para o Thumbsticks.This mismatch means either one thumbstick controls one axis; or there's overlap of axes for the thumbsticks. A solução anterior acabou de se sentir "quebrada", já que Thumbsticks de forma inerente mesclar seus valores X e Y locais.The former solution ended up feeling "broken" since thumbsticks inherently blend their local X and Y values. A última solução exigiu algum teste para descobrir quais eixos redundantes se sentem mais naturais.The latter solution required some testing to find which redundant axes feel the most natural. O exemplo final usa a guinada e roll (eixos Y e x) para o Thumbstick esquerdo, e pitch e roll (eixos Z e x) para a Thumbstick direita.The final sample uses yaw and roll (Y and X axes) for the left thumbstick, and pitch and roll (Z and X axes) for the right thumbstick. Isso parecia que a rolagem mais natural parece ser bem emparelhada com desvio e inclinação.This felt the most natural as roll seems to independently pair well with yaw and pitch. Como uma observação adicional, o uso de Thumbsticks para roll também ocorre para dobrar o valor de rotação; é muito divertido ter os loops Lander.As a side note, using both thumbsticks for roll also happens to double the rotation value; it's pretty fun to have the lander do loops.

Este aplicativo de exemplo demonstra como o reconhecimento espacial e tactile imersão podem alterar significativamente uma experiência graças às modalidades de entrada extensível da realidade mista do Windows.This sample app demonstrates how spatial recognition and tactile immersion can significantly change an experience thanks to Windows Mixed Reality's extensible input modalities. Embora o lunar Lander possa estar perto de 40 anos de idade, os conceitos expostos com esse pequeno octógono-com-pernas residirão sempre.While Lunar Lander may be nearing 40 years in age, the concepts exposed with that little octagon-with-legs will live on forever. Ao imaginar o futuro, por que não examinar o passado?When imagining the future, why not look at the past?

Detalhes técnicosTechnical details

Você pode encontrar scripts e pré-fabricados para o aplicativo de exemplo de módulo lunar no GitHub de laboratórios de design de realidade misturada.You can find scripts and prefabs for the Lunar Module sample app on the Mixed Reality Design Labs GitHub.

Sobre o autorAbout the author

Picture of Addison Linville Linville de AddisonAddison Linville
Designer de UX @MicrosoftUX Designer @Microsoft

Veja tambémSee also