やりたいこと

 退廃都市を舞台にしたゲームをつくりたいタイプのにんげんです。実在性がある感じが好きなので、東京都の地図・地形をベースとして何かできたら面白そうだね、と思い立ちました。なんか使えるライブラリあるでしょ。

使えるライブラリを探した

 普段のゲームづくりにはUnity(2D)を使っており、「インストールするのめんどいよね」という理由でビルド先のプラットフォームはWebGLにしています。このため、「Unity(2D)上で」「WebGL出力できて」「(ひとまず)無料で利用できる」ライブラリを探してみました。
 ひとまず適当に「Unity 地図 [検索]」。すると、以下のような選択肢がありそうでした。

  • Maps SDK for Unity
  • Mapbox
  • ほかにもいろんなアセット等

 具体的には調べてみてね。

Maps SDK for Unity

 『Google Map Platformゲームサービス』の一員で、かのGoogle Mapのコンテンツを利用できるSDK。すごそう。
 どうやら2019年に一般公開されたばかりのようですが、企業利用されている間は絶賛大好調なARゲーム『ドラクエウォーク』もこのSDKを用いて開発されているとのことで、折り紙付きな感じある。すごいね。Google Mapベースってことは多分建物とかショップとかの情報が詳細・最新だったり、3Dモデルテクスチャ情報もある程度設定されてたりしそうですね。信頼できそう。
 やべ、これでいいじゃん、って思ってたら公式に気になる記述が。

注: Maps SDK for Unity は、WebGL へのデプロイに正式には対応していませんが、デモなどを実行する際にはキャッシュ ファイルの最大サイズを 0(MaxDiskBytes = 0)に設定すると使用できる場合があります。

Maps SDK for Unity の概要

 つまりできるの???できないの???
 先人の知恵を借りるべく、Googleさんに聞いてみました。以下の記事がとても参考に。

 参考:Google Maps SDKをWebGLで動かす

 実際にSDKを利用してWebGLデプロイを試してらっしゃいました。が、どうやらCORS問題があるようです。いや、CORSさんをよく存じ上げないのですが、どうやら超ざっくり、あるドメインから別のドメインを参照してコンテンツを取得しようとするのがブラウザ上よろしくない様子。解決のためには、動作ブラウザにおける設定が必要な様子。(違うかも。)
 プレイヤーのブラウザ設定をどうこうするわけにはいかないので、ちょっとハードル高いですね。。残念。。。次に行きます。

Mapbox

 『Mapbox』さんはゲーム以外にもいろんな用途向けに提供している地図ソリューションプラットフォームのようです。導入事例を拝見してもいろんな企業さんやサービスに利用されている様子。
 ベースはオープンソースの地図プラットフォームであるOpen Street Mapです。ゼンリンの情報がインポートされていたり、Y!地図さんの情報も連携されているみたいです。もしかしたらGoogle Mapより細かい地形・道路情報が得られるんでしょうか。
 その中でも、Unity向けにSDKをUnityProjectとして提供しているので、とても嬉しい。
 Maps SDK for Unityで課題となったWebGLへのデプロイ問題ですが、GitHubコミュニティに以下の記載が。

you can use a Unity WebGL build. EDIT: Here’s a hint from our Unity team: “If they are going to test it out, have them either remove (or not import) the AR folders and files. It might cause problems when building to webGL.”

Mapbox Unity SDK support for webGL platform

 まじ???

Mapboxさん使ってみた

 上記の通り、MapboxさんならWebGLデプロイできるとのことで、実際にSDKをインポートしてみました。手順は先人の以下の記事を参照。

 参考:mapboxで地図情報から街を作る|Qiita

 この手順を元に無事にMapboxを使った地図が使えるようになりました。感謝。

これは地図上に道路情報のモデルを表示した画

 問題はここから、WebGLデプロイです。まずは何も考えずPlatformをWebGLとしてビルドしてみます。

怒られた

 エラーメッセージおよび上でもリンクしたGitHubコミュニティの情報からするに、「ARに関する」ファイル群が邪魔しているとのこと。SDKに含まれていた「AR」と名のつくフォルダは以下。

  • MapBoxAR
  • GoogleARCore
  • UnityARInterface
  • UnityARKitPlugin 

 とりあえず一つだけ削除してビルドしようとしたところ、上記と類似のエラーを吐いたため、もう全部消しちゃえ、との判断を実施。すると

ビルド後の実行結果

 無事にビルド&実行できました!!!実際にうごかしてみましたが、特に問題ない様子。やったね。

Mapboxなら問題なさそう

 上記の通り、問題なくWebGLデプロイできました。SDK自体もいろんなことができそうです。ちょっと色々試してみようと思う。