UnityでのアツマールAPIの備忘録
こちらでは、『人狼ゲーム -八つ目の大罪-』 をアツマールに投稿した際の技術備忘録です。
ドワンゴが運営するニコニコ動画にあるRPGアツマールはWebGLでビルドしたUnity作品をアップロードすることができます。通常のWebGLでアップロードしたゲームの場合、サーバセーブが保存できませんがアツマールAPIを使用することでサーバセーブが可能になります。また、ニコニコ動画特有のコメントの制御やスコアボード、外部リンクの表示の利用も可能になります。
詳細は、アルマールの公式API仕様書、旧仕様書を参照願います。
【技術協力】アツマール運営者様、山田太郎山様、あるふぁ様 に感謝いたします。
アツマール用プラグイン導入方法
こちらからUnity用のプラグインをダウンロードします。
次にファイルを展開しUnityのPluginフォルダに「AtsumaruCallAPI.jslib」「AtsumaruPlugin.cs」の2つのファイルを入れてください。
こちらのプラグインで、コメント制御、スコアボード、外部リンクが使用できるようになります。
サーバ保存に関しては、
山田太郎山様の「PlayerPrefsAtumaruプラグイン」を使用してください。
コメント制御をする
まず、大きなシーンの始まりで以下を実行します。参考として、ツクールMVでは"マップ"毎に実行されているようです。通信が発生しますので概ね10秒以下で連続発生しない程度に呼び出すと良いと思います。八つ目の大罪では、章の始まり毎に呼び出しています。
//シーン名の切り替えをする。 Atsumaru.Comment.ChangeScene("{シーン名}");
このままでは、大きなシーンの切り替わりの最初に全てのコメントが流れてしまいます。アドベンチャーゲームやノベルゲームなどでは、セリフなどの文脈に合わせてコメントが流れてほしいです。八つ目の大罪ではクリック毎(文章が切り替わる毎)に以下を呼び出しています。{文章}にはそのまま文章(セリフ)を放り込んでいます。プラグイン側でMD5のハッシュ値に変換し、ハッシュ値をアツマールAPIに送り込んでいます。(そのままだと、長すぎたり短すぎたりでエラーが起きたため)
//文脈に合わせた文字が流れるようにする。 Atsumaru.Comment.pushContext("{文章}");
スコアボードを使用する
アツマールにスコアボードが実装されました。スコアボードを使用することで簡単にランキングを実装することができます。
//スコアを送信する。 //{boardId}は1〜10の整数の文字列型 //{score}は整数の文字列型 Atsumaru.scoreboards.setRecord({"boardId"}, {"score"});
例えば、stageNo(int型)を{boardId}として、
score(int型)を{score}とした場合は、以下のように送信すると良いでしょう。
//スコアを送信する。 Atsumaru.scoreboards.setRecord(stageNo.ToString(), score.ToString());
また、以下でスコアボードを表示することが可能です。
//スコアボードを表示する。 //{boardId}は1〜10の整数の文字列型 Atsumaru.scoreboards.display({"board_id"});
※公式APIリファレンスにある、スコアボードからデータを読み込み「window.RPGAtsumaru.experimental.scoreboards.getRecords(board_id)」に関しての実装方法に知見ある方おられましたら教えて頂けると助かります。Twitter @s_shigusa
※注意点
- 現状、スコアボードは1〜10の10個しか使うことができません。
- 現状、降順のランキングしか実装することができません。(値が大きいほどランキング上位)
- 現状、ランキングリセットはできません。
外部リンクを表示する
ゲーム上から外部リンクを開きたい場合。
八つ目の大罪ではタイトル画面のTwitterリンクで使用しています。
//URLを開く。 Atsumaru.OpenURL(url);
サーバセーブプラグイン
山田太郎山様の「PlayerPrefsAtumaruプラグイン」を使用することでアツマール上でのサーバセーブが可能となります。Unity作品をアツマールに投稿する際は必須とも言えるプラグインです。