2016/02/11

Wine上のRPGツクール作品の動作(95からVX Aceまで)

GNU/Linux上のWineにおけるRPGツクール各種(95からVX Aceまで)作品の動作についてを扱う。

これまでに同ツール群による作品の動作上の問題点や対処などについてを数多く扱ってきたが、これらをまとめ直したり新しく分かったことを追加したりしている。

  1. MP3再生に関する共通の問題と対処(2000以降)
  2. MIDI形式のBGMの出力先デバイス(95/2000/2003)
  3. RTPのインストール(2000以降)
  4. 95作品の描画に関する問題
  5. 2000/2003作品
    1. フォント描画の問題
      1. 使用に適したフォント
      2. 文字が太くなる問題と対処
    2. シーン切り替え時などに動作が重くなる問題
      1. 問題の解決(2016/8/10追記)
  6. XP/VX/VX Ace作品
    1. MIDIデータの再生(Microsoft Synthesizer)
    2. corefonts
    3. XP作品の日本語フォントの描画
    4. 一部XP作品のRGSSライブラリ指定
  7. 過去に修正済みの問題点
    1. XP作品におけるMP3再生に関する問題
    2. 一部のXP/VX作品で書庫の読み込みに失敗する問題
    3. XP/VX系作品のBGMや効果音の鳴り出すタイミングに関する問題
    4. 一部バージョンでVX Ace作品のセーブデータが保存できない問題
    5. VX Ace作品のフォントレイアウトの問題

MP3再生に関する共通の問題と対処(2000以降)

複数のバージョンで共通して発生する問題として、MP3形式のBGMを使用した作品において同形式のBGMが再生される場面で作品の動作が止まったり、もしくは正しくBGMが再生されなかったりすることがある。

これはWine内の “winegstreamer” と呼ばれるライブラリが原因で、同ライブラリを無効化することで正しく動作するようにできる。

全てのプログラムに対して同ライブラリを無効化する手順としては

  1. GUI設定ツールのwinecfgを起動
  2. “アプリケーション” タブで “既定の設定” が選択されていることを確認
  3. “ライブラリ” タブで “ライブラリの新規オーバーライド” に “winegstreamer” と入力するか、一覧からこの項目を選択して “追加” を押す
  4. “既存のオーバーライド” に項目が追加されたら “編集” を押して “無効化” を選択して “OK” を押す
  5. winecfgの下部にある “OK” を押して終了

となるが、 “アプリケーション” タブで “既定の設定” を選択する代わりに “RPG_RT.exe” [1]や “Game.exe” [2] を追加した上で、それぞれに対して 3. と 4. を行うことで無効化対象の実行ファイル(の名前)を限定することもできる。

また、コマンドで上と同等の設定をレジストリに直接書き込む方法もある。

(全てのプログラムで無効化)
$ (WINEPREFIX=[Wine環境の場所]) wine reg add "HKEY_CURRENT_USER\Software\Wine\DllOverrides" /v "winegstreamer" /t REG_SZ /d ""

(特定のプログラムで無効化・RPG_RT.exeの場合)
$ (WINEPREFIX=[Wine環境の場所]) wine reg add "HKEY_CURRENT_USER\Software\Wine\AppDefaults\RPG_RT.exe\DllOverrides" /v "winegstreamer" /t REG_SZ /d ""

なお、この問題とは別に過去のバージョンのWineではMP3関係の処理を行う部分に問題があって特定のMP3ファイルが正しく再生できなかったことがあり、その場合は

  • quartz
  • devenum

のDLL群をネイティブ版に置き換える必要があった。Winetricksを用いる場合は上記2つを引数に指定して実行すれば対処できていたが、Wineのバージョン1.6系時点では問題の発生するMP3ファイルの存在が確認できないため、これらをネイティブ版に置き換える必要のある作品が現在もあるかどうかは不明。

再生に問題のあったMP3ファイルの例としてはtamsp14.mp3というファイル名の “花時” という曲で “Seraphic Blue Director's Cut” という作品の新規ゲーム開始直後のシーンで再生されるため、同作品を最初から開始できなかった。このファイルはWineのバージョン1.5.9以上で正常に再生できるようになったのだが、同作品のマニュアルによるとMPEG-2 Audio Layer-3のMP3ファイル群が一部の環境で再生できないことが確認されており、このファイルもこれに該当しているため、バージョン1.5.8までのWineにおいて同様の他のMP3ファイルでも問題が発生していた可能性が考えられる。

