クリエイトウェーブ開発日記クリエイトウェーブ開発日記クリエイトウェーブのスタッフによる、開発日記です。-■プロフィールAuthor:クリエイトウェーブ開発における、諸々を書いていきたいなと思っています。TueFireBaseのUserIDじゃなく、UserTokenを使うで書きましたし、ちょっと検索すると同じ事かいてるのにひっかかると思いますが、FioreBaseの匿名認証はアプリをアンインストールして、インストールし直すと同じIDになってました。実験もしましたし、FireBaseIDでアプリ管理していたらガチャゲー作ってもリセマラ出来ないなとか言っていたのですが、仕様変わったのかな?firebase_unity_sdk_5.4.3から、SDKの内容が「dotnet3」フォルダと「dotnet4」フォルダに分かれたので「dotnet4」にしてみたんですがインストールするたびに、匿名IDが変化するようになってしまいました。アンインストールしてインストールしなおさないと変わらないので、別に問題ないのですが、仕様かわったのかな?とちょっと気になってます。Sat去年の4月から約9ヶ月FireBaseの研究&仕事をやってきました。自分は、SNSゲーム(いわゆるガチャゲー)を担当するときは、PHP(フレームワークはCodeIgniter)とMySQLで仕組みを作ってきました。あの作品はサーバープログラムはRubyらしいとか、あの有名な会社はパイソンでやってるとか聞きますが、ゲーム業界全体で考えれば、まだまだPHPとMySQLの組み合わせは多いと思われます。PHPにあたるサーバーサイドプログラムは、CloudFunction(言語はNodeJS)、MySQLにあたるDBはFireStore(RealTimeDB併用でもいいです)の組み合わせになるのですが、UnityでもWebアプリでも十分使いものになります。それぞれFireBaseで作るメリットとデメリット考えると●メリット・とにかく環境構築が非常に楽gmailアカウント一つで、環境が作れます。サーバープログラム書いてデプロイして実行するだけ。SSL代もかからない・テスト環境は、ほぼ費用がかからない(有料版に切り替えても、本サービス開始にならないとまず無料枠を超えることはない)・ログ書き出しの仕組みとかも便利(SNSゲームとかだと、ログ書き出しの仕組みはちゃんと考えないと、サーバーのHDパンクしてサーバー止まったりするのですが)そういうのも考えなくていい・総合的に運用費用が非常に安い。本運用でも通常のシステムより安いと思われる。(※海外で、すごい非効率な組み方してすごい費用になってしまったニュースもあったので、そこは気をつける点・・・)●デメリット・良くも悪くも独特PHPとMySQLで作っておけば、契約してたクラウド会社がサービスやめても、他のクラウドサービスに乗り換えるだけですがFireBaseはGoogleはサービス辞めるとやりようがないです。CloudFunctionやFireStoreは、FireBaseというよりGoogleCloudPlatformの仕組みで、サービスが終わるとかは、まずないと思われますが。NodeJSはFireBase以外でも使われてる訳で可能性もありますが、DBのほうはMySQL経験者と違ってFireStoreは、Google特有と思われます。・言語がNodeJS(JavaScript)である(これは、人によりけりで絶対ではありませんが)JavaScriptは、プロトタイプ言語といって他言語(だいたいの場合クラス言語)とちがって良くも悪くも癖がつよいです。プログラマーでも、JavaScripだけは苦手というプログラマーは意外に多いのです。私は、JavaScriptは得意ですが、好きか?と聞かれるとNoと言ってしまいますw・・・ちなみにjavascript苦手な人の為にTypeScript(コンパイル結果がjavaScriptになるクラス言語)環境も準備されてます。クラス言語しかやったことない人は、TypeScriptのほうがやりやすいでしょう。ベータですが、パイソンでも書けるようになったようです。FireStoreはまだベータ扱いになってる面はありますが、有料版サービスにも入ってますし、既に実用サービスでも使われてる会社様もあります。Cronスケジュールや、バックアップの仕組みなども整って先が楽しみなサービスです。一昨年後半にベータに入ってるので、そろそろベータが取れるのではないかと思っているのですが、やっぱりベータマーク取れたほうが気持ちはいいですよね。SNSゲームは、ある意味行き詰まってる面がありますが、こういった新しいシステムを導入して、かかる費用や運営効率など見直す時期に来てるのかもしれません。Toolset」C#でgotoAndPlayやStopも出来るしマスクも使える、期待通りの優れものAssetでしたので紹介したいと思います。これは使えそう!!ただ日本では情報が少ない(マニュアルの英語ページもわかりやすいのですけど、やっぱり敷居がありますよね・・)サンプルに使うAnimateファイル(FlashProファイル)は、ボーンを使ったFlashアニメボーン素材なのでパーツが分解されている。それをボーンを使ってタイムラインを起こしてあります。素材は、クリエータ「りんこ」さんにに作成して頂きました。Toolset」を使ってUnityに取り込んでみます。Toolset」をUnityにインポートする必要があります。自分は購入しましたが無料の試用版もあります。Flashファイルは、Assetフォルダ以下の適当なところに置きます。今回はAssets/Scenesに置きました。Unityで使うアニメは、ルートシーンのタイムラインではなく、ムービークリップ単位になってる必要があります。このムービークリップにリンケージをつけます。今回は「test_anime」とリンケージをつけました。後でラベル名で、gotoAndPlayやStopで制御したい場合は、ムービークリップのタイムラインにラベル名をつけておきましょう。次にAnimate上の「コマンド」メニューから「コマンドの実行」を行います。コマンドファイルを聞いてきますので、Unityにインポートされてるコマンドファイルを指定してあげましょう。コマンドファイルになります。コマンドの実行が終了するとFlaファイルの隣に「Flaファイル名_export」フォルダが出来上がり、中にUnity用のファイルが出来上がります。フォルダの中には、Unity用のムービークリップアニメファイルがあります。出来上がったファイルの中のPrefabファイル(青い立方体マーク)をHierarchyに投げ込みましょう。再生すると、ちゃんと動きます。ついでに、ちょっとC#で制御してみましょう。以下のような「SwfTest.cs」を作ります。MainカメラなりCreateEmptyなりを実行して作るかなりで、「SwfTest.cs」を適当なGameObjectにはりつけます。SwfClipController;は、Hierarchyから先程投げ込んだPrefabを登録します。実行すると、C#から制御できるのが確認できます。※追記2019年1月20日Unity2018.3で動かないという事なので調べてみました。調べてみると、Assets/FlashTools/Plugins\Editorフォルダの中のIonic.Zip.Unity.dllファイルからCompressionLevelプロパティの値をとりそこなってるように見える。Ionic.Zip.Unity.dllがうまく読み込めていないって事なんでしょうかZlibStreamメソッドの第3引数はなんだろうとしらべたら、ブーリアン値だったので、とりあえずtrue入れてみました。超優秀なAssetですし、そのうち修正されると思いますが、とりあえずこれで対処・・・・UniSwfとかは、無理やりFlashを使ってる感があったし、結局あまり使わなかったのですが、こちらは自然とUnityのプレファブとして使える感があって抵抗がない。Sunあけましておめでとうございます。今年も、UnityとFireBaseガンガンやっていきます。UnityとFioreBaseのCloudFunctionでやりとりするときに、FioreBaseのUserIDを使うのがシンプルですが、UserTokenを使う手もあります。トークンは、CloudFunction上でUserIDに変換され、トークンは一定時間で変化するのでセキュリティ的にもUserIDで直接やりとりするよりも強力です。task.Result;//ここでトークンを取得});-----------------------------------------------------------こんな感じです。{//エラー処理});-----------------------------------------------------------こんな感じです。Tueあるコレクションに、ドキュメンとが複数あってscoreってフィールドに得点が、userIDってフィールドにユーザーIDが並んでるとします。仮にスコア100点の人をクエリで抽出して、抽出した該当userID使って、他の基本情報が書き込んであるコレクションからuserIDを使って、複数人のデータを抽出したい場合どうするんだと、ここ数日悩んでおりました。いう場合の複数読み込みの命令はforeStoreに準備されてるようです。その命令とは、admin.fireStore.getAllまず、クエリで、スコア100点の該当者をってな感じで書いておいて次の処理。実行してるオブジェクトを参照させて次のメソッドを呼び出してます。変数は、DirectorのLingoで使ってた名残でなんとかく・・(懐かしい次の処理はという感じになります。マニュアルにも見当たらないし、英語音痴な私が海外のサイトとか見てようやくここまでたどり着きました・・・数日かかった。思ったらSpread構文というものらしい。