こんにちは。
先日フリーゲームの主な投稿先となっていたゲームアツマールがそのサービスを終えました。
アツマールは気軽に遊べるとかコメント貰いやすいとかそこにしかない機能があったりと良いところがたくさんあったので非常に残念ですね。
その中でもスコアアタックのゲームを公開していた私にとって特筆すべきはやはりランキング(スコアボード)機能でした。
約半年前にサービス終了が発表されてからなんとかしたいなーと思ってて、実は素材のダウンロードページを作るために試行錯誤しているときに同時にランキング機能も構想していたのです。
なぜならその時Googleドライブがデータサーバーとして利用できるということと、その方法をネット上で見つけていたからです。
GoogleスプレッドシートはGoogleAppsで操作することができ、そのGoogleAppsはJavascriptで外部から実行できます。つまりRPGツクールMZでもGoogleスプレッドシートを操作、情報の取得ができるということ。
実際、データをやりとりするところまでは成功していたのですがその他のところで懸念事項があったので「まぁいつかできればいっか」と一旦放置することを考え始めました。
そんなとき、同じ原理でランキングを実現するプラグインが公開されたのです。
それがこちら↓
名称:ランキングプラグイン
ライセンス:MIT
作者:半減 様
プレイヤー識別から降順/昇順などいろいろ設定ができる優れもの。原理が前述したものと同じなのでプラグインの導入以外にGoogleドライブ側の仕込みが必要ですが、丁寧な導入手順書が同梱されておりますのでその通りに進めればOKです。
プラグインコマンドの説明はツクールMVを想定したものとなっておりますのでツクールMZでは”ツクールMVのプラグインコマンドを実行する方法”で行う必要があります。
公式プラグインのEventCommandByCode.jsを経由するか、或いはスクリプトを使って実行します。方法のご参考↓
これでランキングプラグインが機能します。
手順書にもありますがプラグインパラメータはこんな感じ。
(IDを変数240番へ、プレイヤー名を241番へ格納する例)↓
プレイヤー識別はidを発行して変数に格納することで行われており、変数に値が入っていればidの再発行はされない仕組みとなっておりますが、NEW GAME など変数がリセットされる状況では当然idもリセットされます。
なので同ゲーム内では必ず1プレイヤーである、として認識させたい場合には工夫が必要となります。
それを簡単に実現できるプラグインがこちら↓
名称:グローバルプレイデータ管理プラグイン
ライセンス:MIT
作者:折尾楽太郎 様
データを各セーブ間で共有できるプラグインで、変数の値をNEW GAMEへ持ち越すこともできます。
おそらくオプションの設定状態など1ゲーム1データの値を保存するところに変数も一緒に保存するっていう原理なんだと思います。たぶん…。
プラグインパラメータがこんな感じになります↓
(IDとプレイヤー名をそれぞれ変数240番、241番に格納している場合の例)
注意点は保存のタイミングも同一ということ。変数に値を入れた直後に”タイトルへ戻る”としてNEW GAMEをした場合、値が持ち越されない可能性があります。
なので変数に値を入れた直後に保存を実行してやりましょう。
保存方法はスクリプトで下記を実行します。
DataManager.saveGlobalInfo();
これらを組み合わせることにより同ゲーム内は同プレイヤーと認識させることができます。その場合、IDの割り振りはゲーム開始直後が良いでしょうね。
ID割り振りのイベントコマンドはこうなります(EventCommandByCode.js使用)↓
無論ですが、ゲームを再ダウンロードした場合はまた新たなプレイヤーとなってしまいます。しかしその対策はもうアカウント登録とかってレベルになってくるのでやむを得ないでしょう。
というわけで、スコアボードが実装可能になったので機能を備えた旧作を近日中に更新しておこうと思います。まぁリリースが2年近く前なので今更感はあるけどいちおうスコアアタックゲームなのでね。
同じ原理で疑似対戦も再現可能ですけどそれはいいや…w
らくがき貼っておしまい。
ありがとうございました。