データベースMOD作成解説 v1.10.x
バージョン1.5.0から、MODをより作りやすく、導入しやすくするためにシステムを変更しました。
本記事では新しくなったMODの作り方と使い方を解説していきます。
全体的にツクールを触ったことのある人向けの内容になっています。MOD制作に興味のない人は読み飛ばして大丈夫です。
変更可能範囲
- www/dataフォルダの中身(マップイベント、マップ地形、アイテム、コモンイベント、その他データベース)
- www/jsフォルダの中身(プラグインの追加、既存の処理の上書きなど)
- 画像や音声などの追加・差し替え(www/img, www/audioなど)
今までは改造するためにどうしてもスクリプトの知識が必要でしたが、今回のアップデートでツクールMVのエディタを弄って改造できるようになりました。ツクールを触ったことのある人なら大分作りやすくなったかと思います。
本記事では主にwww/dataフォルダのデータベースの改造方法について解説していきます。
www/jsフォルダの中の変更はJavascriptやnode.jsの知識が必要です。
画像や音声の差し替えは現在直接上書きの形になっています。
いい方法が見つかったら、最終的にmodsフォルダにすべてのファイルを入れるだけで動くようにしていきたいです。
必要なもの
ゲーム本体
「はづみと子作りの国」か「Hazumi and the Pregnation」
RPGツクールMV(RPG Maker MV)
体験版(Trials)
JP
https://store.tkool.jp/dl#tabs-0
EN
https://www.rpgmakerweb.com/download/free-trials/trial-rpg-maker-mv
製品版(Products)
(たびたびセールもされています)
https://store.steampowered.com/app/363890/RPG_Maker_MV
https://store.tkool.jp/a/rpgmaker/mv
https://www.rpgmakerweb.com/products/programs/rpg-maker-mv
製作開始
準備編
「はづみ」を通常通りダウンロードして、zipファイルを展開します。
Steam版ならSteamクライアントから、右クリック→管理→ローカルファイルの閲覧、でインストールしたファイルが見られます。
バックアップ
PPLSSフォルダの中にゲームデータが入っているのですが、制作を始める前に、何も変更を加えていないPPLSSフォルダをコピー(バックアップ)しておきましょう。
あとで検証する時にバニラ(無変更)の状態のプロジェクトがあると便利です。
dataフォルダの差分準備 ver1.7.x
ver1.7.xから、ツクールのエディタで編集した部分だけを取り出してMODとして出力する機能を追加しました。そのための準備をしましょう。
www/dataフォルダの中にあるxxx.jsonファイルすべてを、www/data/vanillaフォルダの中へコピーします。
(3/27現在1.7.xはまだ配布されていません。アップデートまでお待ち下さい)
ツクールの起動
ツクールMVがインストールされていれば、PPLSS/www/Game.rpgproject
を開けばツクールのエディタが表示されるはずです。
改造する
さっそく改造してみます。
今回はサンプルとして、APを全回復するアイテム"栄養ドリンク"を追加して、コンビニで買って飲めるようにしてみようと思います。
※ツクールMVの基本的な扱い方についてはここでは取り扱いません。
インターネット上に初心者講座などの情報が充実しているので、Google先生に聞いてみてください。(分からない部分を個別に質問いただいても構いません。)
ツクール公式の初心者講座
ツクールMVエディタの、ヘルプ→チュートリアル、にチュートリアルもあります。
データベースを編集
アイテムID 401番に「栄養ドリンク」を、コモンイベント401番に「栄養ドリンク」を使用した時の処理を作ってみました。
マップにイベントを追加
イベントを新規あるいは既存のものを書き換える形で追加します。
今回はコンビニにドリンク購入イベントを追加してみました。
作ったデータベースを出力
制作とテストが終わったらツクールでデータを保存💾して、作ったものを配布できるようにMODとして出力しましょう。
ツクールのテストプレイボタン▶︎でゲームを起動し、"F8"キーか"F12"キーを入力します。
するとDeveloper Toolsというウィンドウが出てくるので、上のタブ一覧からConsoleを選択します。
このような画面になるはずです。
カーソルがチカチカしている部分に、exportAllDiff()
を打ち込みます。
Enterキー⏎を押すと処理が実行されて、PPLSS/www/MOD_output/年_月_日__時_分_秒
のフォルダにそれぞれのファイルが出力されます。
(ver1.6.xまでは出力するデータを手動で選ばなければなりませんでしたが、1.7.xからはdata/vanilla
とdata
の内容を比較して、違っている部分だけを出力してくれるようになりました)
modの整形
作ったMODをテストする
ここまで来れば完成は目前ですが、その前にきちんと動くかどうかテストをしてみましょう。
テストするためには、MODできちんとデータが上書きするかを確認するために、まっさらな(何も変更されていない)データベースを使う必要があります。
はづみ本体をダウンロードした直後のプロジェクトを使うか、一旦/data
フォルダの中の.jsonファイルをどこかへ退避しておいて、/data/vanilla
の中身を/data
にコピーするのも楽です。
あとは先ほど作ったwww/MOD_outputの年_月_日__時_分_秒
フォルダをwww/mods
フォルダに放り込みます。テスト用のエディタを開き、テストプレイボタン▶︎から起動してみます。
ツクールのエディタ上では変更されていないのに、ゲーム上では変更されていたらテストは成功です!
配布用にまとめる
テストが終わったらいよいよ箱詰めです。
www/MOD_outputに出力された、年_月_日__時_分_秒
フォルダをリネームします。好きな名前(半角英数が望ましい)にしてもいいですし、後述するように他の形式のファイルもある場合、data
などにリネームしておくといいかもしれません。
データベースMODとjavascriptMODは、www/mods
フォルダ内にどのような形で置いても動作します。readmeのテキストファイルなどが含まれていてもゲームから読み込む際は除外してくれます。
imgやaudioの追加・差し替えをする場合は、今の所wwwフォルダから直接書き換える必要があります(画像や音声をwww/modsフォルダに入れても動作しません)。
なので、imgやaudioの変更がある場合は、例えば以下のようなディレクトリ構造にして、ユーザーにはwwwフォルダをコピーしてもらう、という形にするのがよいかと思います。
ver.1.10.0より、画像や音声もmodsフォルダに入れて動作するようになりました。
audioやimgフォルダの中にバニラと同じ階層で画像や音声ファイルを入れてください。
例えば立ち絵を改変した画像を追加する場合は、
myMod/www/img/pictures/stand/modfile.png
というファイル構造にします
(wwwフォルダ自体は必要ないけれど、wwwフォルダの中にdataやimgフォルダを入れた方がわかりやすいかと思います)
PPLSS/www/mods/yourMOD
├readme.txt
└www
│audio
│└se
│ └audiofile.ogg
├data(/MOD_outputに出力されたフォルダ)
├js
│└plugins
│ └javascriptfile.js
└img
└pictures
└stand
└standfile.png
作ったmodフォルダをzipに固めるだけでも済みますが、readmeも作っておくとよいでしょう。
readmeには
@title: 作ったmodの名前
@help: modの内容説明
@auther: 著作者の名前
@version: modのバージョン
@game version: modを作った時のゲーム本体のバージョン
@install: 導入方法
@uninstall: 削除方法
@licence: MITライセンスなど。他の人が後から使いやすいようにあったほうがいいです。(MODの配布に適したライセンスを現在探しています。)
@ゲーム入手先: 「はづみ」販売サイトのURL
あたりが書かれていれば親切だと思います。全部なくてもよいです。公式MOD/database_mod/database_sample
にもサンプルを付けておきました。
.txtファイルはmodとして読み込まれないので、modフォルダ内にテキストを置いてしまっても大丈夫です。
あとはmodフォルダを右クリック→送る→圧縮(zip形式)フォルダー
でmodの完成です!
zipファイルをどこかにアップロードして、宣伝して、他の人にも遊んでもらいましょう。
配布の際は一応、/MODについて/MOD利用規約.txt
に目を通しておいてください。
難しく書いてありますがわかりやすく3行でまとめると、
・元のゲーム(はづみ)なしで成り立つコンテンツにするのはだめですよ
・MODの配布・利用で起こったことについて、みひらぎ亭は責任を取りませんよ
・配布されたMODをみひらぎ亭が勝手に本体に取り入れることはしませんよ
といった内容です。
長くなりましたが、解説は以上になります。
テクニック集
ツクールMV用プラグインを追加したい
ツクールMV向けに作られたjsファイルのプラグインであれば、www/modsにコピーすることで追加することができます。ファイル構造は問わないため、サブフォルダの中に入れても大丈夫です。
ただし"プラグインパラメータ"の設定ができないため、ほとんどの場合は手動で中のスクリプトを書き換える必要があるでしょう。
また配布されているプラグインの場合、利用規約をよく確認のうえご利用ください。
データが被らないようにするために(競合防止)
データベースのID毎に上書きする方式なので、同じデータ、同じID同士で上書きしてしまうと片方のデータが上書きされてしまいます。
database modに限りますが、別ファイルで同じデータを上書きしてしまった際にはコンソールに赤文字で知らせるようにしたので、IDをずらすなどして対応ください。
他のMODを編集したい
自分が昔作ったMODを修正したり、他の人が作ったMODを修正・翻訳したりしたい場合。
"MODによって上書きされたデータベースを元にエディタで編集できるようにする"コマンドを作りました。importAllJSONFromMods()
です。コンソールに打ち込んでください。
www/modsフォルダのMODの内容を含んだjsonファイルがwww/data/JSON_import
に出力されます。
3/30追記:
マップのイベント中(オープニングイベントなど)にimportAllJSONFromMods()
を走らせると処理が終わった後にエラーが出ます。
マップを書き出すためにイベント中に他のマップを読み込んでいるのが原因です。
特にimportAllJSONFromMods()
コマンドの内容に影響を与えるようなものではないですが、タイトル画面でコマンドを打つのが無難です。
JSON_importに出力されたxxx.jsonをwww/data
フォルダに上書きすることで、エディタ上でもMODで編集されたデータが見れるようになります。
当たり前ですがdataフォルダに上書きすると、元のデータが上書きされてしまうので、既に編集中のデータがある場合はバックアップを取るなどして対策ください。
他の人のMODを元に新たにMODを作ったり、MODをマージ(結合)したものを配布する時は、特に元MODの著作権(ライセンス)に気を配ってください。
他のMODを前提MODとして、新たにMODを作りたい
他の人が作ったMODを一部分だけ修正したい、巨大なMODに追加する形でMODを作りたい、などの場合。
前提となるMODをmodsフォルダに入れて、importAllJSONFromMods()
コマンドを打ち込みます。
www/data/JSON_importの中身をwww/data/vanillaフォルダに上書きします。
後はエディタで編集した後、exportAllDiff()
すれば、www/MOD_outputに前提MODとの差分のみが出力されます。
ただ、ロードオーダー(MODのロード順設定)の概念がまだないので、前提MODと重複する内容がある場合、うまく上書きできない可能性があります。
この記事にはコメントできません。