Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Unity + NCMBで作る カスタムステージのオンライン共有システム

Unity + NCMBで作る カスタムステージのオンライン共有システム

2016/7/23 「Unibook振り返り+夏のLT大会!」で発表した資料です。
UnityにNifty Cloud Mobile Backendを導入。ユーザーがステージを作れるタイプのゲームに、そのステージをオンラインで共有できるシステムを構築します。

More Decks by ニフティクラウド mobile backend

Other Decks in Technology

Transcript

  1. Copyright © NIFTY Corporation All Rights Reserved. Unity + NCMBで作る

    カスタムステージの オンライン共有システム NCMB エヴァンジエリスト 一條 貴彰
  2. Copyright © NIFTY Corporation All Rights Reserved. 4 スマホアプリの バックエンド機能が

    開発不要になる クラウドサービス SDKを導入するだけ で利用できる ※SDKはUnity,iOS ,Android,JavaScriptの4つを提供しております RESTAPIもあるよ! 提供中の機能 いわゆるmBaaS
  3. Copyright © NIFTY Corporation All Rights Reserved. 6 オンラインに関する機能の提供 ユーザー認証機能

    プッシュ通知配信 スクリプト機能 • ガチャなどのロジックをサーバー側で実行、バックエンドはNode.js
  4. Copyright © NIFTY Corporation All Rights Reserved. 7 オンラインに関する機能の提供 ステージコメント機能

    ゴースト機能 ランキング データストア機能 文字データや数値データをサーバーに保存し、 アプリから横断的に利用できる
  5. Copyright © NIFTY Corporation All Rights Reserved. 8 オンラインに関する機能の提供 

    ファイルストア機能  画像・動画・音声その他ファイルを保存できる  Unity SDKから使えるようになったばかり
  6. Copyright © NIFTY Corporation All Rights Reserved. 9 最近の事例 「ひとりぼっち惑星」

    放置ゲー+一方的メッセージング データストア機能を使って、 メッセージングシステムを実現 開発者はUnity初心者で サーバーエンジニアではない人。
  7. Copyright © NIFTY Corporation All Rights Reserved. 10 NCMB対象 

    個人ゲーム・アプリ開発  お仕事で、小規模チームでアプリを開発す る人  サーバー、バックエンド分からない人
  8. Copyright © NIFTY Corporation All Rights Reserved. 12 概要 

    NCMBのデータストア機能 文字・数値が保存できる ↓ ゲーム内オブジェクトの座標を保存できる ↓ マリ◯メーカー的なシステムが作れるのでは
  9. Copyright © NIFTY Corporation All Rights Reserved. 13 サンプル作った 「Bowling

    City」 黒塗りの高級車と衝突するゲーム (ボーリングピン) データストア機能を使って、 NCMBで作る カスタムステージの オンライン共有システムを実現 ※サンプルなのでストア配信してません github: https://github.com/TakaakiIchijo/BowlingCity
  10. Copyright © NIFTY Corporation All Rights Reserved. 15 NCMBのセットアップ手順 STEP1

    Unity WEBでサインアップして・・・ 認証キーをとって・・・
  11. Copyright © NIFTY Corporation All Rights Reserved. 20 ステージエディタモードを作る 各自

    ゲームの内容によって、ステージエディタモードはぜんぜん違うので… ・シューティング? ・横スクロール? ・パズル?
  12. Copyright © NIFTY Corporation All Rights Reserved. 21 ステージデータをセーブする 

    データストア機能で保存できるデータ  文字列 ABC  配列 ["orange", "apple", "grape"]  数字 123  日付 2013-09-06T01:51:03.606Z  真偽値 true または false|  オブジェクト {"name":"orange"}  緯度経度(位置情報) 33.857619,122.378986
  13. Copyright © NIFTY Corporation All Rights Reserved. 22 手順 

    GameObjectの座標(Transform.position)を シリアライズしてセーブ シリアライズ方法:オブジェクトの位置情報である Vector3 の値を double[] に変換して配列にする  今回のゲームで保存するデータ  プレイヤーの名前 : string userName  ボーリングピンの座標 : List<double[]> pinPosArray
  14. Copyright © NIFTY Corporation All Rights Reserved. 23 実際にステージデータをセーブ 

    NCMBが用意している"NCMBObject"を使って実装 void SaveStageDataToNCMB(string userName, List<double[]> pinPositionList) { NCMBObject ncmbObject_PinPosition = new NCMBObject("PinPosition"); ncmbObject_PinPosition.AddRangeToList("PinPositionList", pinPositionList); ncmbObject_PinPosition.Add("UserName", userName); ncmbObject_PinPosition.SaveAsync((NCMBException e) => { if (e != null) { //エラー処理 } }); }
  15. Copyright © NIFTY Corporation All Rights Reserved. 25 ステージデータをロード void

    LoadNewestFromNCMB() { NCMBQuery<NCMBObject> query = new NCMBQuery<NCMBObject>(“PinPosition”); //検索のためのクエリ// query.OrderByDescending(“createDate”); //日付の降順にソート// query.Limit = 1; //先頭の要素だけを取得する// query.FindAsync((List<NCMBObject> objList, NCMBException e) => { if (e != null) { //データは見つからなかった } else { ArrayList arrayList = (ArrayList)objList[0]["PinPositionList"]; for (int i = 0; i < arrayList.Count - 1; i++) { ArrayList list = (ArrayList)arrayList[i]; GeneratePin(list); //リストから座標データを取り出し、ゲーム中にボーリングピンを出現させる。// } } }); }
  16. Copyright © NIFTY Corporation All Rights Reserved. 27  作ったステージが何回遊ばれたかを記録

    指定したキーの値をインクリメント(カウントアップ)する public void CountUpPlayedNumber(currentStageName) { NCMBObject obj = //名前が一致するデータを取得// obj.Increment ("PlayedNumber"); obj.SaveAsync (); } さらにできること  ユーザーごとにステージデータを一覧表示する  評価ランキングを作る  ファイルストア機能で、スクリーンショットを載せる  etc….
  17. Copyright © NIFTY Corporation All Rights Reserved. 28 おさらい 

    NCMBとは  ゲームにオンライン機能を簡単に追加できる  できること  データの保存  ファイルの保存 その応用範囲は未知数!
  18. Copyright © NIFTY Corporation All Rights Reserved. 29 料金体系 とりあえず無料プランあります

    個人ゲームアプリの規模なら概ね無料で行ける…?(未検証)
  19. Copyright © NIFTY Corporation All Rights Reserved. 30 使いやすいところだけつまみ食い ニフティクラウド

    mobile backendを使われているクライアントの多くは プッシュ通知をメインで使われています。 また、データストアやファイルストアだけなど 一部の機能だけを使ってもらっても問題ありません。
  20. Copyright © NIFTY Corporation All Rights Reserved. 31 最後に ニフティクラウド

    mobile backendで 皆さんもオンライン機能を実装しませんか?