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

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

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

NIFTY Cloud mobile backendを使ってUnityのゲームにプレイヤーがステージを作って共有できるシステムを作ってみましょう。

36f1bc2f09e04db2ff947178c794c519?s=128

Takaaki Ichijo

July 24, 2016
Tweet

Transcript

  1. Copyright © NIFTY Corporation All Rights Reserved. NCMBで作る カスタムステージの オンライン共有システム

    NCMB広めたいおじさん 一條 貴彰
  2. Copyright © NIFTY Corporation All Rights Reserved. 2 自己紹介 

    一條 貴彰 – 個人ゲーム開発者 – ゲーム開発ツール専門コンサル  経歴 – 2010年~2015年 サラリーマン  株式会社CRI・ミドルウェア – 2015年7月~ フリーランス  元ソルジャー  今はNCMBおじさん  Unite 2016で登壇したり  ニンテンドー3DS向けのゲーム作ってます→  趣味 – 飲酒(クラフトビール) – 電タバ – 80’s洋ポップス レアレコード収集 / DJ – 推し刀は鯰尾藤四郎くん Twitter:@Takaaki_Ichijo
  3. Copyright © NIFTY Corporation All Rights Reserved. 3 Nifty Cloud

    mobile backendと私  役割  ゲーム開発者とのリレーション構築 – 機能の紹介 – 使い方の紹介 – トラブったときの支援  現状  NCMB広めたいおじさん(エヴァンジェリスト)見習い – 仕事始めてから4ヶ月目  とりあえずUnityでサンプル作ったり、 ブログを書いたり各種勉強会で紹介したり
  4. Copyright © NIFTY Corporation All Rights Reserved. 4 is 何

  5. Copyright © NIFTY Corporation All Rights Reserved. 5 ひところ ゲームにオンライン機能を

    簡単に追加できる
  6. Copyright © NIFTY Corporation All Rights Reserved. 6 スマホアプリの バックエンド機能が

    開発不要になる クラウドサービス SDKを導入するだけ で利用できる ※SDKはUnity,iOS ,Android,JavaScriptの4つを提供しております RESTAPIもあるよ! 提供中の機能 いわゆるmBaaS
  7. Copyright © NIFTY Corporation All Rights Reserved. 7 バックエンドの準備がいらない ターミナル

    cd ls ssh
  8. Copyright © NIFTY Corporation All Rights Reserved. 8 オンラインに関する機能の提供 ユーザー認証機能

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

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

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

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

    個人ゲーム・アプリ開発  お仕事で、小規模チームでアプリを開発す る人  サーバー、バックエンド分からない人
  13. Copyright © NIFTY Corporation All Rights Reserved. 13 NCMBで作る カスタムステージの

    オンライン共有システム from Unibook 5
  14. Copyright © NIFTY Corporation All Rights Reserved. 14 概要 

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

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

    配置したデータをNCMBでサーバーに保存 別のユーザーがそのステージを遊べる
  17. Copyright © NIFTY Corporation All Rights Reserved. 17 NCMBのセットアップ手順 STEP1

    Unity WEBでサインアップして・・・ 認証キーをとって・・・
  18. Copyright © NIFTY Corporation All Rights Reserved. 18 NCMBのセットアップ手順 Unity

    STEP2 認証キーをUnity内で設定
  19. Copyright © NIFTY Corporation All Rights Reserved. 19 セットアップ手順 試しにこんなコードを書く

  20. Copyright © NIFTY Corporation All Rights Reserved. 20 セットアップ手順 NCMBのサーバーにデータが保存できた

    あとは煮るなり焼くなり
  21. Copyright © NIFTY Corporation All Rights Reserved. 21 ユーザー管理(ログイン・登録)はこう

  22. Copyright © NIFTY Corporation All Rights Reserved. 22 ステージエディタモードを作る 各自

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

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

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

    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) { //エラー処理 } }); }
  26. Copyright © NIFTY Corporation All Rights Reserved. 26 管理画面 1行が1つのステージ

    ボーリングピンの位置情報
  27. Copyright © NIFTY Corporation All Rights Reserved. 27 ステージデータをロード 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); //リストから座標データを取り出し、ゲーム中にボーリングピンを出現させる。// } } }); }
  28. Copyright © NIFTY Corporation All Rights Reserved. 28 完 これで友だちの間でステージデータが共有できる!

  29. Copyright © NIFTY Corporation All Rights Reserved. 29  作ったステージが何回遊ばれたかを記録

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

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

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

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

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