月着陸船Lunar Module

注意

この記事では、 Mixed Reality 設計ラボで作成した探索的サンプルについて説明します。これは、学習の概要と、mixed reality アプリの開発に関する提案を共有する場所です。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. 設計関連の記事とコードは、新しい検出を行うと進化します。Our design-related articles and code will evolve as we make new discoveries.

旧暦モジュールは、Microsoft の混合現実設計ラボのオープンソースのサンプルアプリです。Lunar Module is an open-source sample app from Microsoft's Mixed Reality Design Labs. このプロジェクトでは、2つのききの追跡と Xbox コントローラー入力を使用して Hololens の基本ジェスチャを拡張する方法を学習できます。また、画面のマッピングとプレーンに反応するオブジェクトを作成し、単純なメニューシステムを検索して実装することができます。With this project, you can 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. プロジェクトのすべてのコンポーネントは、独自の mixed reality アプリエクスペリエンスで使用できます。All of the project's components are available for use in your own mixed reality app experiences.

Windows Mixed Reality の再考クラシックエクスペリエンスRethinking classic experiences for Windows Mixed Reality

この大気では、Apollo モジュールの小さな ship 似が、次のようにギザギザになっています。High up in the atmosphere, a small ship reminiscent of the Apollo module methodically surveys jagged terrain below. Fearless パイロットは、適切なランディングエリアを特色としています。Our fearless pilot spots a suitable landing area. 降下は困難なですが、これまでに何度も実行されています。The descent is arduous but thankfully, this journey has been made many times before...

Atari の1979太陰暦からの元のインターフェイスOriginal interface from Atari’s 1979 Lunar Lander
Atari の1979太陰暦からの元のインターフェイスOriginal interface from Atari’s 1979 Lunar Lander

太陰暦は、プレーヤーが月のゲームを太陰暦の平らな位置にパイロットしようとするアーケードクラシックです。Lunar Lander is an arcade classic where players attempt to pilot a moon lander onto a flat spot of lunar terrain. 1970年に誕生した人は、このベクトルに接着されているアーケードの中で、空になっていることが多いと思われることでしょう。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. プレーヤーが発送先を目的のランディング領域に移動するにつれて、地形が拡大縮小され、さらに詳細な情報が表示されます。As a player navigates their ship toward a desired landing area the terrain scales to reveal progressively more detail. 成功は、水平および垂直速度の安全なしきい値内での着陸を意味します。Success means landing within the safe threshold of horizontal and vertical speed. ランディングと残りの燃料に対してポイントが与えられ、ランディング領域のサイズに基づく乗数が使用されます。Points are awarded for time spent landing and remaining fuel, with a multiplier based on the size of the landing area.

ゲームのアーケード時代は、ゲームプレイとは別に、コントロールスキームの革新的なイノベーションをもたらしていました。Aside from the gameplay, the arcade era of games brought constant innovation of control schemes. 最も単純な4方向のジョイスティックとボタンの構成 (アイコンのPacで見られます) から、遅延90年代と 00s (ゴルフシミュレーターやレールの shooters など) に見られる、非常に特殊で複雑なスキームを選択します。From the simplest 4-way joystick and button configurations (seen in the iconic Pac-Man) to the highly specific and complicated schemes seen in the late 90s and 00s (like those in golf simulators and rail shooters). 太陰暦コンピューターで使用される入力方式は、おもしろいの魅力と immersion という2つの理由で特に重要です。The input scheme used in the Lunar Lander machine is particularly intriguing for two reasons: curb appeal and immersion.

Atari の旧暦コンソールAtari’s Lunar Lander’s arcade console
Atari の旧暦コンソールAtari's Lunar Lander arcade console

なぜ Atari と、他の多くのゲーム会社が入力の再考を決定するのでしょうか。Why did Atari and so many other game companies decide to rethink input?

アーケードの子供たちは、最新の flashiest マシンによって自然に intrigued されます。A kid walking through an arcade will naturally be intrigued by the newest, flashiest machine. しかし、太陰暦では、整備士のような斬新な入力ができます。But Lunar Lander features a novel input mechanic that stood out from the crowd.

