第1回「RPGツクールMV×rot.js」

はじめに

このブログはRPGツクールMVの「ローグライクゲーム用プラグイン」の完成を目指して連載していきます。過去の偉大な先人たちの知恵を借りながらプラグインの作成を頑張ってみます。参考にしたWEBサイトは以下のとおりです。

  • rot.js:https://ondras.github.com/rot.js/hp/
    • ローグライクゲーム用のJAVASCRIPTエンジンであるrot.jsを公開しているWEBサイトです。rot.jsでは,「ダンジョン生成アルゴリズム」「ターン管理アルゴリズム」「パス探索アルゴリズム」などの超便利アルゴリズムを提供してくれます。マジで神。
  • Ondřej Žára – Homepage:http://ondras.zarovi.cz/#games
    • 上記のrot.jsの製作者Ondřej Žára氏のWEBサイトです。7日間でローグライクゲームを作成する(ハッカソンみたいなものかな?)「7 Day RogueLike Challenge」にて作成したローグライクゲームが公開されています。rot.jsの利用方法の勉強になります。
  • Coding.Cookies:http://www.codingcookies.com/
    • Javascriptによるローグライクゲームの実装を解説しているWEBサイトです。これまたrot.jsの利用方法の勉強になります。本ブログの大部分はこのWEBサイトにて解説されている内容をRPGツクールMV向けに再構築した形となっています。

本ブログで作成するプラグインは参考サイトの一番目に挙げたrot.jsを利用します。第1回である今回はRPGツクールMVにてrot.jsを利用するところまで実装します。RPGツクールMVとrot.jsのそれぞれのバージョンは以下のとおりです。

RPGツクールMV:コアスクリプト ver. 1.5.1

rot.js:タグ=2e423bc6af85e8fbdd166a9abc0ea509b9594ebe

rot.jsの利用

まず,rot.jsを利用するためにRPGツクールMVのindex.htmlを以下のように書き直します。

私はこのようにindex.htmlを書き直していますが,必ずしもこうしなければならないわけではありません。例えば,RPGツクールMVを起動し,プラグインの最上段に「rot.js」を読み込んでもかまいません。ただ,なんとなく外部ライブラリを利用する場合,「index.htmlを書き直す方が正しいんじゃないかな~」と思ったため,このような実装にしました。

メインエンジンプラグインの作成

これでrot.jsを利用できるようになりました。rot.jsは前述のとおりローグライクゲームに利用できる様々なアルゴリズムが実装されていています。rot.js利用の第一歩として,rot.jsをブラウザが対応しているかどうかを調べるメソッド『ROT.isSupported()』を使ってみます。また,ROT.isSupported()の結果をコンソールに表示するだけでは味気ないので,結果をRPGツクールMVの変数に代入して「メッセージを表示」で出力するようにしてみます。

js/pluginsフォルダの中に「KURAGE_RoguelikeEngine.js」を用意します(以降,製作者名を示す接頭辞のKURAGE_は省略していきます)。RoguelikeEngine.jsの内容は以下のとおりです。

以下にソースコードの解説をしていきます。

  • 1~7行目:Javascriptのお作法
    • Javascriptのお作法のような記述です。
    • いわゆるグローバル汚染を防ぐために書いています。
      • このあたりの書き方は好みもあると思うので,好きなように書いて良いと思います。
    • Javascriptのグローバル汚染防止については以下のWEBサイトが参考になります。
      中上級者になるためのJavascript【知識編】https://qiita.com/kenju/items/c7fad62a12cc2809b507
  • 8行目と最後:(function($) { …… })(KURAGE.RoguelikeEngine);
    • これまた私流の書き方であり好みの問題です。
    • このような書き方にすることで「このプラグイン内でのグローバルな変数は必ず『$.』の接頭辞から始まる」ようにしています。
    • また,例えばこのプラグイン内で『$.param1』として使用した変数は,外部のプラグインから『KURAGE.RoguelikeEngine.param1』で参照することができます。
  • 9~XX行目:プラグインパラメータ
    • プラグインパラメータの読み込みと設定を行っています。
    • 現時点では特に利用していません。今後,拡張するかもしれないため記述を残しているだけです。
  • YY行目~:ローグライクエンジンの開始
    • プラグインコマンド「KURAGE_RoguelikeEngine start」を実行すると,RPGツクールMVの変数1番にROT.isSupported()の結果を代入します。
    • プラグインコマンド「KURAGE_RoguelikeEngine end」も実装しています。ただし,こちらは特に何も動作しません。

最後にRPGツクールMVでの設定を行います。

まず,作成した「KURAGE_RoguelikeEngine.js」をプラグイン管理画面から登録します。続いて,マップ上にイベントを作成し,変数1の内容を確認するメッセージをプラグインコマンド実行前後に挿入します。

プラグインコマンドの実行後に変数1の内容が「true」になっていれば成功です。

まとめ

このブログではRPGツクールMVとrot.jsを使ってローグライクゲームを作るためのプラグイン作成をしていきます。第1回では,RPGツクールMVからrot.jsを利用できるようにしました。また,rot.jsを使用可能か調べるメソッド『ROT.isSupported()』の結果をRPGツクールMVの変数に代入し,rot.jsが利用できていることを確認しました。