2016/06/15

フリーゲームRPG “Cresteaju” をLinuxのWineで動かす

2001年に公開されたWindows用フリーゲームのファンタジーRPG “Cresteaju (クレスティーユ)” のWine上の動作についてを扱う。

スクリーンショット

  1. 発生する問題とその回避策
    1. 起動に必要なファイルが足りません?
    2. MP3BGM版でタイトル画面まで進まないことがある?
    3. フォントの描画やレイアウトがおかしい?
  2. 動作関係
    1. Wine 1.8系時点ではまともにプレイ可能?
    2. スタンダード版のBGM(MIDI形式)の再生は?
    3. 実際にプレイしての動作確認状況は?

発生する問題とその回避策

起動に必要なファイルが足りません?

本体の実行ファイルはcres.exeという名前のファイルとなっているが、これを起動する際には、作業ディレクトリをこのファイルのあるディレクトリにしておく(予め移動しておく)必要がある。

作業ディレクトリが別の階層にある状態で起動すると “起動に必要なファイルが足りません” というメッセージがダイアログで表示されて終了する。

(作業ディレクトリをcres.exeのあるディレクトリへ変更)
$ cd [cres.exeのあるディレクトリ]
(同じ階層のcres.exeを実行)
$ (WINEPREFIX=[Wine環境の場所]) wine cres

実際には上の流れを短いシェルスクリプトに記述するなどの方法が楽だが、WineのGUIユーティリティの1つであるQ4Wineを使用している場合には新しいアイコンを作成してcres.exeの場所を実行ファイルの場所として指定すれば同じディレクトリが作業ディレクトリの初期値として指定されるので特に作業ディレクトリを意識した設定作業は必要ない。

なお、別途配布されているBGM再生専用のソフトウェアCresJuke!!(cresjuke.exe)を起動する際も同様に作業ディレクトリの移動が必要。LHA書庫で配布されているため、展開には

で扱ったツールが必要。

MP3BGM版でタイトル画面まで進まないことがある?

本ゲームはBGMの形式によって

  • MP3BGM版
  • スタンダード版

の2種類が配布されており、MP3BGM版ではWinewinegstreamer.dllが使用されると、うまくBGMが再生されずにプログラムを起動しても “2001 Produced by Shou” という文字が消えた後に異常終了することがある(環境によっては問題なく動作する場合もある)。

MP3BGM版でタイトル画面まで進まない場合には、同DLLを以下のようにして無効化することで正しく動作するようになる。本ゲームの動作においては、無効化することによるデメリットは特にない。

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

上の設定をコマンドで実行する場合は下のようになる。

$ (WINEPREFIX=[Wine環境の場所]) wine reg add "HKEY_CURRENT_USER\Software\Wine\AppDefaults\cres.exe\DllOverrides" /v "winegstreamer" /t REG_SZ /d ""

(2017/3/26)Wineのバージョン2.0系時点ではGStreamer 1.0の32bit用の “ugly” のプラグイン集(Debian/Ubuntuでは “gstreamer1.0-plugins-ugly:i386”)がインストールされていれば無効化することなく動作している。

フォントの描画やレイアウトがおかしい?

本ゲームでは “MS ゴシック” のフォントが使用されており、かつ埋め込みビットマップも使用されていることから、IPAモナーフォント(の中の “IPA モナー ゴシック” フォント)で代替することを強く推奨する。

Winetricks(バージョン20151227かそれ以降)で “fakejapanese_ipamona” を指定することで、同フォント集のインストールと置換設定が楽に行える。

適切なフォントで代替されていないと、文字が読みにくくなったり戦闘画面右下のウィンドウなどにおいてレイアウトが崩れてしまったりする。

読みにくく、レイアウトも崩れる例:

読みにくく、レイアウトも崩れる例

IPAモナーフォントで置換設定を行った状態:

IPAモナーフォントで置換設定を行った状態

戦闘画面におけるダメージ表示については、独自の内蔵フォントが使われているため、特に何かをすることなくWindows上と同じように表示される。

ダメージ表示