MIDI形式のBGMの出力先デバイス(95/2000/2003)

バージョンが95/2000/2003のRPGツクール作品では、MIDI形式のBGMを再生する際にはMIDIマッパーを使用する。この詳細については

を参照。

RTPのインストール(2000以降)

RPGツクール各種作品を動かすためにバージョンごとに必要なランタイムパッケージである “RTP” のインストールについては、各バージョンのZIP書庫を展開して中の.exeファイルをWineで実行すればよい。以前はLHA書庫が使用されていたが、ZIP書庫に変更されたため、扱いやすくなった。

RTPはRPGツクール2000から導入されたため、RPGツクール95作品はそのまま実行ファイルを実行すればよい。[3]

XPからVX AceまでのRTPのインストーラは/silentオプションを付けて実行することでインストールが非対話的になるが、GUIのウィンドウがファイルのインストール段階で表示される。

95作品の描画に関する問題

RPGツクール95作品の起動後のフルスクリーンの状態では透過するはずの部分に色が付くなど一部の描画に不具合が出るが、メニュー “システム - スクリーンモードの変更” を選択してウィンドウモードにすることで正しく描画されるようになる。[4]この後でフルスクリーンに戻してもまた表示がおかしくなるため、画面上で大きく表示したい場合はOS側の画面解像度設定を先に小さめにしてからウィンドウモードにして動かすのがよい。

作品の起動の度にウィンドウモードに切り替えるのは手間になるが、これは仕方がない。

2000/2003作品

フォント描画の問題

自作のメニューシステムや戦闘システムを用いている作品では一部の文字の描画が常に正しく行われるが、これは画像ファイルを使用しているためで、会話メッセージなどの日本語の表示ではフォント描画に問題が出ることがある。

使用に適したフォント

RPGツクール2000RPGツクール2003の作品ではフォントは “MS ゴシック” が使用されるため、特定のフォントを表示に使用したい場合はこのフォント名に対する置換設定を行う必要がある。また、小さいフォントサイズが使用されるため、読みやすい埋め込みビットマップが含まれたフォントで置換しないと読みにくくなってしまう。

IPAモナーフォントの “IPA モナー ゴシック” は読みやすい埋め込みビットマップと “MS ゴシック” との高い互換性があるため、使用を推奨する。

Winetricksで “fakejapanese_ipamona” を指定することで、フォントのダウンロードから配置、置換設定までが自動的に行われる。

IPAモナーフォント以外ではモトヤフォントのサイトからメールアドレスを登録することでダウンロードできるフォント群の中の “NFモトヤシータ゛1等幅” [5]などが読みやすいが、XP作品の動作や導入の手間も考えるとIPAモナーフォントのほうがおすすめ。

文字が太くなる問題と対処

バージョン1.5.18以上のWineではデスクトップ環境などのフォントのアンチエイリアシング設定が有効になっている場合に埋め込みビットマップのあるフォントでもビットマップが使用されず、文字が読みにくくなってしまう。

対処としては

  • デスクトップ環境などによってはフォントのアンチエイリアシング設定をRPG_RT.exeの起動時に(普段アンチエイリアシング有効で使用している場合は一時的に)無効にしておく
  • レジストリHKEY_CURRENT_USER\Software\Wine\AppDefaults\RPG_RT.exe\X11 Driverの項目ClientSideWithRenderを “N” にして、かつアンチエイリアシングを無効化するFontconfig設定ファイルを用意した上でRPG_RT.exeの実行時にのみ環境変数FONTCONFIG_FILEにこのファイルの場所を指定

のいずれかを行う必要がある。

(RPG_RT.exeに対してClientSideWithRenderのレジストリ設定を無効化)
$ (WINEPREFIX=[Wine環境の場所]) wine reg add "HKEY_CURRENT_USER\Software\Wine\AppDefaults\RPG_RT.exe\X11 Driver" /v "ClientSideWithRender" /t REG_SZ /d "N"

下はWineでアンチエイリアシングを無効にするためのFontconfig設定ファイルの例。

[任意]ファイル名:fonts.conf.noaa
<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
 <!-- load default settings -->
 <include>/etc/fonts/fonts.conf</include>
 <!-- disable anti-aliasing -->
 <match target="font">
  <edit mode="assign" name="rgba">
   <const>none</const>
  </edit>
 </match>
