Hi, I'm @ikkou.
これはもう何番煎じかわからない「Maps SDK for Unity を試してみる」です。
Maps SDK for Unity とは
Maps SDK for Unity は Google マップの地形データを使った iOS/Android 向けのアプリケーションを開発できる Unity 向けの SDK です。
The Maps SDK for Unity is a set of development tools, services, and ready-made assets, that extend the Unity game development environment with features that allow you to create real-world mobile games—easily!
Reference: https://developers.google.com/maps/documentation/gaming/overview_musk
Google マップを使ったアプリケーションを開発する際にお世話になる Google Maps Platform の 1 カテゴリにあたります。
Reference: https://cloud.google.com/maps-platform/gaming
これまでは特定のゲーム開発企業向けにクローズドで展開されていましたが、2020/06/16 から一般公開されました。
簡単に言うと俺俺 Pokémon GO を作れるようになります。
後述しますが、小さな範囲でテストするだけなら無償、一定以上の DAU を集める場合は有償となります。
Maps SDK for Unity のはじめかた
わかりやすいチュートリアルが用意されているので、順を追って進めていきましょう。
下準備 GCP 編
Maps SDK for Unity を動かすには Semantic Tile API
と Playable Locations API
を有効化する必要があります。既に有効化済みの人は読み飛ばしてください。
To use Google Maps Platform gaming services, you must download the Maps SDK for Unity. The Semantic Tile API and the Playable Locations API will be enabled for you by default.
https://developers.google.com/maps/documentation/gaming/get_started_gaming
同 API が有効化されていない、あるいは GCP のアカウントを持っていない人は任意のプロジェクトを作成して有効化してください。無償枠の中で収めるつもりの人もクレジットカードの登録が必要です。大丈夫です。この時点では課金されません。
- 任意の Google アカウントでログインした状態で https://console.cloud.google.com/ にアクセスして有効化
- 任意のプロジェクトを作成
-
+ APIとサービスを有効化
をクリック - API を有効化する
-
Semantic Tile API
を検索して有効にする
をクリック -
Playable Locations API
を検索して有効にする
をクリック
-
- 認証情報を作成する
-
APIとサービス > 認証情報
で+ 認証情報を作成
をクリックしてAPIキー
を選択する - 作成された
自分のAPIキー
を控える
-
- そのまま
キーを制限
をクリックする -
API キーの制限と名前変更
で名前をわかりやすいものに変更する ( 任意 ) -
API の制限
でキーを制限
をクリックしてSemantic Tile API
とPlayable Locations API
を選択して保存する
GCP の下準備は以上です。
ちなみに API キーが漏れると、悪用されるなどして高額な請求が届くことがあります。間違ってもスクショを Tweet したり GitHub にそのままあげるなどという暴挙に出ないでください。
下準備 Unity 編
- Unity 2018.4 以降を用意する。
- 今回は
2019.2.21f1
で進めます。
- 今回は
- Unity 2018 系には ここから、Unity 2019 系には ここから それぞれ SDK をダウンロードして解凍する
- なぜか日本語のリファレンスページからこのリンクが記載されているページに着地できないので、英語が不慣れな人は英語ページを日本語翻訳した方が良い
- Assets → Import Package → Custom Package からダウンロードした
GoogleMaps.unitypackage
をインポートする
サンプルシーンを試してみる
下準備ができたら早速サンプルシーンを開いてください。
- Assets > GoogleMaps > Examples > 01_GettingStarted > HelloWorld を開く
- Basic Examples Script の Inspector にある
Maps Services (Script)
のApi Key
に GCP の API キーを入れる - 初期状態で Play をクリックすると「自由の女神像」が表示される
- WASD キーで前後左右に、Q キーで垂直下降、E キーで垂直上昇する
用意されているサンプルシーン
MapsSDK for Unity には以下のサンプルシーンが用意されています。
具体的にどんなことができるのか、イメージを膨らませやすいです。
- 01_GettingStarted > HelloWorld
- 02_Fundamentals > MapService101
- 03_MapsStyling > StylingMaps101
- 04_Advanced >
- EditTimePreview
- Fencing (好き)
- Miscellaneous >
- AddingComponent
- DayAndNight (好き)
- LocationFollower
- Minimap (好き)
- PrivateRoads
- MixedZoom
- MoreStyling >
- BuildingBorders
- BuildingSquashing (好き)
- NineSlicing
- Parapets
- PrefabReplacement
すべてのサンプルシーンが説明されているわけではありませんが、各シーンの概要は Maps SDK for Unity Example Scenes を参照してください。
試すときは Scene ごとに API キーを設定してください。
浅草に行ってみる
各シーンにアタッチされているコンポーネントの Lat lng
に任意の緯度と経度を指定して再生すれば、好きな場所を表示できます。
緯度と経度は、例えば Geocoding.jp で検索する方法や、Google マップで検索する方法があります。
緯度経度をコピペするにはGoogleMapで右クリック、「この場所について」
したに緯度経度出るけどコピペできない。クリック
左側に出るよ!
Reference: Google Maps SDK for Unity使ってみた! - トマシープが学ぶ - おまけ:緯度経度をコピペする
今回、n 番煎じということもあり、東京タワーあたりは普通すぎるので、例えば観光名所として有名な浅草の雷門を指定しました。Lat lng
は 35.711256, 139.796772
です。
実行すると、雷門、そして浅草寺に抜ける仲見世通りが再現されていることが分かります。
Android 実機で動かしてみる
Build Setting に Scene を追加するなど、Unity から Android 実機にデプロイするお作法に則って、Build And Run
することで、繋いだ Android 実機で該当シーンを動かせるようになります。
今回は Pixel 3a にデプロイしてみました。
スマートフォンには移動に使う WASD
キーと上昇下降に使う QE
キーがありませんが、WASD
キーの代わりに前後左右の動きと回転を担うコントローラーが、QE
キーの代わりに上昇下降を担うコントローラーが用意されています。
Examples として用意しているものは Lat lng
に緯度と経度を直接打ち込んでいるので、それこそ Pokémon GO のように「現在地」の地形データは表示できません。
お値段について
Maps SDK for Unity を使えば Google マップを使った位置情報連動型のアプリが作れることはわかりました。でもお高いんでしょ?
結論から言うと、始めるだけ「無償」です。個人用途/商用関係なく、一定以上の DAU を集めるなら「有償」です。
Reference: https://developers.google.com/maps/documentation/gaming/usage_billing
要点は以下の通りです。
- 従量課金制
- 毎月 $200 分のクレジットが付与されるので、その範囲に収まる限りは無償、超えた分が有償
- 無償クレジットは翌月以降に繰り越されない
- 課金形態はゲーム業界には馴染み深い DAU ( Daily Active User: 1ユーザーが1日に何回アクセスしてもDAU は 1 とカウントされる ) 基準
- ただし 1 ユーザーが異なる 2 デバイスからアクセスした場合の DAU は 2 とカウントされる
- ユーザー A がアプリのキャッシュを削除するとユーザー B として扱われ DAU は 2 とカウントされる
- つまりリセマラ分がカウントされる ( と認識しています )
- DAU は PST ( 太平洋時間 ) の 0 時が基準となる
- 上記の条件より一般的な DAU とは異なる数字になる可能性がある
- 請求額は月間 DAU で決まる
- ユーザー A が 1 ヶ月間 30 日毎日アクセスした場合の月間 DAU は 30
- 月間 1,500,000 DAU までは 1,000 DAU あたり $10
- 月間 1,500,000 ~ 7,500,000 DAU はボリュームディスカウントで 1,000 DAU あたり $8
- 月間 7,500,000 DAU 以降は要問い合わせ
具体的な例は前述のページの Usage and billing examples に記されています。
- 月間の平均 DAU が 500 以下の場合は無償枠に収まる
- 無償枠に収まる月間 DAU は 20,000
- 月間の平均 DAU が 640 以下 ( 640*31=19840 ) が無償枠に収まる閾値
- 今回のような「試してみた」程度や、小さなサービスであれば必要十分
- 何らかのきっかけでバズると超える可能性がある
- 計算式は DAU 500 * 30 日間 = 15,000 月間 DAU
- 無償枠に収まる月間 DAU は 20,000
- 月間の平均 DAU が 1,000 の場合は有償枠になる
- 計算式は DAU 1,000 * 30 日間 = 30,000 月間 DAU
- 1,000 DAU あたり $10 なので請求額は $300
- 毎月 $200 分の無償クレジットを超えた $100 が実際の請求額になる
- 月間の平均 DAU が 75,000 の場合はボリュームディスカウントが発生した有償枠になる
- 計算式は DAU 75,000 * 30 日間 = 2,250,000 月間 DAU
- 月間 1,500,000 DAU までが 1,000 DAU あたり $10 で $15,000
- 月間 1,500,000 DAU 以降は 1,000 DAU あたり $8 で $6,000
- 計算式は 2,250,000 - 1,500,000 = 750,000/1000 * $8
- 毎月 $200 分の無償クレジットを超えた $20,800 が実際の請求額になる
- 計算式は $15,000 + $6,000 - $200
使用量は GCP の管理画面から確認できます。
まとめ
Maps SDK for Unity の概要、使い方、料金体系を紹介しました。
「試してみる」まではこの記事で実現できますが、例えば「俺俺 Pokémon GO を作る」は実現できません。用意されている Examples とドキュメントを参考にして適宜調べてください。
おまけ
原理を考えれば当たり前っぽいけれど Maps SDK for Unity を Cluster Creator Kit でそのまま使うのは無理でした。
Maps SDK for Unity と Cluster Creator Kit を組み合わせて動かせた
そしてこのままワールドアップロードしても生成された世界は反映されませんでした
https://twitter.com/ikkou/status/1273589839779094528
現場からは以上です。
良き Maps SDK for Unity ライフを!
Top comments (0)