RPGツクール2003において確認されているバグの一覧です。
日本語の文字化け
Windowsの言語表示が英語の場合、2003製作品で日本語表示が文字化けする。
なお2000製作品は文字化けしない。
- 作者が取れる対策
- Steam版2003にManiac Patchを適応して日本語化している場合は、2018/12/09版以降のバージョンを使用する
(エンターブレイン日本語版2003では対処不能?)
- Steam版2003にManiac Patchを適応して日本語化している場合は、2018/12/09版以降のバージョンを使用する
- プレイヤーが取れる対策
- OSの表示言語を日本語にする
- もしも俺々仕様のRPGツクールローダーがあったら v2にて「メモスト対策等」オプションを有効にしてゲームを起動する
200X共通/バグ
RPGツクール2000・2003共通のバグの一覧です。
重大なバグ
主としてゲームを強制終了させるレベルの危険な不具合。
「メモリストリームの拡大中にメモリが足りなくなりました」
多くのプレイヤーを苦しめてきた有名なバグ。Windows2000以降に発生する。
「BGMの演奏」でMIDIを読み込んだ際にメモリの解放に一部失敗してゴミデータが蓄積した結果、
BGMが演奏されなくなる予兆の後、セーブ時に上書きしようとしたデータを消し飛ばしつつ強制終了する。
F12ではゴミデータの解消はされないため、発生させないためにはこまめにゲームを閉じる必要がある。
「BGMの演奏」でMIDIを高速で読み込み続けることで容易に再現が可能。
エディターでも発生する。エディターで発生した場合はゲームファイルの破損につながるため極めて危険。
現在では非公式の修正パッチで回避できる他、Steam版2003日本語化パッチにも修正機能が付いている。
また、上記のパッチを利用した もしも俺々仕様のRPGツクールローダーがあったらを使う事でも回避できる。
いくつかの事実が合わさることで、セーブデータ破損などの現象が発生する。
- Windowsには移動可能なメモリという概念がある(Managing Heap Memory中のThe MOVEABLE Memory Handle Tableを参照)
- RPGツクール2000・2003は移動可能メモリを使っている
- 大部分の処理では移動可能メモリを正しく処理(確保・解放)しており、移動可能メモリ数の使用数は一定に収まる
- しかしMIDI読み込み処理に不備があり、MIDIを読み込むたびに移動可能メモリの使用数が増加していく(詳細)
- 1プロセスが使用できる移動可能メモリの上限は65536個である
- MIDI読み込みに必要な移動可能メモリが確保できなくなると、MIDI読み込みに失敗する
- MIDI含む音声ファイル読み込みに失敗した場合、音声を再生しないだけでありゲームは続行する(→BGMが流れなくなる)
- セーブなどのファイル保存処理は、ファイルの内容を0byteに切り詰め→ファイルに内容を少しずつ書き込み、という手順で進む
- ファイル保存中に移動可能メモリが確保できなくなると、ファイルの書き込み途中で中断するため、ファイルが破損する
有志によると、MIDI読み込み時の移動可能メモリの増加量は以下の通り。
増加量 = システムエクスクルーシブイベント数 * 3 + メタイベント数 + 4
過去に本バグの対策についての作品が投下されている。
- メモリストリームエラー回避(VIPRPG10代目作品保管庫 第23保管庫 ID:2715)
互換性データベースを利用する手法。
この手法で一度データベースをインストールすると、以降RPG_RT.exeという名前のアプリケーションすべてで対策が取れた状態になる。
キー途切れ回避用の処理も入っている。
- メモストエラー回避検証(VIPRPG12代目作品保管庫 第2保管庫 ID:247)
移動可能メモリではなく通常のメモリを使うようにすることで、本バグの発生を遅らせる手法。
この手法は、別起動ファイルを経由したRPG_RT.exeのみの対策になる。
ソースコード同梱。RTPのMIDIファイル読み込み時の増加量の資料も同梱。
パーティ全滅からのフリーズ
「文章の表示」を行っている最中にパーティ全員のHPが0になるとゲームがフリーズ、もしくは強制終了する。
- 再現例Ⅰ
パーティをデフォルトデータベースのアレックスのみにし、マップ上に以下のイベントを置く。- EV[1]:自動的に始まる/HPの増減:メンバー全員のHPを20減らす(戦闘不能を許可する)
- EV[2]:自動的に始まる/文章の表示:「再現例Ⅰ」
結果:文章ウィンドウを二回閉じた時点でフリーズする。
- 再現例Ⅱ
再現例Ⅰと同じ状態で、マップ上に以下のイベントを置く。- EV[1]:定期的に並列処理する/HPの増減:メンバー全員のHPを1減らす(戦闘不能を許可する)
- EV[2]:定期的に並列処理する/文章の表示:「再現例Ⅱ」
結果:ウィンドウが開いてすぐに画面が停止する。F9を押すと画面がフェードイン・アウトを繰り返す。
発生すると操作不能になりゲームの続行が不可能になるので、文章表示中にHPの操作はしないこと。
「HPの増減」以外にも「ダメージの処理」でも発生する。
軽度なバグ
ゲームの強制終了ほどではないが、プレイヤーないし作者に不利益を与える可能性のある不具合。
ループを抜けるのに失敗する
「繰り返し処理の中断」を実行した際、コマンドの並びによっては繰り返しから抜けられないことがある。
◆繰り返し処理 ◆繰り返し処理の中断 ◆繰り返し処理 ◆ :以上繰り返し ◆文章の表示:「ループ内です」 :以上繰り返し ◆文章の表示:「ループを抜けました」
上記のイベントを実行した際、本来なら「ループを抜けました」が表示されるべきだが、
実際にはネストに関係なく「以上繰り返し」を下へと検索していくため、一つネストが深い「以上繰り返し」に
飛んでしまい、ループから抜けることができずに「ループ内です」が繰り返し表示される。
キー入力が途切れる
「キー入力の処理」にて、実際にはキーを押している場合でも、キーが押されていない場合の動作をする場合がある。マルチコア環境で発生する。
一定時間キーを押し続ければ起動するような処理を作っても、キー入力途切れにより全然発動しない可能性がある。
詳しくはこちら。 個人ブログ うたかたの夢跡 個人ブログ 骨を盗んで肉を盗まず
- 作者が取れる対策
- 短い間隔でキー入力状態が変動する場合は無視するように処理を作る
うたかたの夢跡にてイベントのサンプルがある。 - 英語版2000 v1.62以降、英語版2003 v1.12以降で製作する
英語版ではゲームエンジン側でバグ修正済み。
- 短い間隔でキー入力状態が変動する場合は無視するように処理を作る
- プレイヤーが取れる対策
- 単一CPUのみ使用するよう設定する
うたかたの夢跡にてタスクマネージャーから設定する説明がある。 - もしも俺々仕様のRPGツクールローダーがあったらにて「単一CPU制限」オプションを有効にしてゲームを起動する
- 単一CPUのみ使用するよう設定する
(エディター)エラーが表示されて保存できない
エディターで編集内容を保存しようとすると、突如以下のようなエラーダイアログが出て保存することができなくなる。
「C:\Users\(Windowsユーザ名)\AppData\Local\Temp\RPG_TEMP\MapXXXX.lmu を作成できません」(通常起動時)
「C:\Users\(Windowsユーザ名)\AppData\Local\Temp\ULTTMP00\MapXXXX.lmu を作成できません」(2009U経由で起動時)
一度発生してしまうとツクールを再起動するまで治らず、結果として保存していなかったデータが全部パーになる。発生原因は不明。
いつ発生するかも不明なため、長時間保存せずに作成を続けているほど被害は大きい。
- 暫定対策
上記のエラーメッセージにある通りのフォルダを進んでいくと、「RPG_TEMP」などのフォルダが存在しないので、手動で作成すると保存できるようになる
(エディター)テキストボックスで半角/全角キーを押すと強制終了する
Windows 11 22H2のOSビルド22621.900以前限定で、新型のMicrosoft IMEを使用しており、かつ設定の「オプションの診断データを送信する」がオンになっている場合、エディター上の任意のテキストボックスで半角/全角キーを押すとエラーすら出ずに強制終了する。
この問題はツクールに限らず、ほとんどの古いDelphi製のアプリで発生する。
この問題はKB5020044で修正された。
- 対策
- Windows UpdateでKB5020044(OSビルド22621.900)をインストールする(推奨)
- 「以前のバージョンのMicrosoft IMEを使う」「オプションの診断データを送信するのチェックボックスを外す」のどちらかを適用する
コメント