RPG ツクール MV 製のゲームでは RPGMMV-LiveSplit という専用のアプリケーションを利用することで、タイマー操作の自動化やロード時間の除去を行うことができます。
RPGMMV-LiveSplit は RPG ツクール MV 製ゲームのプラグインとして動作して、起動している Livesplit と自動的に通信をしてくれて、その通信によってタイマーの自動操作が行われます。
RPGMMV-LiveSplit でできること
基本機能
RPGMMV-LiveSplit を導入するだけで次の基本機能が有効になります。
- ゲームスタート時の自動スタート
- ゲームリセット(F5)時の自動リセット
- ロード時間の除去
- ゲームのオプション画面にタイマー自動操作に関する項目を追加
オプション機能
専用のスプリット条件ファイルによって、オプション機能も利用できるようになります。
- 指定した条件を満たした場合に自動スプリット
- ゲームスタート時以外での自動スタート
RPGMMV-LiveSplit 導入手順の概要
設定済みのファイルが配布されている場合はそれをインストールします。
設定済みのファイルがない場合は、MV-LiveSplit-GUI というアプリケーションを使って RPGMMV-LiveSplit のインストールやスプリット条件ファイルの作成を行います。
設定済みのファイルが配布されている場合
設定済みのファイルをインストールするだけで OK です。 インストールに成功すれば、ゲームのオプション画面内にタイマー自動操作に関する項目が追加されます。
インストールするファイル
必須ファイル
plugins.js
RPGMMV-LiveSplit を使うために、既存のファイルを置き換え or 書き換えします。
配布ファイルに plugins.js が含まれている場合
- (ゲームのインストールフォルダ)\www\js フォルダを開く
- フォルダ内の plugins.js ファイルを各自でバックアップ
- バックアップできたら、既存の plugins.js を配布されている plugins.js に置き換え
配布ファイルに plugins.js が含まれていない場合
- (ゲームのインストールフォルダ)\www\js フォルダを開く
- フォルダ内の plugins.js ファイルを各自でバックアップ
- 既存の plugins.js ファイルをテキストエディタなどで開く
- 最終行の ] のひとつ前の行の末尾に
,
を追加して改行
- 新しい行に
{"name":"LiveSplit","status":true,"description":"","parameters":{}}
と記入 - plugins.js を上書き保存
LiveSplit.js
- (ゲームのインストールフォルダ)\www\js\plugins フォルダを開く
- フォルダ内に LiveSplit.js を貼り付け
任意のファイル
Autosplitter.json
- ゲームの exe ファイルがあるフォルダを開く
- Autosplitter.json を貼り付け
ロード時間を除去したタイムを表示する際の注意点
Livesplit は内部的には Real Time と Game Time という2つのタイマーを持っていて、Real Time は普通のタイマー、Game Time は IGT やロード時間除去タイムを計測する場合に利用するタイマーです。
ロード時間を除去したタイムを表示する場合は、Game Time を表示するための設定が必要です。
ロード時間除去タイムのみ表示して普通のタイマーは不要の場合
- Livesplit 本体を右クリック
- Compare Against を開く
- Game Time を選択
これでタイマーに表示されている全てのタイムが Game Time のものになります。
ロード時間除去タイムと普通のタイムを両方とも表示する場合
両方とも表示する場合は、どちらがメインのタイムとして表示したいかで手順が変わってきます。
ここではロード時間除去タイムをメインのタイムとして普通のタイムをサブにした場合で説明します。逆にしたい場合はこの説明での Real Time と Game Time とを逆にして設定してみてください。
メインのタイムを Game Time に設定
- Livesplit 本体を右クリック
- Compare Against を開く
- Game Time を選択
サブの Real Time を表示するための設定
- Livesplit 本体を右クリック
- Edit Layout を選択して Layout Editor を開く
- + マークのボタンを押す
- Timer 内の Timer を選択
- 追加した Timer をダブルクリックして設定画面を開く
- Timing Method を Real Time にする
これでタイマーに表示されているタイムは基本的に Game Time となり、新たに追加した Timer は Real Time を表示する状態になります。
タイマー自動操作のための設定を自分で作る場合
専用の導入・編集アプリケーション MV-LiveSplit-GUI を使って RPGMMV-LiveSplit のインストールとスプリット条件ファイル Autosplitter.json の作成を行います。
注意
変更したらゲームを再起動
スプリット条件ファイルを変更したら、ゲームを再起動する必要があります。
RPGMMV-LiveSplit が動かないゲームもある
手元にあるいつくかのゲームで試してみたところ RPGMMV-LiveSplit の導入に失敗するゲームもあったため、RPG ツクール MV 製のゲームであればどんなゲームでも OK という訳でもなさそうです。
ゲームファイルはテキストエディタで開く想定
各判定条件の設定ではマップやスイッチ、変数などの ID や処理が記載されている場所を調べる必要があります。
ゲームファイルをツクールエディタで開けばこれらの情報を知ることができ、MV-LiveSplit-GUI のドキュメントはツクールエディタで開いている前提の説明がなされています。
しかし、ツクールエディタを使用するには RPG ツクール MV を購入するか日数制限のある体験版を利用するかが必要で、タイマー操作自動化だけが目的ならば使用期限がなく無料のツールで調査できることが望ましいです。
そこで、ここではツクールエディタを使わずにテキストエディタで開く想定で説明を行います。
ゲームファイルが暗号化されていたら難しい
ゲームファイルをテキストエディタで開いて判定条件に使用する値を調べる前提で説明しているため、ゲームファイルが暗号化されていてテキストエディタで開けない場合はここで説明する方法が使えません。
この説明記事にはかなりの意訳が含まれます
MV-LiveSplit-GUI の公式ドキュメントを参考にして説明文を書いている部分がそれなりにありますが、訳の正しさよりも操作や設定のしかたが伝わりやすいことを意識して意訳している部分が多くあります。
ゲームフォルダのオープン
MV-LiveSplit-GUI を使う場合に、まず最初にゲームフォルダを指定します。
- MV-LiveSplit-GUI を起動
- Open Game ボタンを押す
- ゲームの exe ファイルがあるフォルダを指定
RPGMMV-LiveSplit のインストール
- MV-LiveSplit-GUI がゲームフォルダを指定した状態にする
- Install Plugin ボタンを押す
Install Plugin ボタンの左にある表示が Plugin: Installed になればインストール完了です
RPGMMV-LiveSplit が動作することを確認
ゲームによっては RPGMMV-LiveSplit が動かない場合があるため、インストールしたら RPGMMV-LiveSplit がちゃんと動くことを確認しておきましょう。
- ゲームを起動する
- タイトル画面からオプションを開く
- 設定項目に Auto Start, Auto Split, Auto Reset があることを確認する
- Auto Start と Auto Reset を ON にする
- Livesplit を起動する(タイマーの設定などは特にしなくても OK)
- ゲームのタイトル画面でゲーム開始して、タイマーが自動スタートすることを確認する
- F5 キーを押してゲームをリセットして、タイマーが自動リセットすることを確認する
スプリット条件ファイル Autosplitter.json の作成
- MV-LiveSplit-GUI がゲームフォルダを指定した状態にする
- Add ボタンを押す
- Edit Split Point 画面でスプリット条件の設定を行う(詳細は後述)
- 設定ができたら OK ボタンを押す
- 必要な分だけ Add ボタンでスプリット条件を追加して設定
- Save ボタンでスプリット条件ファイルを保存
スプリット条件ファイルを保存した際にゲームを起動していた場合は、変更を反映するためにゲームの再起動が必要です。
スプリット条件 Split Point の設定
Add ボタン or Edit ボタンを押すと表示される Edit Split Point 画面でスプリット条件の設定を行います。
スプリット条件 Split Point と判定条件 Activator
スプリット条件ファイル Autosplitter.json は1つ以上のスプリット条件 Split Point で構成されていて、スプリット条件は1つ以上の判定条件 Activator を含みます。
基本的には判定条件 Activator はひとつで十分ですが、例えば、同じ内容のイベントが複数のマスに設定されていてそれぞれでイベント ID が異なっているような場合に複数の判定条件 Activator を設定します。
スプリット条件内の判定条件は or 接続です。
スプリット条件を設定する際の注意点
そのスプリット条件内の判定条件が満たされるたびにスプリットが行われるため、ひとつのスプリット条件を使いまわすこともできます。
しかし、1つのスプリット条件につき1回だけスプリットしたい場合には、複数回反応しないように注意して判定条件を設定しなければなりません。
Name
スプリット条件 Split Point を識別するための名前を付けます。
Default
チェック ON だとこのスプリット条件 Split Point がデフォルトで有効になります。チェック OFF だとデフォルトで無効になります。
Start
Game Start 以外の条件でタイマースタートする場合にチェック ON にします。
これが ON のスプリット条件が存在する場合はデフォルトのタイマースタート条件が無効になります。
Add
判定条件を追加します。このボタンを押すごとに、そのスプリット条件に判定条件が追加されていきます。
Transition
パラメータ
- From, To
- それぞれ移動の前後でのマップ ID を指定
マップ ID 一覧の場所
(ゲームのインストールフォルダ)www\data の MapInfos.json
MapInfos.json の中にマップ ID とマップ名が記載されていますがマップ名だけで意図したマップであることが断定できない場合は、同じフォルダにある Map***.json(*** 部分はマップ ID)というファイルを開いてゲーム画面に表示されるテキストと同じテキストがあるかを確認してみましょう。
注意点
実際のゲームの挙動が「暗転 → マップ移動 → 暗転明け」となっていて、この Transition ではマップ移動の瞬間に判定されます。
暗転中ではなくて、例えばドアに触れた瞬間などでスプリットしたいような場合は Event を判定条件にしましょう。
Switch
パラメータ
- Switch ID
- スイッチ ID を指定
- Any
- そのスイッチが変更されたら反応
- Value
- そのスイッチがこの値になったら反応
スイッチ一覧の場所
(ゲームのインストールフォルダ)www\data\system.json の switches 内に記載されいている順番に ID が割り当てられています。
ID は 0 スタートですが、ゲーム内で実際に使われるのは 1 からです。
スイッチ操作イベントの探し方
Event の項目を参照。
イベント検索用の正規表現
- 簡易版
\{"code":121,.*?\}
- 詳細版
\{"code":121,"indent":\d+?,"parameters":\[from,to,flg\]\}
検索したい対象に合わせて [from, to, flg] 部分を適切な値に置き換えてください。
- from, to
- 操作するスイッチ id 範囲、単独スイッチの場合は from と to は同じ値
- flg
- 0:on, 1:off
Variable
パラメータ
- Variable ID
- 変数 ID を指定
- Any
- その変数が変更されたら反応
- Value
- その変数がこの値になったら反応
変数一覧の場所
(ゲームのインストールフォルダ)www\data\system.json の variables 内に記載されている順番に ID が割り当てられています。
ID は 0 スタートですが、ゲーム内で実際に使われるのは 1 からです。
変数操作イベントの探し方
Event の項目を参照。
イベント検索用の正規表現
- 簡易版
\{"code":122,.*?\}
- 詳細版
\{"code":122,"indent":\d+?,"parameters":\[from,to,演算,値のタイプ,値\]\}
検索したい対象に合わせて [from,to,演算,値のタイプ,値] 部分を適切な値に置き換えてください。
- from, to
- 操作する変数 id 範囲、単独変数の場合は from と to は同じ値
- 演算
- 0:代入, 1:加算, 2:減算, 3:乗算, 4:除算, 5:剰余
- 値のタイプ
- 0:定数, 1:変数, 2:乱数, 3:ゲームデータ, 4:スクリプト
- 値
- 1-3 個あり、演算の種類によって数が変わる
Event
パラメータ
- Commo
- CommonEvents.json で定義されているイベントの場合にチェック ON
- Event ID
- イベント ID を指定
- Line
- そのイベント定義が記述されている行番号
0 開始であることに注意
-1 にすると、そのページの全ての行が実行されたら反応
CommonEvents.json or マップファイル内の list 直下の { } に対応 - Map ID
- 各マップファイル内で定義されているイベントに反応させたい場合にチェック
マップ ID を指定 - Page
- そのイベント定義が記述されているページ番号
CommonEvents.json or マップファイル内の pages 直下の { } に対応
イベントの探し方
-
そのイベントが記述されているファイルをテキストエディタで開く
- 共通イベントの場合
-
- (ゲームのインストールフォルダ)www\data\CommonEvents.json を開く
- マップ固有のイベントの場合
-
- (ゲームのインストールフォルダ)www\data\MapInfos.json を開く
- マップ名をヒントに、その変数操作イベントがあるマップ ID を調べる
- マップ ID と紐づいたマップファイル Map***.json をテキストエディタで開く
- イベントのコード番号などを使って目的のイベントが記述されている場所を検索
- マップやスイッチや変数などの各 ID や値の変化などのパラメータを見て目的のイベントの記述場所を特定
- その記述がある list 内 { } の先頭からの番号が行数(0 スタート)
- list の上位階層の pages 内 { } の先頭からの番号がページ数(1 スタート)
- pages と同じ階層の先頭にある id がイベント ID
イベントのコード番号
イベントを探す際に、コード番号を使って検索すると探しやすいです。
{"code":*,"indent":*,"parameters":[*...]}
- code
- コード番号
- indent
- エディタで表示される際のインデント
- parameters
- そのコードにおけるパラメータ、コードによってパラメータの数が異なります
コード番号とパラメータ
有志の方がRPGツクールMVイベントコマンド一覧をまとめてくださっています。
イベント検索用の正規表現
- 簡易版
\{"code":コード番号,.*?\}
- 詳細版
\{"code":コード番号,"indent":\d+?,"parameters":\[パラメータ\]\}
検索したい対象に合わせて コード番号、[パラメータ] 部分を適切な値に置き換えてください。
New Game
計測区間中にゲーム開始を経由するカテゴリなどで利用します。
パラメータ
なし
0 件のコメント:
コメントを投稿