unityroomに投稿するゲームにスコアランキング機能を追加できます。
このページではスコアランキングの準備と実装方法を説明します。
スコアランキング機能の紹介はこちら https://blog.unityroom.com/entry/2024/01/28/003551
スコアランキングの実装方法
unityroom側の準備
ゲームを登録する
unityroomにログインし「ゲームを登録」ボタンからゲーム情報を登録してください。すでに登録済みの場合は不要です。
ゲーム設定ページを開く
投稿ゲーム一覧から対象ゲームの設定画面へ行きます
APIを有効化する
ゲーム設定ページのサイドメニューから API利用設定
を開きます。
APIを使用する
を選択して保存します。
認証用キーを作成する
ゲーム設定ページのサイドメニューから APIキー
を開きます。
HMAC認証用キーを発行する
を押してキーを生成します。
スコアボードを作成する
ゲーム設定ページのサイドメニューから スコアランキング
を開きます。
スコアボードを新規作成
します。
ゲームごとに最大2つまでスコアボードを作成できます。
HMAC認証用キー
ボードNo
スコアの並び順
をメモしておきます。(後ほど必要になります)
ボードNoは1〜連番が自動的に割り振られます。編集することで任意の数字に変更できます。
複数のスコアボードを作成した場合、ゲームプレイ画面にはボードNo順に並びます。
ここまでの設定を確認する
ゲーム設定ページのサイドバーにある「ゲームを表示」からゲームページへ移動できます。
スコアボードの作成が完了していれば、スコアランキングセクションとスコアボードが表示されます。(まだデータはありません)
もしこの時点で表示されていない場合はスコアボードの作成ができていない可能性がありますのでここまでの手順を再度ご確認ください。
ここまで問題なければUnityでの実装に進みます。
Unityでの実装
スコア送信機能を実装する(Unity)
ゲーム(Unity)にスコア送信処理を実装します。
Unity用のライブラリを用意しましたので、ぜひご利用ください。
ライブラリの使い方は上記リンク先の説明(README)をご覧ください。
現時点ではスコア送信のみで、ゲーム内でランキングを取得したりはできません。
Unityエディタ上で実行した場合、サーバーには送信されず、下記のようなログが表示されます。
1プレイの中でスコアが減ることがないゲームの場合、ゲームプレイ中にこまめにスコア送信を行うとより賑やかになります。(同時にプレイしている他のプレイヤーの画面にリアルタイムに反映されていきます)
動作確認
アップロードと動作確認
- ゲームをWebGL形式でビルドし、unityroomにアップロードします。
- ゲームをプレイします。(スコア送信処理を呼び出します)
- ゲームページのスコアランキングセクションに自分のレコードが追加されれば成功です。
スコアランキング設定ページにも直近に登録されたレコードが表示されます。
ここから一括で削除(ランキングのリセット)ができます。
トラブルシューティング
スコア登録がうまくいかない場合
スコア登録がうまくいかない場合は下記を確認してください。
1. ブラウザのネットワークログを確認
スコア送信後にブラウザの開発者コンソールを開き、ネットワークタブを開きます。 画像はChromeですが、他のブラウザでも大体似た感じです。 scoresと名前のついた通信ログを探します。 もしログがない場合はUnity側のスコア送信処理が呼ばれているか確認してください。
2. Name(scores)をクリックして詳細を開きます
3. ReponseタブまたはPreviewタブでサーバーからの応答を確認します。
成功している場合はstatus=okが返されます
失敗している場合は何かしらのエラーが返されます。後述するエラーコードに従って対応してください。
unityroomのサーバーに到達できていない場合は全く違うエラーが表示されているかもしれません。上記で対応方法がわからない場合はご連絡ください。
エラーコード
- 10101 hmac_key_missing 400 Bad Request HMAC認証用キーが生成されていません。ゲーム設定画面にて生成してください。
- 10102 api_not_enabled 403 Forbidden ゲーム設定にてAPIが有効化されていません。ゲーム設定画面にてAPIを利用する設定を行ってください。
- 10201 login_required 401 Unauthorized ログインが必要です。unityroomにログインしてからリトライしてください。
- 10202 login_expired 401 Unauthorized ログイン情報の有効期限が切れました。ページの再読み込みをしてください。
- 10203 user_id_missing 401 Unauthorized ログインユーザーIDが指定されていません。unityroomにログインしてからリトライしてください。
- 10204 user_not_found 401 Unauthorized ログインユーザーが見つかりませんでした。unityroomにログインしてからリトライしてください。
- 10205 user_data_share_not_allowed 401 Unauthorized プライバシー設定「ユーザー情報の提供」が無効になっています。本機能を利用するにはユーザー情報の提供を有効にしてください。
- 10301 signature_invalid 400 Bad Request HMACが一致しません。生成方法が正しいか確認してください。
- 10302 signature_expired 400 Bad Request HMACの有効期限が切れています。新しく生成してからリトライしてください。
- 10303 rate_limit_exceeded 429 Too Many Requests 呼び出し回数の上限に達しました。一定時間を空けてリトライしてください。
- 20201 game_id_invalid 400 Bad Request ゲームIDが無効です。unityroom上でゲームを実行してください。
- 20202 game_not_found 400 Bad Request ゲームが見つかりませんでした。unityroom上でゲームを実行してください。
- 30101 board_no_missing 400 Bad Request ボードNoが指定されていません。リクエストURLが正しい確認してください。
- 30102 scoreboard_not_found 400 Bad Request スコアボードが見つかりませんでした。存在しているボードNoを指定してください。