太陰暦では、2つのボタンを使用して、出荷の左と右を回転し、推力レバーを使用して、出荷によって生成される推力の量を制御します。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. このレバーは、通常のジョイスティックが提供できない一定レベルの finesse をユーザーに提供します。This lever gives users a certain level of finesse a regular joystick can’t provide. また、最新の航空コックピットに共通するコンポーネントでもあります。It is also happens to be a component common to modern aviation cockpits. Atari は、ユーザーが旧暦モジュールを実際に操縦していると感じていることをユーザーにこちらさせる必要がありました。Atari wanted Lunar Lander to immerse the user in the feeling that they were in fact piloting a lunar module. この概念は、 tactile immersionと呼ばれています。This concept is known as tactile immersion.

Tactile immersion は、繰り返し実行するアクションの実行による sensory フィードバックのエクスペリエンスです。Tactile immersion is the experience of sensory feedback from performing repetitious actions. この場合、目に見えるスロットルレバーと回転を調整するための反復的なアクションによって、そのプレーヤーが、シュートザムーンの表面に着陸する行為につながります。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. この概念は、"flow" のテーマ概念に関連付けることができます。This concept can be tied to the psychological concept of "flow." チャレンジと報酬が適切に組み合わされたタスク内でユーザーが完全に吸収されている場合、またはより単純に "ゾーン内" にある場合は、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.”

ほとんどの場合、mixed reality の immersion の最も目立つ種類は空間 immersion です。Arguably, the most prominent type of immersion in mixed reality is spatial immersion. 現実には、このようなデジタルオブジェクトが現実の世界に存在することを信じています。The whole point of mixed reality is to fool ourselves into believing these digital objects exist in the real world. 私たちは、環境内のホログラムをからし、環境全体とエクスペリエンスを空間的に専念しています。We’re synthesizing holograms in our surroundings, spatially immersed in entire environments and experiences. これは、Atari が tactile immersion と同様に、このエクスペリエンスで他の種類の immersion を使用できないという意味ではありません。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.

Immersion を使用した設計Designing with immersion

更新された容量続編に tactile immersion を適用する方法はありますか。How might we apply tactile immersion to an updated, volumetric sequel to the Atari classic? 入力方式に取り組む前に、3次元空間のゲームコンストラクトに対処する必要があります。Before tackling the input scheme, the game construct for 3-dimensional space needs to be addressed.

HoloLens での surface マッピングの視覚化Visualizing surface mapping in HoloLens
HoloLens での空間マッピングの視覚化Visualizing spatial mapping in HoloLens

ユーザーの周囲を活用することによって、旧暦モジュールを着陸するための無限の地形オプションが効果的に得られます。By leveraging a user’s surroundings, we effectively have infinite terrain options for landing our lunar module. ゲームを元のタイトルに最もよく似たものにするために、ユーザーは環境内でさまざまな問題のあるランディングパッドを操作して配置する可能性があります。To make the game most like the original title, a user could potentially manipulate and place landing pads of varying difficulties in their environment.

旧暦モジュールを操縦するFlying the Lunar Module
旧暦モジュールを操縦するFlying the Lunar Module

ユーザーに入力スキームの学習、出荷の制御、および移動するための小さなターゲットを要求することは、よく聞かれます。Requiring the user to learn the input scheme, control the ship, and have a small target to land on is a lot to ask. ゲームエクスペリエンスが成功すると、チャレンジと報酬が適切に組み合わされます。A successful game experience features the right mix of challenge and reward. ユーザーは、ユーザーが HoloLens によってスキャンされたサーフェイス上のユーザー定義領域に正常に配置されるようにすることをお勧めします。The user should be able to 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. ユーザーがゲームのハングを取得すると、それに応じて難易度を上げることができます。Once a user gets the hang of the game, they can then crank up the difficulty as they see fit.

ハンドジェスチャの入力の追加Adding input for hand gestures