</fontconfig>
(Fontconfig設定ファイルを指定してRPG_RT.exeを実行する例)
$ (WINEPREFIX=[Wine環境の場所]) FONTCONFIG_FILE=/path/to/fonts.conf.noaa wine explorer /desktop=rpg,640x480 /path/to/RPG_RT.exe

適切なフォント(IPAモナーフォントなど)を使用し、かつアンチエイリアシングを無効にして実行することで、Windows上と同様に文字が読みやすくなる。

Wineのバージョン1.8系時点では特定のフォントや特定のサイズに限定したアンチエイリアシング無効化の設定はできず、Fontconfigの設定ファイルに “特定のフォントサイズでのみ埋め込みビットマップを用いる” ための記述をしてもWineでは正しく扱われない。

下はアンチエイリアシング設定による描画の比較。

2000作品/アンチエイリアシング有効で見づらい状態

アンチエイリアシングが有効の状態

2000作品/アンチエイリアシング無効で見やすい状態

アンチエイリアシングが無効の状態(IPAモナーフォント使用時)

シーン切り替え時などに動作が重くなる問題

一部作品において、PNG画像を用いた画面のシーン切り替えなどの効果がかかる際に動作が非常に重くなる。ここで使用されている画像ファイルが分かれば[6]、1x1ピクセル/8bit/PNGのダミー画像ファイルで元のファイルを置き換えることで、画面効果がかからなくなる代わりに動作が重くなるのを回避できる。

以下、2つの作品例を挙げる。

Seraphic Blue Director’s Cut[7]
場面ファイル
通常戦闘(ボス戦以外)における戦闘シーンへの切り替わりPicture/EncountEffect03.png
戦闘時、味方側キャラの行動順になってコマンド一覧表示が出る直前Battle/Battle_MCB.png
Labyrinth Star
場面ファイル
全体マップと同マップから入れる各場所との間の移動時Picture/S_円フェード*.png

下はImageMagickconvertコマンドで1x1ピクセル/8bit/PNGのダミー画像を生成する例。

(ダミーPNG画像を生成)
$ convert -size 1x1 canvas:none -fill black -type palette png8:dummy.png

出力されるdummy.pngを上記に示したファイルに対して置き換える。

問題の解決(2016/8/10追記)

バージョン1.9.13と1.9.14の間のgdi32.dllのコードの修正によりこの問題は大きく改善され、バージョン1.9.14以上では画面が止まったように見えることはほとんどなくなり、 “Labyrinth Star” や “Mystic Star” ではマップの切り替わりが(これまではしばらく固まる感じだったのが)スムーズになった他、メニュー画面の切り替わり(各項目選択時の切り替わり含む)にかかる時間も短縮され、ゲーム全体が非常に快適になった。 “Seraphic Blue Director's Cut” の戦闘画面への切り替わりだけはそれでも重いが、以前と比べるとだいぶ改善している。

改善がどの修正箇所によるものかを調べた結果、f7b6a7dから改善されており、安定版系列のバージョン1.8系のソースに適用して安定版のWineで使うこともできる(前述のリンクの先にある “patch” のリンクからパッチをダウンロードするなどした後にこれを1.8系のソースに適用してdlls/gdi32/以下のビルドが完了した後にgdi32.dll.soを既存のものと置き換える)。

XP/VX/VX Ace作品

MIDIデータの再生(Microsoft Synthesizer)

XPからVX AceまでのRPGツクールでは、MIDI形式のBGMを再生する際に “Microsoft Synthesizer” を強制的に使用する。この詳細については

を参照。再生時にリバーブがかかるため、 “dsdmo” についても必須となっている。

corefonts

ダメージ表示などでマイクロソフトのフォント集corefonts内の “Arial Black” がよく用いられるため、同フォント集をインストールしておくことを推奨する。

導入についてはWOLF RPGエディター作品と同様。

XP作品の日本語フォントの描画

RPGツクールXP作品は “MS ゴシック” 系や “MS 明朝” 系の日本語フォント群が使用され、フォント名による探索に失敗すると[8]そのフォントで描画される場所が空白になってしまい、読めなくなる。

この対処としてもIPAモナーフォントは非常に有用[9]で、Winetricksで “fakejapanese_ipamona” を指定することでフォント置換までが自動的に行われる。RPGツクール95作品でもレイアウトが改善されるため、導入を推奨する。

