月着陸船

月のモジュール

Note

この記事では、Mixed Reality アプリの開発に関する学びや提案を共有する場所である Mixed Reality Design Labs で作成した実験的なサンプルについて説明します。 設計関連の記事やコードは、新しい発見があるたびに進化していきます。

Note

このサンプル アプリは HoloLens 第 1 世代向けに設計されています。

月着陸船は、Microsoft の Mixed Reality Design Labs が提供するオープン ソースのサンプル アプリです。 HoloLens の基本的なジェスチャを、両手でのハンド トラッキングや Xbox コントローラーの入力で拡張する方法、サーフェス マッピングや平面検出に対応したオブジェクトを作成する方法、およびシンプルなメニュー システムを実装する方法などについて説明します。 このプロジェクトのすべてのコンポーネントは、ご自身の Mixed Reality アプリのエクスペリエンスで使用することができます。

デモ ビデオ

Mixed Reality キャプチャを使用して HoloLens 2 で撮影

Windows Mixed Reality の従来のエクスペリエンスを再考する

大気圏上空では、アポロ司令船を彷彿とさせる小型船が、その下の凹凸のある地形を丹念に調査している。 恐れを知らないパイロットは、着陸に適切な地点を見つけたようだ。 下降は困難を極めるが、幸いなことに、この旅は過去に何度も行われてきたものである......。

1979 年に発売された Atari の Lunar Lander のオリジナル インターフェイス
1979 年に発売された Atari の Lunar Lander のオリジナル インターフェイス

Lunar Lander は、プレイヤーが月面着陸船を操縦して月面の平らな場所に着陸させるクラシックなアーケード ゲームです。 1970 年代に生まれた誰もが、ゲーム センターでこの空から降ってくる 2 次元の船に何時間もの時間を費やしたことでしょう。 プレイヤーが着陸地点に向けて船を移動させると、地形が拡大され、細部が表示されます。 着陸は、水平方向と垂直方向の速度が安全なしきい値以内であれば成功になります。 着陸にかかった時間と燃料の残量に応じてポイントが加算され、着陸地点の広さに応じて倍率がかかります。

このようなゲーム性だけでなく、アーケード ゲームの時代には、操作方法の革新も絶え間なく行われていました。 これには、4 方向のジョイスティックとボタンを使ったシンプルなもの (パックマンに代表される) から、90 年代後半から 00 年代にかけて見られた非常に特殊で複雑なもの (ゴルフ シミュレーターやレール式シューティングなど) まであります。 Lunar Lander の筐体に採用されている入力方式には、外観と没入感という 2 つの理由で興味を引くものになっています。

アタリの月着陸船のアーケードコンソール
Atari の Lunar Lander のアーケード筐体

Atari をはじめとする多くのゲーム会社は、なぜ入力を見直そうと思ったのでしょうか。

ゲーム センターに足を踏み入れた子供は、自然と最新で派手な筐体に興味を惹かれます。 しかし、Lunar Lander には斬新な入力方式が採用されており、それが目立つ要因になっていました。

Lunar Lander には、船体を左右に回転させるための 2 つのボタンと、船体の推力を調整するための推力レバーが採用されています。 このレバーは、通常のジョイスティックでは得られない操作性を実現しています。 また、このレバーは現代の航空機のコックピットにも採用されている要素です。 Atari は、Lunar Lander をプレイしているユーザーに、実際に月着陸船を操縦しているかのような没入感を与えたいと考えました。 この概念は、触覚的没入感と呼ばれています。

触覚的没入感とは、反復的な動作を行うことで感覚的なフィードバックを得るエクスペリエンスを指します。 この場合、目で見て、耳で聞きながら、調整レバーを調整して回転させることを繰り返すという動作は、プレイヤーを、月面に船を着陸させる行為に結びつけることに一役買っています。 この概念は、心理学的には "フロー" という概念と結びつきます。つまり、ユーザーが課題と報酬のバランスが絶妙なタスクに夢中になっている状態、もっと簡単に言えば "のめり込んでいる" 状態です。

Mixed Reality における最も顕著なタイプの没入感は、おそらく空間的没入です。 Mixed Reality において肝心なのは、このようなデジタルの物体が現実世界に存在していると錯覚させることにあります。 周囲の環境にホログラムを合成することで、環境や体験全体に空間的に没入しているのです。 しかし、Atari が Lunar Lander で触覚的没入感を実現したように、他の種類の没入感を体験に取り入れることができないわけではありません。

没入感を使用した設計

では、Atari のクラシック ゲームの続編を 3 次元で作成するには、どのようにして触覚的没入感を実現すればよいのでしょうか。 そのためには、入力方法について考える前に、ゲームをどのように 3 次元空間で構成するかについて考える必要があります。

HoloLens でのサーフェス マッピングの視覚化
HoloLens の空間マッピングの可視化

ユーザーの周囲の環境を利用することで、月着陸船を着地させる地形の候補は無限になります。 原作に近いゲームにするためには、ユーザーが様々な難易度の着陸パッドを操作して、周囲の環境に配置できるようにする必要があります。

しかし、ユーザーに入力方法を覚えさせ、船体を操作させ、小さな目標物に着陸させることを要求すると、課題が多すぎることになります。 成功するゲーム体験は、課題と報酬のバランスが絶妙です。 ユーザーは難易度を選択することができ、最も簡単なモードでは、HoloLens でスキャンされた表面上にある、ユーザーが定義したエリアに着陸を成功させるだけです。 ゲームのコツを掴んだ後は、ユーザーが自分の好みに合わせて難易度を上げていくことができます。

手のジェスチャ用の入力を追加する

