投稿日:2019-07-28 Sun
タイトル名は諸事情で言えませんが、サーバー側をPHPとMySQLやめて、思い切ってFireBaseのCloudFunctionsとFireStoreで開発したゲーム遂にリリースしました。 ちなみにクライアント側はUnityです。開発1年ちかくかかりましたが、CloudFunction(Node.js)とFireStoreも手探りで始めたので感慨深いものがあります。
実際料金とかどれくらいかかるのだろうとか、重くなったりしないのかとか、すごい心配していたのですが、蓋をあけてみると
DAU1万5千人くらいですが、恐ろしいほど快適・・・・ 重くなる兆候さえない。 DAU1万5千人規模の場合、だいたい1日千円弱くらいFireBase代が発生しるので月3万とかかな。
もちろん料金抑える為に、色々工夫してます(結果的には、これがサーバーのパワーを引き出す事にもつながります)
今までの普通のクラウドで構築すると、月20万~50万くらいのシステムでスタートしてると思うので、コスパはやはり凄い。さすがGoogleのシステムです。
おまけに開発時はテストサーバー代無料だし、SSL代とかもないし・・・
びっくりしたのは開発時よりサーバー反応が異様にいいこと。 こんなに早かったのか・・というぐらい開発時とちがます。
アクセス数が増えてサーバーのCPUとかネットワークのパワーの割当が増えてるんでしょうね。
投稿日:2019-01-27 Sun
昨日、Unity上でCloud Storageからファイルをダウンロードするのを書いたばかりですが、iosの実機に書き出してみたところうまくいかない事がわかりました。アンドロイド実機問題なし、UnityEditor上でもプラットフォームをios設定にしていても問題ありません。
ダウンロード先は、Application.temporaryCachePathにしています。
パーミッションみたいな設定があるのか、そもそもiosではダウンロードできないのか・・・よくわかりません。
方法あるのかわかりませんが、一度Cloud Storage上のデータをUnity上でメモリ上にバイナリ形式で読み込んでおいて、Application.temporaryCachePathにUnity上のC#で書き出す事にしました。
dotnet4版のFireBaseSDKを使って昨日書いたとおりでコルーチンで処理を判別しています。
なんかスッキリしないけど、いい方法はあるのだろうか。。。
投稿日:2019-01-26 Sat
今までUnityでFireBaseのCloud Storageからファイルをダウンロードしたあとの処理を以下のようにしていました。しかし、FireBaseSDKを.Net4版にしたら以下のように、命令を受け付けなくなった
なんか別スレッドなので処理できないみたいのがコンソールに出てるし、thisもとれない・・・
Invokeやコルーチンの命令書いても動かない・・・
いったい、どうすればいいんだ
色々実験したら、変数には値が入るので、予めコルーチンを動かしておいて、変数で処理するようにしました
他にいい方法はないだろうか・・・
判るまでしばらくこれでいきます。。
投稿日:2019-01-22 Tue
FireBaseのUserIDじゃなく、UserTokenを使うで書きましたし、ちょっと検索すると同じ事かいてるのにひっかかると思いますが、FioreBaseの匿名認証はアプリをアンインストールして、インストールし直すと同じIDになってました。
実験もしましたし、FireBaseIDでアプリ管理していたらガチャゲー作ってもリセマラ出来ないなとか言っていたのですが、仕様変わったのかな?
firebase_unity_sdk_5.4.3から、SDKの内容が「dotnet3」フォルダと「dotnet4」フォルダに分かれたので「dotnet4」にしてみたんですが
インストールするたびに、匿名IDが変化するようになってしまいました。
アンインストールしてインストールしなおさないと変わらないので、別に問題ないのですが、仕様かわったのかな?とちょっと気になってます。「dotnet3」のSDKでも同じなのかな?
とりあえず「dotnet4」SDKの方を使おうと思いますが
投稿日:2019-01-06 Sun
あけましておめでとうございます。今年も、UnityとFireBaseガンガンやっていきます。
さて、早速ですが、UnityとFioreBaseのCloudFunctionでやりとりするときに、FioreBaseのUserIDを使うのがシンプルですが、UserTokenを使う手もあります。
トークンは、CloudFunction上でUserIDに変換され、トークンは一定時間で変化するのでセキュリティ的にもUserIDで直接やりとりするよりも強力です。
まずは、Unity側
-----------------------------------------------------------
Firebase.Auth.FirebaseUser user = auth.CurrentUser;
user.TokenAsync(true).ContinueWith(task => {
if (task.IsCanceled) {
Debug.LogError("TokenAsync was canceled.");
return;
}
if (task.IsFaulted) {
Debug.LogError("TokenAsync encountered an error: " + task.Exception);
return;
}
string token = task.Result;//ここでトークンを取得
});
-----------------------------------------------------------
こんな感じです。
次に、受け取ったトークンをUserIDに変換するCloudFunction側
-----------------------------------------------------------
admin.auth().verifyIdToken(token)
.then(function (decodedToken) {
fireBaseId = decodedToken.uid;//変換されたUserID
return
}).catch(function (error) {
//エラー処理
});
-----------------------------------------------------------
こんな感じです。
△ PAGE UP