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
910
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
860
Other Decks in Technology
See All in Technology
【shownet.conf_】革新と伝統を融合したファシリティ
shownet
PRO
0
280
分析者起点の企画を成功させた連携面の工夫
lycorptech_jp
PRO
1
230
リスクから学ぶKubernetesコンテナセキュリティ/k8s-risk-and-security
mochizuki875
1
290
Azure Verified Moduleを触って分かった注目ポイント/azure-verified-module-begin
mhrtech
1
220
AWS Lambdaで実現するスケーラブルで低コストなWebサービス構築/YAPC::Hakodate2024
fujiwara3
6
1.5k
Pythonを活用したLLMによる構造的データ生成の手法と実践
brainpadpr
3
260
HashHub会社案内「なぜ今、パブリックブロックチェーンに賭けるのか」
hashhub
3
75k
KDD2024参加報告
cyberagentdevelopers
PRO
1
230
Azure App Service on Linux の Sidecar に Phi-3 を配置してインテリジェントなアプリケーションを作ってみよう/jazug-anniv14
thara0402
0
150
All your memory are belong to… whom?
ennael
PRO
0
580
MLOpsの「あるある」課題の解決と、そのためのライブラリgokart
mski_iksm
1
160
ドメインと向き合う - 旅行予約編
hidenorigoto
4
530
Featured
See All Featured
Visualization
eitanlees
143
15k
Gamification - CAS2011
davidbonilla
80
5k
A designer walks into a library…
pauljervisheath
201
24k
4 Signs Your Business is Dying
shpigford
180
21k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9k
What’s in a name? Adding method to the madness
productmarketing
PRO
22
3.1k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
26
4k
GitHub's CSS Performance
jonrohan
1030
450k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
327
21k
It's Worth the Effort
3n
183
27k
Teambox: Starting and Learning
jrom
131
8.7k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
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で 皆さんもオンライン機能を実装しませんか?