NIFTY Cloud mobile backendを使ってUnityのゲームにプレイヤーがステージを作って共有できるシステムを作ってみましょう。
Copyright © NIFTY Corporation All Rights Reserved.NCMBで作るカスタムステージのオンライン共有システムNCMB広めたいおじさん一條 貴彰
View Slide
Copyright © NIFTY Corporation All Rights Reserved. 2自己紹介一條 貴彰– 個人ゲーム開発者– ゲーム開発ツール専門コンサル経歴– 2010年~2015年 サラリーマン株式会社CRI・ミドルウェア– 2015年7月~ フリーランス元ソルジャー今はNCMBおじさんUnite 2016で登壇したりニンテンドー3DS向けのゲーム作ってます→趣味– 飲酒(クラフトビール)– 電タバ– 80’s洋ポップス レアレコード収集 / DJ– 推し刀は鯰尾藤四郎くんTwitter:@Takaaki_Ichijo
Copyright © NIFTY Corporation All Rights Reserved. 3Nifty Cloud mobile backendと私役割ゲーム開発者とのリレーション構築– 機能の紹介– 使い方の紹介– トラブったときの支援現状 NCMB広めたいおじさん(エヴァンジェリスト)見習い– 仕事始めてから4ヶ月目とりあえずUnityでサンプル作ったり、ブログを書いたり各種勉強会で紹介したり
Copyright © NIFTY Corporation All Rights Reserved. 4is 何
Copyright © NIFTY Corporation All Rights Reserved. 5ひところゲームにオンライン機能を簡単に追加できる
Copyright © NIFTY Corporation All Rights Reserved. 6スマホアプリのバックエンド機能が開発不要になるクラウドサービスSDKを導入するだけで利用できる※SDKはUnity,iOS ,Android,JavaScriptの4つを提供しておりますRESTAPIもあるよ!提供中の機能いわゆるmBaaS
Copyright © NIFTY Corporation All Rights Reserved. 7バックエンドの準備がいらないターミナルcd lsssh
Copyright © NIFTY Corporation All Rights Reserved. 8オンラインに関する機能の提供ユーザー認証機能プッシュ通知配信スクリプト機能• ガチャなどのロジックをサーバー側で実行、バックエンドはNode.js
Copyright © NIFTY Corporation All Rights Reserved. 9オンラインに関する機能の提供ステージコメント機能 ゴースト機能ランキングデータストア機能文字データや数値データをサーバーに保存し、アプリから横断的に利用できる
Copyright © NIFTY Corporation All Rights Reserved. 10オンラインに関する機能の提供ファイルストア機能画像・動画・音声その他ファイルを保存できる Unity SDKから使えるようになったばかり
Copyright © NIFTY Corporation All Rights Reserved. 11最近の事例「ひとりぼっち惑星」放置ゲー+一方的メッセージングデータストア機能を使って、メッセージングシステムを実現開発者はUnity初心者でサーバーエンジニアではない人。
Copyright © NIFTY Corporation All Rights Reserved. 12NCMB対象個人ゲーム・アプリ開発お仕事で、小規模チームでアプリを開発する人サーバー、バックエンド分からない人
Copyright © NIFTY Corporation All Rights Reserved. 13NCMBで作るカスタムステージのオンライン共有システムfrom Unibook 5
Copyright © NIFTY Corporation All Rights Reserved. 14概要 NCMBのデータストア機能文字・数値が保存できる↓ゲーム内オブジェクトの座標を保存できる↓マリ◯メーカー的なシステムが作れるのでは
Copyright © NIFTY Corporation All Rights Reserved. 15サンプル作った「Bowling City」黒塗りの高級車と衝突するゲーム(ボーリングピン)データストア機能を使って、NCMBで作るカスタムステージのオンライン共有システムを実現※サンプルなのでストア配信してませんgithub: https://github.com/TakaakiIchijo/BowlingCity
Copyright © NIFTY Corporation All Rights Reserved. 16カスタムステージ要素ボーリングピンの配置ができる(簡易ステージエディット)配置したデータをNCMBでサーバーに保存別のユーザーがそのステージを遊べる
Copyright © NIFTY Corporation All Rights Reserved. 17NCMBのセットアップ手順STEP1UnityWEBでサインアップして・・・認証キーをとって・・・
Copyright © NIFTY Corporation All Rights Reserved. 18NCMBのセットアップ手順UnitySTEP2認証キーをUnity内で設定
Copyright © NIFTY Corporation All Rights Reserved. 19セットアップ手順試しにこんなコードを書く
Copyright © NIFTY Corporation All Rights Reserved. 20セットアップ手順NCMBのサーバーにデータが保存できたあとは煮るなり焼くなり
Copyright © NIFTY Corporation All Rights Reserved. 21ユーザー管理(ログイン・登録)はこう
Copyright © NIFTY Corporation All Rights Reserved. 22ステージエディタモードを作る各自ゲームの内容によって、ステージエディタモードはぜんぜん違う・シューティング?・横スクロール?・パズル?
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
Copyright © NIFTY Corporation All Rights Reserved. 24手順 GameObjectの座標(Transform.position)をシリアライズしてセーブシリアライズ方法:オブジェクトの位置情報であるVector3 の値を double[] に変換して配列にする今回のゲームで保存するデータプレイヤーの名前 : string userNameボーリングピンの座標 : List pinPosArray
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){//エラー処理}});}
Copyright © NIFTY Corporation All Rights Reserved. 26管理画面1行が1つのステージボーリングピンの位置情報
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); //リストから座標データを取り出し、ゲーム中にボーリングピンを出現させる。//}}});}
Copyright © NIFTY Corporation All Rights Reserved. 28完これで友だちの間でステージデータが共有できる!
Copyright © NIFTY Corporation All Rights Reserved. 29作ったステージが何回遊ばれたかを記録指定したキーの値をインクリメント(カウントアップ)するpublic void CountUpPlayedNumber(currentStageName){NCMBObject obj = //名前が一致するデータを取得//obj.Increment ("PlayedNumber");obj.SaveAsync ();}さらにできることユーザーごとにステージデータを一覧表示する評価ランキングを作るファイルストア機能で、スクリーンショットを載せる etc….
Copyright © NIFTY Corporation All Rights Reserved. 30おさらい NCMBとはゲームにオンライン機能を簡単に追加できるできることデータの保存ファイルの保存その応用範囲は未知数!
Copyright © NIFTY Corporation All Rights Reserved. 31料金体系とりあえず無料プランあります個人ゲームアプリの規模なら概ね無料で行ける…?(未検証)
Copyright © NIFTY Corporation All Rights Reserved. 32使いやすいところだけつまみ食いニフティクラウド mobile backendを使われているクライアントの多くはプッシュ通知をメインで使われています。また、データストアやファイルストアだけなど一部の機能だけを使ってもらっても問題ありません。
Copyright © NIFTY Corporation All Rights Reserved. 33最後にニフティクラウド mobile backendで皆さんもオンライン機能を実装しませんか?