動作関係

Wine 1.8系時点ではまともにプレイ可能?

このゲームは昔Windowsを使っていた時期にプレイしたことがあり(クリア済み)、Wineでも動かせないかと何年も前から試していたのだが、描画に関する大きな不具合が複数あって良好な動作とは言えない状態が続いていた。

Wineのバージョン1.7系が開発されていた時期、WineのDirect3Dの挙動に関するレジストリ設定(Winetricksでは “orm=backbuffer”)を行った上で設定ツールcrescfg.exeでウィンドウモードに設定して動かすことでようやくプレイ可能なレベルにはなったが、それまで全画面モード(ウィンドウモードが無効の状態で既定のモード)でも正常に起動していたのがうまく動かなくなっていた。

これがバージョン1.8系時点では “レジストリ設定不要かつ全画面モードでも正常動作” と改善され、本記事で前述している問題回避をしている限りにおいては良好に動作する状態と言える。もちろん、戦闘時の魔法などのエフェクトも特に問題なく動作する。

小さな不具合としては、ウィンドウモードで動かしたときに限り戦闘画面に切り替わる際の割れるような画面効果がバージョン1.8系時点では表示されない問題があるのだが、全画面モードでは正しく表示される。全画面モードはWineの仮想デスクトップ機能を使用すれば実際の全画面表示にはならずにウィンドウ表示のままで動かすこともでき、この動かし方をすることにより、ウィンドウ表示をしながら戦闘画面への切り替わり時の画面効果も正常に動作するようにできる。

他の不具合として、移動時やイベント時(町やダンジョンなどのマップが表示されているとき)に一時的にキャラの移動が高速になって足踏みも速くなることがたまにあるのだが、ゲームの進行に大きな支障にはならず、しばらく移動などをしている内に元に戻ることが多い(Wineでのみ発生する不具合なのかどうかは不明)。また、メニュー画面や戦闘画面においては動きが高速になることはない。

(2017/3/26)Wineのバージョン2.0系時点ではメニュー内の画面切り替わりが軽くなり、より快適になっている。

スタンダード版のBGM(MIDI形式)の再生は?

“スタンダード版” として配布されているものはMIDI形式のBGMが使用され、WineでもALSAのMIDIデバイスが存在すれば鳴ることは鳴るのだが、手元の “SC-8820” というMIDI音源では、crescfg.exeで “MIDIデータタイプ” を指定したときに以前Windowsを使っていたときの鳴り方(MP3BGM版に近い演奏)と大きく音色が異なってしまう。これはALSAのMIDI関係の扱いも関係してくるのでWine自体のバグと言えるかは分からない[1]が、MP3BGM版があるので、特にスタンダード版を使う理由がなければそちらを使うことを推奨する。

MIDIデバイスの選択についてはMIDIマッパーの設定が使用される。MIDIマッパーについては

を参照。

実際にプレイしての動作確認状況は?

バージョン1.8系のWineにて、最初からエンディングまでを通してプレイして動作を確認した。使用したのはMP3BGM版で、crescfg.exeの設定は既定値のままいじっていない。

同一のバージョンで最後まで通して動作の確認ができればよかったのだが、事情により、途中で手元のソフトウェア環境が変わってしまっている。とはいっても、Wineの安定版系列におけるバージョンが1つ新しくなっただけなので、基本的には1.8系のバージョンを使うことで最初から最後まで問題なく動作可能であると思われる。

動作確認の範囲WineのバージョンOSバージョン
オープニングからアルシア付近のフィールドまで1.8.1Ubuntu (x86_64) 15.10
アルシア到着からエンディングまで1.8.2Ubuntu (x86_64) 16.04
使用したバージョン:
  • Wine 1.8.1, 1.8.2, 2.0
  • Winetricks 20160329
  • Q4Wine 1.3
  • Cresteaju 1.26
  • CresJuke!! 1.00 (バージョン情報では1.10)
[1]: “fixme:winmm:midiStreamPosition Unsupported time type 10” というメッセージが端末に出続けてはいるが、この件と関係しているかは不明