HoloLens の基本入力には、2つのジェスチャ (エアタップとブルーム) しかありません。HoloLens base input has only two gestures - Air Tap and Bloom. ユーザーは、コンテキストのニュアンスや特定のジェスチャの一覧を記憶する必要がありません。これにより、プラットフォームのインターフェイスが汎用性があり、学習が容易になります。Users don’t need to remember contextual nuances or a laundry list of specific gestures which makes the platform’s interface both versatile and easy to learn. システムではこれら2つのジェスチャしか公開されませんが、デバイスとしての HoloLens は、一度に2人を追跡することができます。While the system may only expose these two gestures, HoloLens as a device is capable of tracking two hands at once. ここでは、旧暦の言語はイマーシブアプリです。これは、ジェスチャの基本セットを拡張して2人の手を活用し、旧暦モジュールナビゲーション用に独自の適切な tactile 手段を追加できることを意味します。Our ode to Lunar Lander is an immersive app which means we have the ability to extend the base set of gestures to leverage two hands and add our own delightfully tactile means for lunar module navigation.

元の制御スキームに戻り、推力と回転を解決する必要があります。Looking back at the original control scheme, we needed to solve for thrust and rotation. 新しいコンテキストでの回転という注意は、追加の軸を追加します (技術的には2ですが、Y 軸は着陸にとって重要ではありません)。The caveat is rotation in the new context adds an additional axis (technically two, but the Y axis is less important for landing). 2つの異なる出荷の移動は、自然にそれぞれの手にマップされるようにします。The two distinct ship movements naturally lend themselves to be mapped to each hand:

すべての3つの軸で lander を回転させるジェスチャをタップしてドラッグしますTap and drag gesture to rotate lander on all three axes
すべての3つの軸で lander を回転させるジェスチャをタップしてドラッグしますTap and drag gesture to rotate lander on all three axes

逆噴射Thrust

元のアーケードコンピューターのレバーが値のスケールにマップされている場合、レバーが大きくなると、より多くの推力が出荷に適用されました。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. ここで指摘する重要な点は、ユーザーが制御を手にして目的の値を維持できることです。An important nuance to point out here is the user can take their hand off of the control and maintain a desired value. タップアンドドラッグ動作を効果的に使用して、同じ結果を得ることができます。We can effectively use tap-and-drag behavior to achieve the same result. 推力値は0から始まります。The thrust value starts at zero. ユーザーがタップしてドラッグすると、値が大きくなります。The user taps and drags to increase the value. その時点で、メンテナンスを行うことができます。At that point they could let go to maintain it. タップしてドラッグするジェスチャの値を変更すると、元の値からの差分が得られます。Any tap-and-drag gesture value change would be the delta from the original value.

回転Rotation

これはもう少し厄介です。This is a little more tricky. Holographic の [回転] ボタンをタップすると、非常に快適なエクスペリエンスを実現できます。Having holographic “rotate” buttons to tap makes for a terrible experience. 使用する物理的なコントロールがないため、この動作は、lander を表すオブジェクトを操作するか、または 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. タップアンドドラッグを使用したメソッドが登場しました。これにより、ユーザーは効果的に "プッシュアンドプル" できます。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. ユーザーがタップして保持するたびに、ジェスチャが開始された場所のポイントが回転の起点になります。Any time a user taps and holds, the point in space where the gesture was initiated becomes the origin for rotation. 原点からドラッグすると、ハンドの平行移動 (X、Y、Z) のデルタが変換され、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. または、左 < > 右にドラッグし、< > 下にドラッグして、< > をスペースで戻します。Or more simply, dragging left <-> right, up <-> down, forward <-> back in spaces rotates the ship accordingly.

HoloLens は2人を追跡できるため、回転を右側に割り当てることができ、推力は左から制御されます。Since the HoloLens can track two hands, rotation can be assigned to the right hand while thrust is controlled by the left. Finesse は、このゲームの成功の推進要因です。Finesse is the driving factor for success in this game. これらの相互作用の感覚は、絶対に最高の優先順位です。The feel of these interactions is the absolute highest priority. 特に、tactile immersion のコンテキストの場合。Especially in context of tactile immersion. 速度が非常に遅くなると、そのような処理は不必要に困難になります。一方、遅すぎると、awkwardly 長い時間、出荷時に "プッシュアンドプル" が必要になることがあります。A ship that reacts too quickly would be unnecessarily 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.

ゲームコントローラーの入力の追加Adding input for game controllers

