ARCore Cloud Anchorsを高レベルAPIに置き換えてみよっかな (1. 概要編)

今回はタイトルにもありますように, ARCoreのCloud AnchorsをUNETの高レベルAPIで実装してみようという企画です!

まあ, 「今回は」なんて言っていますが, ブログを書くのははじめてなんですよね (笑)
ちょっと話が長くなる癖があるので, 「とりあえず理解はいいからその環境を作らせてくれよ!」って人のための記事も書いておきます.

ちゃんと短くなるようには善処します (笑)

きっかけ

ARでゲームを作ってみようと思ったときに, ARCoreのCloud Anchorsの機能が必要だと思ったのですが . . .
「こ, これはUNETの低レベルAPIで実装されているじゃあないか!!」
ってな感じになったので.

前提知識

  • Unityでの開発知識
  • UNETの低レベルAPI(LLAPI)と高レベルAPI(HLAPI)

Unityでの開発知識については, この記事をみている時点でクリアできていると思うので, パスしますね.

つぎにUNETなのですが, これについてはここで一回触れておきましょう.
UNETとは, Unityにおいてネットワークゲームを作るための機能です.
UNETの機能を実装するためのAPIは, LLAPI, HLAPIに大きく分けることができます.
僕なりのイメージは,

  • LLAPI
    • 自由度が高い
    • 自分で作らなければいけない部分が大きい
      → 実装に知識と時間がかかる
  • HLAPI:
    • 自由度が低い
    • 自分で作る部分がかなり小さくなる
    • UNETに関する記事は, ほとんどHLAPIについて書かれている
      → 参考資料が豊富 ただ今回はUNETの記事ではないので, 説明はこれくらいにしておきましょう. UNETの具体的な内容に関しては, Cloud Anchorsに触れる際に, 必要があればその都度記載していこうと思います.

概要

まえおきが随分と長くなってしまいましたが, これからが本題です.
Cloud Anchorsの機能の概要を説明しましょう.

Cloud Anchorsのサンプルシーンで提供されているUXは, 1人が実世界上に置いたプレハブを全員で共有することができるというものです.

ざっくりと分けて次のような処理によって構成されています.

Hosting側

  1. プレハブを置きたい側(Hostingデバイス)は, Hostingボタンを押す
  2. 他のデバイスと通信接続するためのルームを作成する.
  3. 実世界のデータとともにAndyプレハブをCloudに保存する

Resolving側

  1. プレハブを取得したい側(Resolvingデバイス)は, Resolvingボタンを押す
  2. Roomの番号とHostingデバイスIPアドレスを打ち込むことで, Hostingデバイスと接続する
  3. Cloudからデータを取得するためのIDなどをHostingデバイスに要求する
  4. 返答された情報によりCloudからプレハブの情報を取得する
  5. シーンを再現する

複雑そうに見えますが, 意外とシンプルですね.

それでは裏側の処理をみていきましょう! と言いたいところですが, 長くなりそうなので, ここで今回は終了します (笑)