backend(mBaaS)。Unityこんにちは。エヴァンジェリストの一條です。backend(以下NCMB)では、今年も日本会場への「ツール&ライセンス協力」として参戦しています。ニフティクラウドのアカウントを取得してもらえれば、すぐにもGGJのゲームに適用可能です。SDKを使ってGGJ向けの導入スクリプトを作りました。全世界成績ランキングを速攻で実装するスクリプトです!github.comUnityでのアプリ開発経験がある方なら、NCMBが初めてであっても30分かからないと思います。省略しまして、「データストア」のみで実装します。ゲームを遊ぶ人にログインをしてもらう必要はありません。UnityはiOS/Android/Windows/MacOSで動作します。GLはGGJで試しそうな人が多いのですが、残念ながら動作しません。SettingをWebGLにした場合、ワーニングを出しつつ空のデータを返すようにしています。ワーニングは出ますがゲームは止まらないので、WebGL版は「ランキング無し」として公開できるようにしています。backend上記の「APIキーの設定とSDKの初期化」までやっていただき、「サンプルコードの実行」は任意にて。準備ができたら、下記から最新リリースをダウンロードしていただき、「QuickRanking.unityasset」を開いてUnityプロジェクトに導入します。github.com続いて、あなたのゲームで最初に読み込むシーンに空のGameObjectを作成し、QuickRanking.csを貼り付けてください。GameObjectの名前も、判別しやすいように「QuickRanking」としてください。最初に読み込むシーンの中に、チュートリアルで説明している「NCMBManager」「NCMBSettings」、そして「QuickRaning」がいる状態になれば準備完了です。「QuickRaning」を選択すると、インスペクターには2つのオプションが設定できます。Name"はNCMBのデータストア内に保存する際、何のクラス名(テーブル)で保存するかを指定します。"Count"は成績順にいくつまでデータを取得するか指定します。10位までのランキングであれば、これで準備完了です。使い方まず、ゲーム中の任意のタイミングでプレイヤーのスコアをNCMBの「データストア」というデータベースへ保存します。保存用の関数は以下です。callback)callbackは保存し終わった後に実行するメソッドを登録しておくデリゲートです。ネットワークに接続するので、ある程度待ち時間があります。保存が完了したタイミングで何かをしたい場合は、callbackに実行したい関数を指定して下さい。224);と書けば実行できます。次に、スコア表示画面などで現在のスコアを取得します。callback)この関数には戻り値がありません。ランキングデータをNCMBから取得してきて、QuickRankingのクラス内部に保存します。保存が完了するとIsRankingDataValidのフラグがtrueになります。この処理もネットワークに接続するため、値の取得には多少のタイムラグがあります。SaveRankingの処理のように、callbackへデータを取得する関数を登録してもよいでしょう。QuickRanking.GetRankingDataByText()ランキングを簡易に取得する関数です。戻り値がstringです。ランキング形式に成形されたstringデータが取得できるため、このままuGUIのText.textに流し込んでやればランキング画面が完成します。こちらで取得できるランキングはフォントによってタブ区切りがガタガタになってしまいます....。バラで保存してあるクラスRankingDataのリストが返ってきますので、適宜利用して下さい。サンプルQuickRankingのパッケージには、どのようにランキング用のデータを保存・取得するかが分かりやすいサンプルゲームがあります。SampleGame.sceneを開いてみてください。こちらが「タップした回数を全世界で競う」という神ゲーです。「Tap!!」ボタンをひたすらタップして、タップして、タップしたやつが強者です。Nameに名前を入れて、「Tap!!」ボタンをタップします。私のタップ力は21回でした。Score」ボタンを押すと、その名の通りプレイヤーの成績がNCMBへアップロードされます。Ranking」ボタンが押せるようになります。Ranking」を押すとこちらの画面になります。自分のスコアは、赤く着色されます。いまのところ私が全世界で一位のようです。Count」は、これまで何人がこのランキングに登録したかをカウントしたものです。GGJで作ったゲーム、世界でいったい何人の人が遊んでくれたか知りたいですよね?自分のゲームを起動すればすぐ確認できます。(今回の実装では点数ゼロの人もカウントされるため、ランキングの数と食い違ってます、すみません)ゲーム提出時の諸注意さて、グローバルゲームジャムは「作ったゲームをGGJ公式サイトにアップロードする」「一緒にソースコードをCCライセンスでアップロードする」という掟があります。Key)をNCMBSettingsゲームオブジェクトから必ず取り除いてください!APIキーが流出すると、そのゲームのデータを誰でも操作できるようになってしまいます。2.0としているため、GGJが求めるCCライセンスと合致しません。そのため、Unityプロジェクトファイルの以下フォルダとファイルを削除してください。含まれる下記のファイルまとめこのスクリプトを使えば、あなたの作ったゲームに速攻で全世界ランキング機能を実装できます。GGJ用に本記事を執筆しましたが、もちろんGGJに関係なく、今あなたが作っているゲームアプリに適用していただいてもかまいません。サンプルゲームは私の考えた神ゲーなので、このままアプリストアにアップするのは勘弁してくださいね。本記事では詳細は省きますが、データは管理画面から閲覧することができます。(クリックで拡大)もちろん、GGJにはランキング機能だけ使ってくれということはありません。そのデータの交換のためにNCMBを使うのもありです。時間の許す限り、いろいろ触ってみてくださいね。Tumblr関連記事2020-01-24会員管理のセッション切れに対応したコードの書き方(JavaScript)会員管理のセッションは最長でも7日間となっています。Service)とは、スマートフォンアプリでよく利用される汎用的な機能をSDKとクラウドから提供するサービスです。backendのちょっと便利な使いかた・非公式SDKやアプリ開発の関連情報などをお届けするブログです。※記事内には、サポート対象外の内容も含みます。本ブログではコメント機能を公開しておりません。アプリ開発を行う上での課題解決には、ユーザーコミュニティやもくもく会などもご活用ください。LIMITEDスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。