2014年10月14日

iTunes 対応 (14) | ウィークリーリーダーボード、できるかな?

さて、前回は結構普通のリーダーボード導入出来ちゃいました。
でも、iTunesConnect の機能として、週間リーダーボードとか、期間限定ランキング、出来るのかと思ってたんですが、どうも無いみたい。
ちょっと、その辺りを私なりにトライしてみたいと思います。


さて、どうしよう?
基本的な考え方として、サーバーを持ちたくないんです。
なんで、今 iTunesConnect で提供されてる機能でなんとかしたいんですが....

....そして20分後。
ちょっと考えてみた所、リーダーボードIDをなにか日付けに関連付けて名前を付けちゃえばいいのかな?
なんて思ったんですが、この方法でトライしてみましょうかね?
(なんか、問題もありそうなのも理解はしてるんですが...)

じゃ、具体的にはこうしましょう!
デバイスのカレンダーから、西暦と一年の第何週目か、っていう情報をGet。
で、その情報を元に、リーダーボードIDをデバイス側で生成してリポートする。
管理側も、その情報に合わせたIDを、毎週 iTunesConnect で設定する。

そんな感じで、一応サーバー無しでも対応できるのかな?
ランキングで、何かゲーム内コインを上げる訳でも無いし、細かいチートはガン無視の方針で!

じゃ、こんな仕様で作ってみましょうかね!!


リターンオブObjective-C!現在の西暦と週番号をGet!!
さて、まだまだ苦手な Objective-C ですが、リサーチしてみると、結構便利なフレームワークが準備されてるみたいです。
で、今回必要そうなのは、NSDate, NSCalendar, そして NSDateComponents くらいでしょうかね。
あと、この辺のドキュメントも参考にしましたよ。
で出来上がったコードはこれ。
Screen Shot 2014-10-14 at 1.18.56 AM.png
今日の日付けを NSDate でゲット(today)して、その日付けから、西暦と週番号のコンポーネントを取得(comps)。
で、最後に西暦と週番号を連結して、"YYYY_WW" フォーマットで Unity に返す形ですな。

このネイティブコードを、Unity から呼ぶんですが、まえにネイティブプラグインのテストで言語設定を取って来た奴と一緒ですね。
また DeviceinfoPluginBinding クラスに追加しちゃいます。こんな感じで!
Screen Shot 2014-10-13 at 1.24.06 PM.png
29〜30行目がプラグイン用の extern 宣言で、実際のコールは 49行目。
これをまた、GameManager の ゲームスタート時の関数、StartGame内でコールしてます。
Screen Shot 2014-10-13 at 11.00.40 PM.png
で、ここで所得した文字列情報を、前に作ったデバッグ表示を使って画面に表示!

どうかな?動くかな...
IMG_9235.PNG
おっ、出てるっぽい!でも今何週目か知らないんだよね...
ちょっとサーチすると、ここで確認出来るのかな?

合ってるみたい!


ウィークリーリーダーボードをiTunesConnectで設定
じゃ、実際のリーダーボードを設定しましょう!
ちょっと、デバイスの時間を変えるのも面倒なんで、まずは来週のリーダーボードだけ設定して、現在のリーダーボードが未設定だった場合のテストから...

存在しないリーダーボードに対してリポートしてますが、特に問題はなさそう。

じゃ、今週分のリーダーボードのidと一致するリーダーボードを追加してみましょう。
ITC_leaderboard.png
ちょっと、知らない間に、ライフタイムの累計スコア用リーダーボードも出来てて、今回の今週用のリーダーボードを含めて、計4つのリーダーボードが存在してます。
IMG_9246.PNG
まずは小手調べに少なめのスコアでゲームオーバーに
IMG_9248.PNG
するとリーダーボードは...
IMG_9249.PNG
ちゃんと、今週のリーダーボードだけアップデートされてますね!
じゃ、今度は1ゲームのハイスコアも更新する様なスコアを記録してみますね。
IMG_9251.PNG
リーダーボードはどうかな....?
IMG_925222.PNG
オールタイムハイスコア
IMG_9253.PNG
ウィークリーリーダーボード
オッケー!!
ちゃんと2つのリーダーボードが更新されました!

一応、こんな感じかなぁ?
今回の例で言うと、43週目のリーダーボードを iTunesConnect に作った時点で見えちゃうのがちょっと予定外かなぁ。
ま、問題ないんだけど、できれば隠せる機能があるといいんだけどなぁ〜。

あと問題も2点ほど。
  1. リーダーボードを delete したり add したりは、マニュアルで毎週やんないといけないんでちょい面倒。
  2. 多分、リリースするんであれば、リーダーボードID も、多少暗号化が必要かもね。

じゃね!

        にほんブログ村 ゲームブログ×PlayNCBlogへ
 初めてみました。よかったらクリックお願いね ♪


レベルアップ!
posted by やまけん at 10:32| Comment(0) | Unity | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: