Slide 1

Slide 1 text

Firebaseを使ってゲーム開発をやってみた Game Development for Firebase Unity SDK GDG DevFest Tokyo 2018 2018/09/01(土)@grem_ito

Slide 2

Slide 2 text

  自己紹介 ● 岩本 拓也 ○ gremito(@grem_ito) ● ドリコム ゲーム基盤技術部 所属 ○ 自称QAエンジニアやり始めました。 ● UNIBOOK(日本Androidの会 Unity部) ○ Unityの逆引きTIPS集 ○ UNIBOOK 7・8・9・10で執筆 ● 八耐: 八時間耐久制作会(仮) ○ 8時間でモノ作りをやって発表して交流する会で す。 ○ 約7年ほど参加・運営やってます。 ※Firebaseを扱ったサービス開発は未経験です。

Slide 3

Slide 3 text

http://www.unity-bu.com/ 日本Androidの会 Unity部 ● 技術書典5 10/8(月祝)【か60】 ● 11作目のUNIBOOK11を頒布予定!

Slide 4

Slide 4 text

https://firebase.asia/

Slide 5

Slide 5 text

https://firebase.asia/

Slide 6

Slide 6 text

 今回のセッションについて ● ゲームアプリ開発に興味がある人 ● Unityに関わっている人 ● これからFirebaseとUnityで何か作ろう・作りたいと考えている人

Slide 7

Slide 7 text

demo

Slide 8

Slide 8 text

  なぜ作ったのか https://cloudplatform.googleblog.com/2018/06/new-gitHub-repo-using-firebase-to-add-cloud-based-features-to-games-built-on-unity.html

Slide 9

Slide 9 text

  なぜ作ったのか https://cloudplatform.googleblog.com/2018/06/new-gitHub-repo-using-firebase-to-add-cloud-based-features-to-games-built-on-unity.html

Slide 10

Slide 10 text

  なぜ作ったのか https://cloudplatform.googleblog.com/2018/06/new-gitHub-repo-using-firebase-to-add-cloud-based-features-to-games-built-on-unity.html FirebaseExtended/unity-solutionsが マジで酷い作りだった...ʚ

Slide 11

Slide 11 text

  なぜ作ったのか https://cloudplatform.googleblog.com/2018/06/new-gitHub-repo-using-firebase-to-add-cloud-based-features-to-games-built-on-unity.html

Slide 12

Slide 12 text

  なぜ作ったのか https://cloudplatform.googleblog.com/2018/06/new-gitHub-repo-using-firebase-to-add-cloud-based-features-to-games-built-on-unity.html Updateにめっちゃ書いてる...

Slide 13

Slide 13 text

  なぜ作ったのか ● FirebaseExtended/unity-solutionsを反面教師にゲームとFirebaseをシンプルに連携させ たUnityとFirebaseのベースプロジェクトを作りたいと思った ● ゲーム開発でどこまでFirebaseが使えるのか知りたかった ● Firebaseでオモロイことやりたかった

Slide 14

Slide 14 text

設計について

Slide 15

Slide 15 text

Game System Development iOS/Android Development Unity Build ゲームアプリ開発 - ユーザー情報 - サーバーサイド - ファイルDL - ...etc - ネイティブプ ラグイン   OR - SDK 16

Slide 16

Slide 16 text

  設計 ゲーム サーバ サイド

Slide 17

Slide 17 text

  何を使いたかったのか ユーザー認証 サーバーサイド ファイル サーバー データベース データベース 設定情報

Slide 18

Slide 18 text

  何を使ったのか ユーザー認証 サーバーサイド データベース データベース

Slide 19

Slide 19 text

  設計 記録更新 最新のランキング 参照用 ユーザー情報 更新 更新をトリガーに ランキングを更新

Slide 20

Slide 20 text

  設計 記録更新 最新のランキング 参照用 ユーザー情報 更新 更新をトリガーに ランキングを更新 これをやりたかったです...ʚ

Slide 21

Slide 21 text

開発について

Slide 22

Slide 22 text

  開発 ゲームシステム ő

