見出し画像

【技術解説】ARゲーム「キャッチ・ザ・ボール」プロトタイプ開発

R&D(研究開発)で生まれたARゲーム「キャッチ・ザ・ボール」で使用した技術について、担当エンジニアのAlexsonから話を聞きました。まずはさっそく、デモ動画です。

ーーこれは、どのような技術の研究開発のために生まれたゲームですか?
3つの技術に焦点を当てました。環境認識、ARメッシュでのキャラクターコントロール、環境のアレンジです。それ以外は基本的な機能を使用して実装しています。

この中で、最も重視したのはARメッシュで周辺の環境を正確に認識させることです。それが上手くできれば、現実と仮想の世界をシームレスに繋げて、ARの世界を現実の環境にうまく溶け込ませることができます。

ゲームのルール自体は、子どものボール遊びをイメージしたシンプルなものです。複数人でボールを投げ合って、”猿”になったプレイヤーが他の人からボールを奪うという遊びから着想を得て、ボールを奪い合うゲームを作りました。

全員でボールを投げ合うのは難易度が高いので、全員で一つのボールを奪い合って、1分のカウントダウンが終わった時にボールを持っている人を勝者とするなどを想定していますが、詳しいルールはまだ決めていません。

以前のARメッシュの研究ではバナナのキャラクターを使いましたが、今回は”Kobitto”というキャラクターを使っています。

ーー現実世界とARを自然に溶け込ませるには、環境を正確に認識させる必要があるのですね。
その通りです、なので高い精度で判別できるようにしています。例えば、テーブルや棚の先端や角を見つけるためのアルゴリズムを用いています。

これにはウェイキャスティングという手法が役立ちました。ウェイキャスティングでは、ある特定のポイントから光線(ウェイ)を前方や下方に投射することができます。キャラクターはウェイの情報を活用して環境認識をしていて、例えばウェイが大きく下方に向かっている場合はARメッシュが存在しない=歩けない場所と認識します。

また、リアルタイムで生成されるARメッシュ上でキャラクターのコントロールが行われます。キャラクターはメッシュ上を移動できますが、メッシュがない部分では無限に下に落ち続けてしまいます。

ウェイキャスティングは壁の場所を特定するのにも活用されます。キャラクターが前方に複数のウェイを投射して、同じ方向を指すウェイが複数ある場合は壁があると判定します。ウェイキャスティングはメッシュの欠損部分を見つけたり、周辺環境を判別するときに役に立つ方法です。

それに加えて、このデモはARメッシュにも焦点を当てています。壁、地面(平面)、斜面、低い台、高い台、低い踏み台、高い踏み台など、予め種別を定義して、どの種別のものが前方にあるかを、キャラクターがウェイで捉えます。

ーーARメッシュについてもう少し詳しく教えてください。苦労した点はありますか?
最も難しかったのは、ARメッシュで周辺を正確にスキャンすることです。完璧にスキャンされていない場合、壁の特定などが困難になります。

それから、ARメッシュの欠損部分にどのように対応するか考える必要がありました。ARメッシュが欠損している場所にキャラクターが移動した場合、AIで生成したキャラクターはそのまま遥か遠くまで行ってしまいます。

ーー環境のアレンジもできるんですよね。
このデモでは、踏み台を作ったり、他のプレイヤーが通れないような壁を作るなど、現実世界の環境をアレンジして、自分のいる場所をオリジナルのゲームステージに変えることができます。その中の一つのテレポートはポータルARのアイディアから着想を得たアイテムです。瞬時に別の場所に移動できるテレポートポータルというアイディアを思いついて、アイテムを発明しました。マルチプレイでは、最もクリエイティブな戦略でステージを設計して、その空間を活用するプレイヤーが勝利するでしょう。

新たに設置できるオブジェクト
ジャンプできる踏み台:他のプレイヤーから逃げるために、高い場所にジャンプするための段差を追加できます。
壁:他のプレイヤーの通行を阻止するための壁を建設できます。
テレポートポータル:ポイントAからポイントBへ瞬時に移動するためのテレポートポータルを作成できます。

ーーキャラクターの動きに関しては何か工夫をしましたか?
キャラクターがジャンプしたり走り回ったりして移動できるように、滑らかで素早い動きを実現できるように工夫しました。ゲームでは小さな箱をジャンプで乗り越えたり、椅子や踏み台に飛び乗ったりもできます。こういった素早い動きを実装したARゲームはまだ多くはありませんが、一般的なゲームではよく見られますよね。ゲームの魅力を大きく左右するキャラクターの動きがスムーズになるよう、試行錯誤をして解決していきました。

ーー具体的にはどんな種類の動きがあるのでしょうか?
大きく3つあります。

1つ目は障害物を飛び越えたり登ったりする際の動きです。実際の障害物の高さや形状に合わせて、その都度アニメーションを作成する必要があります。これにはベジェ曲線(2つの点を結ぶ滑らかな曲線を表現できる関数)を活用しています。

ジャンプ時は、キャラクターのジャンプ開始位置から着地点まで、滑らかな曲線の軌道を描いて自然な場所に着地させています。

キャラクターがのぼる動作では、まずキャラクターを障害物の高さまで直線的に持ち上げます。そのあと、最終的に着地する地面へは滑らかな曲線で移動します。これによって、キャラクターが障害物を登る際のリアルな動きを表現しています。

2つ目はボールを投げたりパスしたりする動きです。キャラクターはボールを投げたり他のプレイヤーにパスしたりすることができます。ボールの軌跡のプレビュー、着地点の軌跡もベジェ曲線を計算して作成されます。

3つ目はボールのキャッチです。他のプレイヤーがボールを持っている場合、プレイヤーにぶつかってボールを奪い返すことができます。

ーーマルチプレイの使い勝手はどうですか?
まだテスト段階なので、マルチプレイはできません。代わりに、まだあまり強くはありませんが、テスト用にAIプレイヤーを作成しました。AIはボールを追いかけて歩き、ボールを奪おうとします。iPhoneさえあれば、人間とAIが一緒に遊ベる未来が来ると予想しています。

ーーAIはどんな動きをしますか?
プレイヤーが操作するキャラクターと同じような動きを自動で行います。内部的には目標地点を設定し、そこに到達するための動作を自動計算しています。キャラクターの動きや挙動を制御するスクリプトが十分に作り込まれていれば、AIプレイヤーを作成するのは容易です。

具体的にはたとえば、キャラクターがARメッシュ上を自由に歩く際の経路探索アルゴリズムの活用です。障害物や地形を考慮して効率的に移動するための最適な経路を計算する経路探索アルゴリズムは、AIの開発にも役立ちました。

編集後記

広報のmacaoです。
現実の環境に、ARのアイテムを自由に配置してキャラクターを動かす。
子ども時代にテレビゲームで、あれこれ戦略を練って遊んだ
対戦ゲームをリアルフィールドで実現できるのはワクワクします。

ARと現実を組み合わせて、ゲームステージを作る。
ひとことで言い表すとシンプルですが、環境を正しく判別させたり、自然なキャラクターの動きを表現するための工夫がなされていることを知り、勉強になりました。このプロトタイプで得た知見がどう応用されて、発展していくのか、楽しみです。

余談ですが経路探索のプロトタイプはブタの他にゴキブリバージョンがあり
虫が苦手な私は、ひええと鳥肌が立ってしまうようなリアルさです。自己責任で閲覧してみたい方はこちらのリンクからどうぞ!→リンク

🏠 デザイニウム公式サイト

💡フォローよろしくお願いします!
デザイニウム公式Youtube
デザイニウム公式Twitter


いいなと思ったら応援しよう!