Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Unity+NCMBで作るカスタムステージのオンライン共有システム
Search
Takaaki Ichijo
July 24, 2016
Technology
0
920
Unity+NCMBで作るカスタムステージのオンライン共有システム
NIFTY Cloud mobile backendを使ってUnityのゲームにプレイヤーがステージを作って共有できるシステムを作ってみましょう。
Takaaki Ichijo
July 24, 2016
Tweet
Share
More Decks by Takaaki Ichijo
See All by Takaaki Ichijo
Unity対応してるmBaaS 全部紹介する(ハイパーリンクが機能してない版)
takaaki_ichijo
0
1.6k
クロスフェードやランダム再生などのサウンド演出開発をADX2で省力化する : Gotanda.unity 9
takaaki_ichijo
0
160
Unity x NCMBで小規模ゲームアプリへのソーシャル要素導入
takaaki_ichijo
0
7.6k
UnityからREST APIを叩く~NCMBでランキング機能プラグインを作った話~
takaaki_ichijo
0
870
Other Decks in Technology
See All in Technology
Engineer Career Talk
lycorp_recruit_jp
0
190
Exadata Database Service on Dedicated Infrastructure(ExaDB-D) UI スクリーン・キャプチャ集
oracle4engineer
PRO
2
3.2k
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
780
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
2
1.7k
BLADE: An Attempt to Automate Penetration Testing Using Autonomous AI Agents
bbrbbq
0
330
AWS Lambda のトラブルシュートをしていて思うこと
kazzpapa3
2
200
適材適所の技術選定 〜GraphQL・REST API・tRPC〜 / Optimal Technology Selection
kakehashi
1
710
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
1
120
複雑なState管理からの脱却
sansantech
PRO
1
160
AI前提のサービス運用ってなんだろう?
ryuichi1208
8
1.4k
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
Making your applications cross-environment - OSCG 2024 NA
salaboy
0
200
Featured
See All Featured
Building Your Own Lightsaber
phodgson
103
6.1k
Facilitating Awesome Meetings
lara
50
6.1k
Code Review Best Practice
trishagee
64
17k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
4 Signs Your Business is Dying
shpigford
180
21k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
130
Making Projects Easy
brettharned
115
5.9k
Designing Experiences People Love
moore
138
23k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
25
1.8k
GitHub's CSS Performance
jonrohan
1030
460k
Transcript
Copyright © NIFTY Corporation All Rights Reserved. NCMBで作る カスタムステージの オンライン共有システム
NCMB広めたいおじさん 一條 貴彰
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. 3 Nifty Cloud
mobile backendと私 役割 ゲーム開発者とのリレーション構築 – 機能の紹介 – 使い方の紹介 – トラブったときの支援 現状 NCMB広めたいおじさん(エヴァンジェリスト)見習い – 仕事始めてから4ヶ月目 とりあえずUnityでサンプル作ったり、 ブログを書いたり各種勉強会で紹介したり
Copyright © NIFTY Corporation All Rights Reserved. 4 is 何
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 ls ssh
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. 12 NCMB対象
個人ゲーム・アプリ開発 お仕事で、小規模チームでアプリを開発す る人 サーバー、バックエンド分からない人
Copyright © NIFTY Corporation All Rights Reserved. 13 NCMBで作る カスタムステージの
オンライン共有システム 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. 17 NCMBのセットアップ手順 STEP1
Unity WEBでサインアップして・・・ 認証キーをとって・・・
Copyright © NIFTY Corporation All Rights Reserved. 18 NCMBのセットアップ手順 Unity
STEP2 認証キーを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<double[]> pinPosArray
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) { //エラー処理 } }); }
Copyright © NIFTY Corporation All Rights Reserved. 26 管理画面 1行が1つのステージ
ボーリングピンの位置情報
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); //リストから座標データを取り出し、ゲーム中にボーリングピンを出現させる。// } } }); }
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で 皆さんもオンライン機能を実装しませんか?