- 投稿日:2020-06-21T22:44:30+09:00
Google Map APIとUnityでの“リアルワールドゲーム”開発用ツールがついに公式リリース
1_Google Map API と Unityとの連携
米Googleは2018年3月14日(現地時間)、ゲーム開発者に向けた、「Google Maps API」での「Googleマップ」のリアルタイムデータの提供とUnityのゲームエンジンとの統合を発表しました。
このニュースを報道したした記事には以下のようなものがあります。
「Google Map APIとUnityで“リアルワールドゲーム”開発が容易に」
http://www.itmedia.co.jp/news/articles/1803/15/news061.htmlグーグルマップの地図データでゲーム開発 開発者が利用可能に
https://www.moguravr.com/google-map-apis/記事の中身を読んでいただけるとわかるように、Unity側でGoogle Map APIをどう紐付けるのかは具体的に書かれていない。今すぐにでも使ってみたいのですが...
調べてみたところ、Googleが公式に公開しているものは以下の3つの動画しかなかった。(2019年2月21日時点)
Unityとの連携に関するGoogleの公式動画
Google Maps APIs Gaming https://t.co/dF2jAtYDUu
— KG?WebXRに取り組む年にします。 (@Keijipoon) 2019年2月10日Build real-world games with Google Maps APIs https://t.co/WFMs48LaMx
— KG?WebXRに取り組む年にします。 (@Keijipoon) 2019年2月10日Build real world games with Google Maps (Google I/O '18) https://t.co/auvPDTtDCb
— KG?WebXRに取り組む年にします。 (@Keijipoon) 2019年2月10日2_Google Map のデータでゲーム開発をしたい場合は。。。
GoogleのSales部門に問い合わせをしないと使用できない。セールスチーム???
どんな会社でどんなプロジェクトで使用するのかを記入して申請する形になっています。
Googleにとってもメリットがあると考えられる大きなプロジェクトから、使用させてもらえそう.以前,私が登壇しGoogle Map APIについて話した際にはこのような声が寄せられました.
GoogleMapUnityApiはGoogleの人にアポとって「使わせてくれ!!」ってミーティングしにいったけど、予算と企画内容と開発規模をローンチ時期(要するに企画書)持ってきてと言われて断念しましたorz #roppongiunity
— 小林 拓 (@taptappun) February 21, 2019Google Map API のアレは少なくとも現時点ではガチofガチのところしか受け付けていないと聞いているので、個人~中小は無理筋で、大きい企業でもちょっと触ってみたいくらいだと厳しそうです #roppongiunity
— いっこう / ikkou (@ikkou) February 21, 2019ちょっと個人では無理そうですね。
というのが、2019/02/21(木)に書いた私の記事です。
そしてついに!この時が来ました。
3_Google Maps Platform gaming services ついに公式リリース、誰でも利用可能に!
Google Maps Platform gaming services is officially released and available to all game developers. https://t.co/iaeOgZk00I
— KG?DataとXR? (@Keijipoon) June 21, 2020動画の概要欄には、
Google Maps Platform gaming services is officially released and available to all game developers.
(Google Maps Platform gaming servicesが公式リリースされ、すべてのゲーム開発者が利用できます。)なんと!!!
この動画が公開されたのが、2020年6月17日ですのでGoogle Map SDK for Unityもおそらく同じ日に公開されたようです。
4_Google Maps Platform gaming services を利用したゲームのデモ動画
こんな感じで3Dマップを使ったゲームがつくれちゃいます。
A Gaming Demo with Google Maps Platform: Space Janitor https://t.co/KMKos781lu
— KG☁DataとXR☁ (@Keijipoon) June 23, 2020A Gaming Demo with Google Maps Platform: Ghouls Night Out https://t.co/gd2oMmeBWe
— KG☁DataとXR☁ (@Keijipoon) June 23, 20205_さっそくインストールしてみた
インストールの方法の動画もアップされていました。
Get started with gaming serviceshttps://t.co/8I6kGLSc9C
— KG?DataとXR? (@Keijipoon) June 21, 2020以下のインストールページの「You can find the Maps SDK for Unity 2019 here」の部分を
クリックすると、ZIPファイルをダウンロードできました。
(Unity 2018の場合は、隣の「here」からZIPファイルをダウンロードしてください。)SDKインストールサイト
https://developers.google.com/maps/documentation/gaming/install_sdk【注意】Google Map API をまだ登録していない場合には、クレジットカードなどの登録画面に遷移します。
https://goo.gle/3cTLpQh から事前に登録しておきましょう。
ZIPファイルをダウンロードできたとして、話を進めます。
ZIPファイルを展開しておきます。
次にUnityを立ち上げ、「GoogleMaps.unitypackage」を読み込みます。
今回は Unity(バージョン 2019.4.1f1)を使いました。[Asset] → [Import Package] → [Custom Package]
当該ファイル「GoogleMaps.unitypackage」を選択
LatLngに緯度,経度の順で表示したい地点の緯度経度を入力
API Key に 発行したGoogle Map API Keyを入力
6_Hello World のできた
二ューヨークの自由の女神
ここまで設定できたら、画面上部の再生ボタンを押しましょう。
デフォルトの緯度経度:40.6892199, -74.044601
渋谷駅
今度は緯度経度に渋谷駅の緯度経度を入力して再生してみます。
渋谷駅の緯度経度:35.6580339,139.7016358
7_まとめ
これでひとまず、使えるようになりました。
本番はこれからですね。
なにかおもしろいゲーム作りたい!!!備考:エラーの対処
実は最初に、Unityのバージョン 2019.1.0f2 と、2018.4.23f1 で SDKをインストールをしたところ、
以下のようなエラーが出ました。そこで
2019.4.1f1 をインストールしたところ、うまくいきました。
あとエラーに関わっていそうなAndroid Build Supportをインストールしなかったので、
もしかしたらそれがよかったのかもしれないのですが。もし同じようなエラーが出てみたら同様の手順でやってみてください。
- 投稿日:2020-06-21T22:41:15+09:00
【Unity】ZenjectSceneLoaderをAddressables.LoadSceneAsync()に対応させる【Extenject】
はじめに
最近やっとAddressable Asset System(Addressables?正式名称わからず)を使い始め、シーンのロードにも対応していることに驚きました。
UnityのAddressable Asset System、
— su10@ハイパーカジュアルゲーム開発 (@su10_dev) June 15, 2020
専用の参照を使ってアセットを非同期ロードできる
↓
シーンファイルにも対応(!)
├→AssetBundle化されるのでBuildSettingsに登録不要
↓
シーンの参照をインスペクタにD&Dで設定できる???
↓
読込にマジックストリング・シーン名定数が不要
神だわ?自分は Extenject 使いなので今後シーンのロードは Addressables +
ZenjectSceneLoader
でやろうと思ったのですが、ZenjectSceneLoader
はAssetReference
によるシーン読み込みに対応してなかったので、検証したり対応してみたりしました。Extenject with Addressablesの状況
Unity Addressable Assets #8(Extenjectリポジトリのissue)
In terms of addressable assets, I'm not really sure. I haven't played with it yet. But we could certainly add it as an alternative to prefabs when it's ready
Addressablesからのプレハブのバインドに関するissueはあるっぽいのですが、シーンのロードに関してはなさそうでした。
そもそも対応しないとどうなる?
API ProjectContext Bindings Parent Bindings Self Bindings Addressables.LoadSceneAsync(.. Single)
⭕ - ⭕ Addressables.LoadSceneAsync(.. Additive)
⭕ ❌ ⭕ Addressables.LoadSceneAsync(.. Additive)
+ Contract Names⭕ ⭕ ⭕ ZenjectSceneLoader#LoadSceneAsync(.. Single)
✅ - ✅ ZenjectSceneLoader#LoadSceneAsync(.. Additive, .. Child)
✅ ✅ ✅ ZenjectSceneLoader#LoadSceneAsync(.. Additive)
+ Contract Names✅ ✅ ✅
- ⭕,❌:そのままの状態のときの挙動
- ✅:APIを足したことにより実現した挙動
検証してみたら
Addressables.LoadSceneAsync(.. Additive)
+ Contract Names は普通に動いたので驚きましたが、ZenjectSceneLoader
を用いて動的にペアレンティングしたい場合は対応する必要がありそうでした。対応させてみる
環境
- macOS Catalina 10.15.5
- Unity 2018.4.21f1
- Extenject 8.0.1
- Addressables 1.10.0
- エディター上・スタンドアロンビルドで簡単な動作検証済み
動作検証用に簡単なプロジェクトを作ったので興味ある人はこちらのリポジトリをクローンして触ってみてください。
ExtenjectからAddressablesを参照できるようにする
それぞれAssembly DefinitionでDLLが区切られているので
zenject.asmdef
にAddressables関連のasmdef
への参照を追加します。AssetReferenceSceneAssetを実装する
AssetReference
をそのまま使ってもいいのですが、SceneAsset
以外の参照を渡したときにコンパイルエラーにしたいのでSceneAsset
専用の参照クラスを実装します。参考:something like AssetReferenceT(Unityフォーラム)
AssetReferenceSceneAsset.csusing System; using UnityEngine.AddressableAssets; [Serializable] public class AssetReferenceSceneAsset : AssetReferenceT< #if UNITY_EDITOR UnityEditor.SceneAsset #else UnityEngine.Object #endif > { public AssetReferenceSceneAsset(string guid) : base(guid) { } }このクラスをExtenjectから参照できるようにします。
Assets/Plugins/Zenject/Source
とかのzenject.asmdef
配下に置く- 自前の
asmdef
の配下に置いて先の手順のようにzenject.asmdef
に参照を足すなどプロジェクトに応じてよしなに設定します。
ZenjectSceneLoader
にメソッドを追加する以下を追加します。
ZenjectSceneLoader.csusing UnityEngine.AddressableAssets; using UnityEngine.ResourceManagement.AsyncOperations; using UnityEngine.ResourceManagement.ResourceProviders; ... public AsyncOperationHandle<SceneInstance> LoadSceneAsync(AssetReferenceSceneAsset sceneReference) { return LoadSceneAsync(sceneReference, LoadSceneMode.Single); } public AsyncOperationHandle<SceneInstance> LoadSceneAsync(AssetReferenceSceneAsset sceneReference, LoadSceneMode loadMode) { return LoadSceneAsync(sceneReference, loadMode, null); } public AsyncOperationHandle<SceneInstance> LoadSceneAsync( AssetReferenceSceneAsset sceneReference, LoadSceneMode loadMode, Action<DiContainer> extraBindings) { return LoadSceneAsync(sceneReference, loadMode, extraBindings, LoadSceneRelationship.None); } public AsyncOperationHandle<SceneInstance> LoadSceneAsync( AssetReferenceSceneAsset sceneReference, LoadSceneMode loadMode, Action<DiContainer> extraBindings, LoadSceneRelationship containerMode) { return LoadSceneAsync( sceneReference, loadMode, extraBindings, containerMode, null); } public AsyncOperationHandle<SceneInstance> LoadSceneAsync( AssetReferenceSceneAsset sceneReference, LoadSceneMode loadMode, Action<DiContainer> extraBindings, LoadSceneRelationship containerMode, Action<DiContainer> extraBindingsLate) { PrepareForLoadScene(loadMode, extraBindings, extraBindingsLate, containerMode); return Addressables.LoadSceneAsync(sceneReference, loadMode); }ちなみにこれらは
ZenjectSceneLoader
の既存のLoadSceneAsync()
をコピペして
- 返り値
- 引数
SceneManager
をAddressables対応仕様に書き換えただけのものです。
これで
ZenjectSceneLoader
にシーンの参照を渡してロードしつつ、シーン内の[Inject]
に適切にInjectされるようにできました。感想
Addressablesを使ったバインディングのベストプラクティスが知りたい。
- 投稿日:2020-06-21T22:03:36+09:00
YouTube APIでSuperChatを取得してUnity上でお札を降らせる
YouTubeのスーパーチャットに反応してUnity上でお札が降るようにしてみます。
1から書くわけではなく、出来合いのものを組み合わせて完成させます。※随分前に実装したので、記憶が曖昧です。間違ってたらすみません。
使用ツール
UnityでYoutube Liveのコメント・スパチャを取得できるツール
完成形
スパチャでお札舞うスクリプト、今日の配信で試しに動かしたら無事に動いた。アタッチしてるオブジェクト変えたから非表示しても大丈夫。
— 大福らな?4/24 21:00 エヴァ同時視聴 (@daifuk_lana) April 22, 2020
ちなみにQiita初見プレイ配信、記事最後までかけませんでした・・・・・・酔って喋って終わりました・・・・・・#バーチャルモーションキャプチャー #EVMC4U pic.twitter.com/zwRxHdb95L方法
今回使用するツールの使い方にも書いてありますが、YoutubeCommentのBeginGetComments()関数を呼ぶことでコメント取得を開始でき、OnCommentで新しいコメントがコールバックされ、OnSuperChatでスーパーチャット投稿時にコールバックが呼ばれます。その通りに実装しますが、今回はパーティクルを呼び出して紙幣を降らせることにします。
上記使用ツールをUnityにインポートしましたら、パーティクルを実装していきます。
私はこちらを参考にパーティクルを実装しました。実装後、使用ツールを説明に従って使用可能な状態にしておきます。
その後、スーパーチャットに反応してパーティクルを起動させるよう実装していくわけですが、インポートした使用ツールのExampleフォルダにcsファイルがありますので、こちらを改変していくのが簡単ですので、その前提で進めます。
まずクラスの開始時に「ParticleSystem particle;」などと宣言しておき、先程実装したパーティクルのGameObjectを代入しておきます。
particle = GameObject.Find("hogehoge").GetComponent();という感じでしょうか。updateの中ではFindしないみたいな話はここでは割愛します。その後、Start内でparticle.Stop();として予め対象のパーティクルを止めておきます。うまいこと設定で止められるならそれでも良いです。
そして、OnSuperChatメソッド内でparticle.Play();(particleの部分は宣言した変数名)と書けば、スーパーチャットが飛ぶたびにパーティクルが実行されます。
YouTubeのAPIはすぐ使い切ってしまうため、そのあたりは調べるなり計算するなりで、自分が最大限使う時間を考慮して取得間隔を設定してください。
上記ツールのYouTube CommentスクリプトのGet Comment Intervalで設定して下さい(秒)。
ちなみに、24時間連続稼働の想定だと60秒に一回の取得です。【参考】
YouTube Data APIの使用量上限についてよろしくおねがいします(酔っているのでこのへんで)
- 投稿日:2020-06-21T20:33:17+09:00
SSD換装でUnityの開発効率をアップする!
現在メインドライブが(128GB)という非常に少ない環境で開発していたのですが
容量不足でUnity開発でも不便が増えてきたため新しいものに交換することにしました。
今回は交換手順や開発環境にどのような変化を与えたのかなど、備忘録として残しておこうと思います。続きはこちらです。
https://tedenglish.site/increasedefficiency-with-newssd/
- 投稿日:2020-06-21T07:23:24+09:00
OculusGo 画面共有してみる
お疲れ様です。
日課が終わり、引き続きVR開発です。
https://note.com/nerd0geek1/n/n52f19c34245d
ここあたりをみて、
vysorをインストール
Android関連の開発でここあたりは既に確認済みでした。
結構簡単に画面共有できました。
これで何を見てるか共有できますね
はい、昨日につづき
Unityちゃんです。
- 投稿日:2020-06-21T07:21:55+09:00
Oculus Goでユニティちゃんライブステージを動かす【Unity】【VR】【Oculus Go】
お疲れ様です。
かねてより懸案だった、
OculusGoでユニティちゃんライブステージを動かす
試してみました。
https://kan-kikuchi.hatenablog.com/entry/Oculus_Go_UnityChan
https://airmore.com/jp/install-apk-files-on-android.html
このあたりをやってみて
うまくいきました
fjinsights:20180719004616j:plain一番上に、UnityちゃんCRSがインストールされています。
動画は見せられませんが、うまくいきました!
Androidもいけそう!
ただ、公式のUnityちゃんライブステージ
出てたんですがね・・・
カメラが固定されていて結構見やすいものでした。
また、DMM.VRも試してみました。
これすげーよ!
是非試してみてください!!
- 投稿日:2020-06-21T07:18:20+09:00
Unity × TensorFlow でDL
お疲れ様です。
色々試しています。
他人のブログ見ながら、
Unity × TensorFlow で深層学習。
これは、
12枚の板の上に、
黄色いボールが斜面に流れて落ちそうになり
始めは落ちたりもするんですが、
深層学習で、勉強していって、
落とさなくなる、
というのを試して見ました。
私のMacだとかなりつらい模様ですが、
GPUかなり乗せたPCなら、
スムーズにいけそうです。
色々試すと面白そうです。
2018.2.3追記
なんのことはありませんでした。
私が、見ていた映像は、
学習している動画でした。
正常に動作しました。
ちょっとUnityにも興味が出てきました。
- 投稿日:2020-06-21T07:16:44+09:00
【Unity2018】VuforiaでARを試す
- 投稿日:2020-06-21T07:12:04+09:00
Watson × Unity 初心者でもできる、VR 空間で Unity ちゃんとおしゃべりアプリ を試してみた
お疲れ様です。
かねてより懸案になっていた、
VRの開発やUnityの開発、諸々・・・
正直、ソリューションの設計関連やっていることもあって
勉強する時間がねー。
自宅に帰っても、家族のフォローが優先になってしまうので、
結構厳しい・・・・・
そこで、業務時間中の会議の合間にちょこちょこ開発研究することにしてみました。
https://www.ibm.com/developerworks/jp/cloud/library/unity/index.html
WatsonとUnityを一緒に学習できるということに・・・
あー、あと
これもやってみた・・
http://singularity-labo.com/feature/24
これもUnityちゃんなわけで・・・
こればっかやってると、
最近、〇〇さん変わってしまったね・・
って言われそうや…
最近抵抗がなくなってきたのは確かですが・・
まー面白そうな気もしますしね・・
んで、本題・・
Watsonは
3つのサービスを利用します。
Speechtotext
Texttospeech
coversation(現 Watoson Assistant )
これらを駆使して簡単にできました。
ちなみに、
coversation のところはひと手間かける必要あるので、
https://qiita.com/yamachan360/items/bcfa10b2d9bf62df8300
ここあたりが参考になります。
ということで、
VRアプリでも開発できて、
Watsonでも簡単にアプリ作成できました。