HoloLens の手のジェスチャには、細かい設定が可能なコントロールの斬新な方法が用意されていますが、アナログコントロールから得られる "真の" tactile フィードバックはまだありません。While hand gestures on the HoloLens provide a novel method of fine-grain control, there is still a certain lack of 'true' tactile feedback that you get from analog controls. Xbox ゲームコントローラーに接続することで、コントロールを使用して細かい制御を維持しながら、physicality の意味を取り戻すことができます。Connecting an Xbox game controller allows to bring back this sense of physicality while leveraging the control sticks to retain fine-grain control.

比較的簡単な制御スキームを Xbox コントローラーに適用するには、複数の方法があります。There are multiple ways to apply the relatively straight-forward control scheme to the Xbox controller. 元のアーケードの設定にできるだけ近い状態を維持しようとしているため、スロットルは [トリガー] ボタンに最適です。Since we're trying to stay as close to the original arcade set up as possible, Thrust maps best to the trigger button. これらのボタンはアナログコントロールであり、単純なオンとオフの状態を持つことを意味し、実際にはそれらの圧力の程度に反応します。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. これにより、推力レバーと同様のコンストラクトが生成されます。This gives us a similar construct as the thrust lever. 元のゲームや手のジェスチャとは異なり、このコントロールは、ユーザーがトリガーに対するプレッシャーを止めた後に、船の推力を切ります。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. それでも、元のアーケードゲームと同じ程度の finesse がユーザーに与えられます。It still gives the user the same degree of finesse as the original arcade game did.

左サムスティックはヨーとロールにマップされ、右サムスティックはピッチとロールにマップされますLeft thumbstick is mapped to Yaw and Roll, Right thumbstick is mapped to Pitch and Roll
左サムスティックは、ヨーとロールにマップされます。右サムスティックは、ピッチとロールにマップされますLeft thumbstick is mapped to yaw and roll; right thumbstick is mapped to pitch and roll

デュアル thumbsticks は、出荷ローテーションの制御に自然に貸与されています。The dual thumbsticks naturally lend themselves to controlling ship rotation. 残念ながら、出荷の回転に使用できる軸は3つあり、どちらも2つの軸をサポートする2つの thumbsticks があります。Unfortunately, there are 3 axes on which the ship can rotate and two thumbsticks which both support two axes. この不一致は、1つのサムスティックが1つの軸をコントロールすることを意味します。または、thumbsticks の軸が重なり合っています。This mismatch means either one thumbstick controls one axis; or there is overlap of axes for the thumbsticks. 以前のソリューションでは、ローカルの X と Y の値が thumbsticks によって本質的にブレンドされているので、"破損しました" と感じています。The former solution ended up feeling "broken" since thumbsticks inherently blend their local X and Y values. 後者のソリューションでは、どの冗長軸が最も自然であるかを調べるためにテストが必要でした。The latter solution required some testing to find which redundant axes feel the most natural. 最後のサンプルでは、左側のサムスティックにヨーロール(Y 軸と x 軸)、および右サムスティックのピッチロール(Z 軸と x 軸) を使用します。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. これは、ロールが独立してヨーピッチとの組み合わせになっているように見えます。This felt the most natural as roll seems to independently pair well with yaw and pitch. 注として、両方の thumbsticks をrollに使用すると、回転値が2倍になります。これは、lander do をループさせるのにとても楽しい作業です。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.

このサンプルアプリでは、Windows Mixed Reality の拡張可能な入力感覚様相によって、空間認識と tactile immersion が大きなエクスペリエンスを大幅に変更する方法を示します。This sample app demonstrates how spatial recognition and tactile immersion can significantly change an experience thanks to Windows Mixed Reality's extensible input modalities. 太陰暦では、旧暦が40年に近づいているかもしれませんが、この小さな八角形を使用して公開される概念は、永久に存続します。While Lunar Lander may be nearing 40 years in age, the concepts exposed with that little octagon-with-legs will live on forever. 未来を練りときに、過去に見ていないのはなぜでしょうか。When imagining the future, why not look at the past?

技術的な詳細Technical details

旧暦 ( Mixed Reality Design Labs) GitHubでは、太陰暦モジュールサンプルアプリのスクリプトと prefabs を見つけることができます。You can find scripts and prefabs for the Lunar Module sample app on the Mixed Reality Design Labs GitHub.

作成者についてAbout the author

Picture of Addison Linville Addison LinvilleAddison Linville
UX デザイナー@MicrosoftUX Designer @Microsoft

関連項目See also