Slide 23

Slide 23 text

  開発 Standard Assets for Unity 4.6 https://assetstore.unity.com/packages/essentials/asset-packs/standard-assets-for-unity-4-6-21064

Slide 24

Slide 24 text

  開発 Easy FPS https://assetstore.unity.com/packages/3d/characters/humanoids/easy-fps-73776

Slide 25

Slide 25 text

  開発 Easy FPS Standard Assets FPSシステム ゲームパッド

Slide 26

Slide 26 text

  開発 http://tsubakit1.hateblo.jp/entry/2014/10/09/035003

Slide 27

Slide 27 text

  開発 Firebase(サーバ) 

Slide 28

Slide 28 text

  開発 https://unity-bu.booth.pm/items/831502 https://unity-bu.booth.pm/items/971623 第2章 Firebaseを用いたゲームアプリ開発 第4章 FirebaseとUnity

Slide 29

Slide 29 text

  開発

Slide 30

Slide 30 text

TIPS

Slide 31

Slide 31 text

  TIPS:Firebase関連 【Functions】 ● ログがリアルタイムで詳細に表示してくれて良い ● デプロイめんどくさい ● ちゃんと設計しないとすぐ動かなくなる ○ Functions: index.jsに全て書いてしまう ○ UnitySDK: ゲームに密結合しないように疎結合で組み込まないと後々ヤバくなる ● イベント・トリガーが作れなかった ○ FunctionsはWebAPIとして作っていた ○ ユーザーのデータが増えた際の {user_id}という指定がシンプルにできない ○ 状態を保ち{user_id}などができるように設計する必要あり ● admin.とfirebase.が混在してしまう ● req.query.{数値が入ってる変数}で受け取るとき整数ではなく文字列になっている

Slide 32

Slide 32 text

  TIPS:Unity関連 ● ゲームシステムとFirebase関連の開発が今のところ同じくらいの工数だった ● Authの実装をメールアドレスで一旦実装すると楽 ○ 作業が落ち着いたら電話番号認証を実装したいと考えていた ■ 10,000/月までの認証なら無料で SMS(電話番号)認証を簡単に構築できる ■ アプリになるとAuthの実装はダルイ ■ Google Play認証は意外とダルかった

Slide 33

Slide 33 text

まとめ

Slide 34

Slide 34 text

  まとめ ● まだ完成できていません ● 課題がいっぱい増えた(笑) ● 気をつけて開発する諸々の知見を得た ○ Firebaseの1日MAX制限を知れた(意外とあっさり MAX制限超える ○ Functionsの開発がキモになる( {WebAPI:クライアント連携}・{トリガー:他サービス連携} ● 辛かった場面は多かったけど出来たときは超楽しい!! ● やってみて分かったこと・知れたことが多かったためやってみて良かったƴ

Slide 35

Slide 35 text

  やってわかったこと ● Firebaseを使いこなすなら無料で使いやすいため小さいシステムをどんどん作っていく ○ Firebaseのサービス1~2つで便利なツールを作る ● 規模が大きくなるとFirebaseが辛くなる... ○ 公式の「使用例」やドキュメントの「Cloud Functions で可能な処理」を見ると1~3つのサービスを 連携させて ○ ゲーム開発はどうしても大きなシステムになりがち

Slide 36

Slide 36 text

  課題 ● やってないことが多い ○ クエリ、分散カウンタ、スケーリング ○ セッション、Cookie ○ GCPとの連携 ○ ...etc ● Cloud StorageとAssetBundle ● テスト・CI ● DevOps ● ...etc

Slide 37

Slide 37 text

  課題 ● やってないことが多い ○ クエリ、分散カウンタ、スケーリング ○ セッション、Cookie ○ GCPとの連携 ○ ...etc ● Cloud StorageとAssetBundle ● テスト・CI ● DevOps ● ...etc やることいっぱいやんw ʚ

Slide 38

Slide 38 text

https://github.com/gremito/firebase-game-app 現時点のソース コードをGitHubに 公開しています。

Slide 39

Slide 39 text

thank you!!