意味がわからないタイトルですが、そのまんまです。
本家の掲示板も定期的に確認しています。その中でWindowModePatchの更新対象となりそうな出来事がありましたのでメモ代わりに。
ゲームエンジンが実行ファイルではなくDLL(外部ライブラリ)にある場合について
想定はしていなかったのですが、まああり得ると言うこともわかりました。
その部分の修正を今日やってみたのですが、簡易チェックで実行は行いませんでしたが、パッチを当てる側のプログラム変更でこの問題はとりあえずどうにかなることは確認しました。
パッチを当てるときに一度対象ファイルをセクションとかの単位で分解して再構築、とかやっていたらどうしようもなかったのですが、そんなことはなく。
単にリンクされる予定のDLLファイル名の名前変更乗っ取りなのでロードできるファイルのフィルタを変更してパッチを当てた状態は再現しました。
これにちょっと関連するのが、ゲームエンジンが実は分散して搭載されている(複数のDLLが協調してエンジンとなっている、実行ファイルとDLLがエンジンの片割れになっている、etc)ときに
実行対象となるすべての実行系ファイルにパッチを当てないとだめなのですが、そのときに設定ファイルが一発目のパッチで作成されて以降の状態がおかしくなる、ということがあります。
そんなパターンがあるのかどうか実に気になるところです。
まあ、対応したからと言って「そのゲームに対応したか?」と言われるとたぶんしていないんだろうな~とは思いますが。
パッチを当てて実行したときに予定以上に拡大するパターンについて
はじめこの状態を(掲示板で)確認したときに「あれ?」と何か引っかかったのでしばらく思い返してみると・・・
そういえば似たような状態を自分が実験していたシステムの中にあったな~と思いました。
伏せ字っぽく書きますが、re○ll○ve(~2008年くらい?)のシステムです。こいつもテスト対象として試していました。
こういうADV汎用系システムの場合、ちょっとしたシーケンスでミスが出ます。それは
- ウィンドウを作成するときに「仮の解像度」(主に640×480)で作成する
- ウィンドウの「真の解像度」(この時期だと800×600が多い)がわかった時点でウィンドウの大きさを変更する
という状態を通るときに、WindowModePatchが基準とする解像度を「仮の解像度」で誤認識する、というものです。
誤認識するとどうなるかと言えば、
「仮の解像度」と「真の解像度」の解像度倍率に応じて予想以上の拡大が発生する
となります。こうなったかどうかを見分ける簡単な方法が
ゲームのメニュー画面でメニュー項目に反応するマウスカーソル位置が画面表示と同期しているか?
です。これが同期しているならこの状態の可能性があります。
これについてはパッチを静的に当てた後で設定ファイル(wndmode.ini)を開いてDrawSizeおよびFixedDrawを設定することで回避できます。
まあ、対象となるシステムがどんなものかわかれば誤認識が発生する理由を調べることもできますし、対処も可能なのですが・・・。
こういう情報はこの系のユーティリティの改良には必要ですね
一応地味~に修正はしていくつもりです。今は新しいプログラムを作るつもりもないので・・・。
プログラム系の中ではメインコンテンツとなっているのでいろいろとやっていきたいです。