HoloLens の基本的な入力には、エアタップとブルームの 2 つのジェスチャしかありません。 ユーザーは、文脈上のニュアンスや膨大な数の細かいジェスチャを覚える必要がないため、このプラットフォームのインターフェイスの汎用性は高く、習得も容易です。 システム上はこれら 2 つのジェスチャしか表示されませんが、HoloLens はデバイスとして同時に両手を追跡することができます。 Lunar Lander を参考にしたこのアプリはイマーシブ アプリです。つまり、基本的なジェスチャ セットを拡張して両手を活用し、月着陸船の操作に独自の楽しい触覚的な手段を加えることができます。

当初のコントロール方式を考慮すると、推力と回転を解決する必要があります。 注意点は、新しい文脈での回転には、軸が 1 つ追加されるということです (厳密には 2 つですが、Y 軸は着陸にはあまり重要ではありません)。 船にはこの 2 つの異なる動きがあるため、それぞれの手にマッピングするのが自然でしょう。

着陸船を 3 軸すべてで回転させるタップ アンド ドラッグのジェスチャ
着陸船を 3 軸すべてで回転させるタップ アンド ドラッグのジェスチャ

推力

原作のアーケード ゲーム筐体のレバーは数値のスケールに対応しており、レバーを上に動かすほど、船体により多くの推力がかかるようになっています。 ここで重要なニュアンスが、ユーザーが制御操作をやめても、目的の値を維持できるという点です。 ここでは、タップ アンド ドラッグの動作を効果的に使うことで、同じ結果を得ることができます。 推力の値は 0 から始まります。 ユーザーがタップ アンド ドラッグを行うと、値が上昇します。 その時点で手を離しても、値は維持されます。 その後行われるタップ アンド ドラッグのジェスチャによる値の変化は、元の値からの差分になります。

回転

これはもう少し複雑です。 ホログラムで "回転ボタン" を表示し、タップさせる体験は、あまり良いとはいえません。 利用できる物理的なコントロールはないため、着陸船を表すオブジェクトを操作するか、着陸船自体を操作して動作させる必要があります。 そこで考えたのが、ユーザーが向きを変えたい方向に効果的に "押したり引いたり" することができる、タップ アンド ドラッグを使った方法です。 ユーザーが長押しすると、ジェスチャを開始した空間上の点が回転の原点になります。 原点からドラッグすると、手の移動 (X、Y、Z) の差分値が、着陸機の回転値の差分値に変換されます。 より簡単に言えば、 左 <-> 右、上 <-> 下、前方 <-> スペースに戻ってドラッグすると、それに応じて船が回転します

HoloLens は両手をトラッキングできるので、回転は右手に、推力は左手に割り当てることができます。 このゲームでは、操作性が成功の鍵となります。 これらの対話式操作の "感触" は、絶対的な最優先事項です。 これは、触覚的没入感においては特に該当します。 船の反応速度が早すぎると操縦が難しく、逆に遅すぎるとユーザーが船を「押したり引いたり」しなければならない時間が不必要に長くなってしまいます。

ゲーム コントローラーによる入力の追加

HoloLens の手のジェスチャは、きめ細かな操作を可能にする斬新な方法ですが、アナログ操作で可能な "本当の" 触覚的なフィードバックにはまだ欠けています。 Xbox のゲーム コントローラーを接続することで、スティックを活用してきめ細かな操作を行いながら、物理的な感覚を取り戻すことができます。

比較的シンプルな操作方法を、Xbox コントローラーに応用する方法は複数あります。 原作のアーケード ゲームの作りにできるだけ近づけることを目標としているため、推力はトリガー ボタンにマッピングするのが最適でしょう。 これらのボタンはアナログ コントロールです。つまり、単純な "オンとオフ" だけでなく、押す強さに応じて反応します。 これにより、推力レバーと同じような構造を作りあげることができます。 原作のゲームや手のジェスチャとは異なり、ユーザーがトリガーを押すのを止めると船の推進力は止まります。 ですが、ユーザーは原作のアーケード ゲームと同程度の、細かい微調整を行うことができます。

左サムスティックはヨーとロールにマップされ、右サムスティックはピッチとロールにマップされます
左スティックはヨーとロールに、右スティックはピッチとロールに割り当てられている

両方のスティックは、船の回転の制御に使用するのが自然です。 残念なことに、船の回転軸は 3 つあり、2 本のスティックはどちらも 2 軸に対応しています。 この不一致は、つまり、1 本のスティックで 1 つの軸を操作するか、スティックの軸を重複させるかのいずれかになるということです。 前者の解決策の場合、スティックのローカルの入力値ではそもそも X と Y の値が混ざるため、結果的には "壊れて" しまったように感じてしまいました。 後者の解決策の場合、どの軸を重複させるのが最も自然に感じられるかをテストする必要がありました。 最終サンプルでは、左スティックで "ヨー" と "ロール" (Y 軸と X 軸) を、右スティックで "ピッチ" と "ロール" (Z 軸と X 軸) を操作するようにしています。 "ロール" は、独立して "ヨー" や "ピッチ" それぞれとの相性が良く、これが一番自然に感じられたためです。 余談ですが、両手のスティックで "ロール" を行うと回転数が 2 倍になります。着陸船を回転させるのも、楽しいですね。

このサンプル アプリでは、Windows Mixed Reality の拡張可能な入力モダリティにより、空間認識と触覚的没入感がいかにエクスペリエンスを大きく変えるかを示しています。 Luna Lander は 40 年近く前の作品ですが、この足付きの小さな八角形で表現された概念は永遠に残ります。 未来を想像するときは、過去を見てみることをお勧めします。

技術的な詳細

月着陸船のサンプル アプリのスクリプトとプレハブは、Mixed Reality Design Labs の GitHub に掲載されています。

筆者について

アディソン・リンビルの写真 Addison Linville
UX デザイナー @Microsoft

関連項目