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

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

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

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

Takaaki Ichijo

July 24, 2016
Tweet

More Decks by Takaaki Ichijo

Other Decks in Technology

Transcript

  1. Copyright © NIFTY Corporation All Rights Reserved.
    NCMBで作る
    カスタムステージの
    オンライン共有システム
    NCMB広めたいおじさん
    一條 貴彰

    View Slide

  2. Copyright © NIFTY Corporation All Rights Reserved. 2
    自己紹介

    一條 貴彰
    – 個人ゲーム開発者
    – ゲーム開発ツール専門コンサル

    経歴
    – 2010年~2015年 サラリーマン

    株式会社CRI・ミドルウェア
    – 2015年7月~ フリーランス

    元ソルジャー

    今はNCMBおじさん

    Unite 2016で登壇したり

    ニンテンドー3DS向けのゲーム作ってます→

    趣味
    – 飲酒(クラフトビール)
    – 電タバ
    – 80’s洋ポップス レアレコード収集 / DJ
    – 推し刀は鯰尾藤四郎くん
    Twitter:@Takaaki_Ichijo

    View Slide

  3. Copyright © NIFTY Corporation All Rights Reserved. 3
    Nifty Cloud mobile backendと私

    役割

    ゲーム開発者とのリレーション構築
    – 機能の紹介
    – 使い方の紹介
    – トラブったときの支援

    現状
     NCMB広めたいおじさん(エヴァンジェリスト)見習い
    – 仕事始めてから4ヶ月目

    とりあえずUnityでサンプル作ったり、
    ブログを書いたり各種勉強会で紹介したり

    View Slide

  4. Copyright © NIFTY Corporation All Rights Reserved. 4
    is 何

    View Slide

  5. Copyright © NIFTY Corporation All Rights Reserved. 5
    ひところ
    ゲームにオンライン機能を
    簡単に追加できる

    View Slide

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

    View Slide

  7. Copyright © NIFTY Corporation All Rights Reserved. 7
    バックエンドの準備がいらない
    ターミナル
    cd ls
    ssh

    View Slide

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

    View Slide

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

    View Slide

  10. Copyright © NIFTY Corporation All Rights Reserved. 10
    オンラインに関する機能の提供

    ファイルストア機能

    画像・動画・音声その他ファイルを保存できる
     Unity SDKから使えるようになったばかり

    View Slide

  11. Copyright © NIFTY Corporation All Rights Reserved. 11
    最近の事例
    「ひとりぼっち惑星」
    放置ゲー+一方的メッセージング
    データストア機能を使って、
    メッセージングシステムを実現
    開発者はUnity初心者で
    サーバーエンジニアではない人。

    View Slide

  12. Copyright © NIFTY Corporation All Rights Reserved. 12
    NCMB対象

    個人ゲーム・アプリ開発

    お仕事で、小規模チームでアプリを開発す
    る人

    サーバー、バックエンド分からない人

    View Slide

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

    View Slide

  14. Copyright © NIFTY Corporation All Rights Reserved. 14
    概要
     NCMBのデータストア機能
    文字・数値が保存できる

    ゲーム内オブジェクトの座標を保存できる

    マリ◯メーカー的なシステムが作れるのでは

    View Slide

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

    View Slide

  16. Copyright © NIFTY Corporation All Rights Reserved. 16
    カスタムステージ要素
    ボーリングピンの配置ができる(簡易ステージエディット)
    配置したデータをNCMBでサーバーに保存
    別のユーザーがそのステージを遊べる

    View Slide

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

    View Slide

  18. Copyright © NIFTY Corporation All Rights Reserved. 18
    NCMBのセットアップ手順
    Unity
    STEP2
    認証キーをUnity内で設定

    View Slide

  19. Copyright © NIFTY Corporation All Rights Reserved. 19
    セットアップ手順
    試しにこんなコードを書く

    View Slide

  20. Copyright © NIFTY Corporation All Rights Reserved. 20
    セットアップ手順
    NCMBのサーバーにデータが保存できた
    あとは煮るなり焼くなり

    View Slide

  21. Copyright © NIFTY Corporation All Rights Reserved. 21
    ユーザー管理(ログイン・登録)はこう

    View Slide

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

    View Slide

  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

    View Slide

  24. Copyright © NIFTY Corporation All Rights Reserved. 24
    手順
     GameObjectの座標(Transform.position)を
    シリアライズしてセーブ
    シリアライズ方法:オブジェクトの位置情報である
    Vector3 の値を double[] に変換して配列にする

    今回のゲームで保存するデータ

    プレイヤーの名前 : string userName

    ボーリングピンの座標 : List pinPosArray

    View Slide

  25. Copyright © NIFTY Corporation All Rights Reserved. 25
    実際にステージデータをセーブ
     NCMBが用意している"NCMBObject"を使って実装
    void SaveStageDataToNCMB(string userName, List 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)
    {
    //エラー処理
    }
    });
    }

    View Slide

  26. Copyright © NIFTY Corporation All Rights Reserved. 26
    管理画面
    1行が1つのステージ
    ボーリングピンの位置情報

    View Slide

  27. Copyright © NIFTY Corporation All Rights Reserved. 27
    ステージデータをロード
    void LoadNewestFromNCMB()
    {
    NCMBQuery query = new NCMBQuery(“PinPosition”); //検索のためのクエリ//
    query.OrderByDescending(“createDate”); //日付の降順にソート//
    query.Limit = 1; //先頭の要素だけを取得する//
    query.FindAsync((List 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); //リストから座標データを取り出し、ゲーム中にボーリングピンを出現させる。//
    }
    }
    });
    }

    View Slide

  28. Copyright © NIFTY Corporation All Rights Reserved. 28

    これで友だちの間でステージデータが共有できる!

    View Slide

  29. Copyright © NIFTY Corporation All Rights Reserved. 29

    作ったステージが何回遊ばれたかを記録
    指定したキーの値をインクリメント(カウントアップ)する
    public void CountUpPlayedNumber(currentStageName)
    {
    NCMBObject obj = //名前が一致するデータを取得//
    obj.Increment ("PlayedNumber");
    obj.SaveAsync ();
    }
    さらにできること

    ユーザーごとにステージデータを一覧表示する

    評価ランキングを作る

    ファイルストア機能で、スクリーンショットを載せる
     etc….

    View Slide

  30. Copyright © NIFTY Corporation All Rights Reserved. 30
    おさらい
     NCMBとは

    ゲームにオンライン機能を簡単に追加できる

    できること

    データの保存

    ファイルの保存
    その応用範囲は未知数!

    View Slide

  31. Copyright © NIFTY Corporation All Rights Reserved. 31
    料金体系
    とりあえず無料プランあります
    個人ゲームアプリの規模なら概ね無料で行ける…?(未検証)

    View Slide

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

    View Slide

  33. Copyright © NIFTY Corporation All Rights Reserved. 33
    最後に
    ニフティクラウド mobile backendで
    皆さんもオンライン機能を実装しませんか?

    View Slide