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
930
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.7k
クロスフェードやランダム再生などのサウンド演出開発をADX2で省力化する : Gotanda.unity 9
takaaki_ichijo
0
160
Unity x NCMBで小規模ゲームアプリへのソーシャル要素導入
takaaki_ichijo
0
7.6k
UnityからREST APIを叩く~NCMBでランキング機能プラグインを作った話~
takaaki_ichijo
0
880
Other Decks in Technology
See All in Technology
効率的な技術組織が作れる!書籍『チームトポロジー』要点まとめ
iwamot
1
110
普通のエンジニアがLaravelコアチームメンバーになるまで
avosalmon
0
120
[JAWS-UG新潟#20] re:Invent2024 -CloudOperationsアップデートについて-
shintaro_fukatsu
0
120
PHP ユーザのための OpenTelemetry 入門 / phpcon2024-opentelemetry
shin1x1
3
1.4k
APIとはなにか
mikanichinose
0
110
宇宙ベンチャーにおける最近の情シス取り組みについて
axelmizu
0
120
[トレノケ雲の会 mod.13] 3回目のre:Inventで気づいたこと -CloudOperationsを添えて-
shintaro_fukatsu
0
110
オプトインカメラ:UWB測位を応用したオプトイン型のカメラ計測
matthewlujp
0
200
watsonx.ai Dojo #5 ファインチューニングとInstructLAB
oniak3ibm
PRO
0
190
pg_bigmをRustで実装する(第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
shinyakato_
0
110
あの日俺達が夢見たサーバレスアーキテクチャ/the-serverless-architecture-we-dreamed-of
tomoki10
0
500
UI State設計とテスト方針
rmakiyama
3
800
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
41
7.1k
How STYLIGHT went responsive
nonsquared
96
5.2k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
Bash Introduction
62gerente
609
210k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
127
18k
How to Think Like a Performance Engineer
csswizardry
22
1.2k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.3k
Become a Pro
speakerdeck
PRO
26
5k
The Language of Interfaces
destraynor
154
24k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
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で 皆さんもオンライン機能を実装しませんか?