XP作品/置換設定なし

適切な置換設定がなく空白になる例

XP作品/置換設定ありでIPAモナーフォントを使用

IPAモナーフォントで置換したもの

VX以降はRTPに専用のフォントが含まれる形となっているため、フォントの置換は必要ない。

一部XP作品のRGSSライブラリ指定

一部のRPGツクールXP作品は開始時に落ちてしまうが、作品のディレクトリにあるGame.iniを編集して使用ランタイムDLLを最新にする指定を行うことで動作する場合がある。

[一部]ファイル名:Game.ini
[Game]
Library=RGSS103J.dll

ファイル内の “Library=” の行のみ編集して上書き保存後に作品を起動する。

過去に修正済みの問題点

XP作品におけるMP3再生に関する問題

Wineのバージョン1.2系時点ではRPGツクールXP作品でMP3ファイルが正しく再生できず、元ファイルをOgg Vorbisでエンコードしたもので置き換えるという対処方法があったのだが、バージョン1.4系以上では(winegstreamer関係の不具合を除いて)正しく再生できる。

一部のXP/VX作品で書庫の読み込みに失敗する問題

一部のXP/VX作品ではゲームデータが書庫[10]にまとめられており、更にその中の一部の作品がWineで起動できないという不具合があったが、バージョン1.5.19で改善され、正常に動作するようになった。

XP/VX系作品のBGMや効果音の鳴り出すタイミングに関する問題

Wineのバージョン1.2系時点ではXP/VX作品のBGMや効果音がうまく鳴らなかったり、鳴るタイミングが遅れたりすることがあったが、バージョン1.3系にてサウンド周りの大幅な書き直しが行われ、バージョン1.4系以上では安定して鳴るようになっている。

一部バージョンでVX Ace作品のセーブデータが保存できない問題

バージョンが1.3.7から1.4-rc4のWineではRPGツクールVX Ace作品でセーブデータを保存しようとするとブザー音が鳴って保存に失敗してしまう。これについてはバージョン1.2系では問題がなかった[11]ため、原因となる修正を特定の上でバグ報告を行い、Wineの開発貢献者の一人であるSagawa氏の解析が助けとなって短期間で問題が解決し、バージョン1.4-rc5以上では問題は発生しなくなっている。

VX Ace作品のフォントレイアウトの問題

過去のバージョンのWineにおいてRPGツクールVX Ace作品において文字描画のレイアウトに問題があり、メッセージが表示されるウィンドウの中におさまりきらない(行の右端で文字の一部が欠ける)現象が発生していたが、Sagawa氏によってバグ報告と修正が行われ、バージョン1.5.28からは改善されている(同氏に感謝)。

一時期はRTP内のフォントファイル(VLゴシック)を改変して置き換えることで回避できていたが、その必要はなくなっている。

使用したバージョン:
  • Wine 1.8, 1.8.1
  • ImageMagick 6.8.9
[1]: 2000/2003作品を起動する実行ファイル名
[2]: XP/VX系作品を起動する実行ファイル名
[3]: つまりRPGツクール95用のRTPは存在せず、また、RTPはRPGツクールVX Ace用が最後となっており、それよりも後のバージョンでもRTPは存在しない
[4]: ただし、RPGツクール95自体がWindows9x時代のものなので、NT系のWindows上と同様に “パレット” などの作品でフルスクリーンとウィンドウとで描画色の違いが発生する場合があり、Windows9x系と同じ動作とは言えない
[5]: “タ” の次に “゛” が付き、"ダ" の文字は使われていない点に注意
[6]: それらしいファイル名が見つからない場合、WINEDEBUG=+ntdll指定で実行し、こまめにサスペンドを行って出力を確認(“trace:ntdll:FILE_CreateFile” で始まる行に処理対象のPNGファイルのファイル名が含まれることがある)して再開するのを繰り返して絞り込む方法がある
[7]: 2つとも、改造版を使用することによっても回避可能となっている
[8]: つまり、これらの名前に対するフォント置換設定が行われていない場合
[9]: しかし、作品によっては部分的に文字が欠ける場合があり、互換性は完全とは言えない
[10]: 拡張子はXP作品が “.rgssad” でVX作品が “.rgss2a”
[11]: バージョン1.3系の途中で、それまでには無かった不具合が起こるようになったということになる