C++ ときどき ごはん、わりとてぃーぶれいく☆

Wonder Rabbit Projectのなかのひとのブログ。主にC++。

Game: Dragon's Dogma: Dark Arisen とマルチモニターやバックグラウンド動作のパッチ( mod )

この頃 DDDA ( STEAM 版 ) を遊んでいます。ゲームは楽しめているのですが、アプリケーションとしての動作に幾つか悲しみの挙動があり気にしながらプレイしていました。

  1. マルチモニター環境でフルスクリーンを ON にコンフィグすると Left-Top のモニターに出てしまう。
    • 中央や右のモニターでプレイしたい場合に悲しい(GPUドライバーでDDDAのためだけにモニターの座標空間を調整もしたくない)
    • ウィンドウモードにするとバーが目に入ってしまい悲しい&起動ごとにウィンドウの位置調整が必要で悲しい
  2. Alt + Tab などでアプリをバックグラウンド動作にすると描画も音楽も止まってしまう。
    • メモを取りながらプレイしたり、たまに SNS を覗いたりしながらプレイするスタイルだと悲しい(プレイ中の雰囲気が中断されてしまうので)

しばらくは我慢してプレイしていましたが、より快適に楽しむためにどうにかしようか、と思ったところ、既に2年前にどうにしかしていた人が居ました😃

native な dll-proxy 型の mod ですね。 README に how-to-install などありませんが、 OS の実行時ライブラリーの動的リンクに選択的に意図したライブラリーをフックさせる事でアプリの動作に後付けで native な処理をアプリ本体と同じプロセス内で実行させる手法です。 ddda.exe の配置先に配置すると mod として機能します。設定は .ini を編集、と。

導入して少々 .ini を編集すればフルスクリーンで中央のモニターに表示やバックグラウンドでも処理を止めないようにでき、快適なプレイ環境へ接近します。

最近はこのような仕組みを使わずともアプリ本体が元からユーザーが意図してインストールする追加の mod 群をロードできるゲームも多い時代になり、このような昔ながらの方法でプロセスに割り込む mod は懐かしさを感じるようになりました。計算機プログラマー的には動的リンクの基礎的な知識とその応用技法です。仕込むのが悪意のある第三者なら問題ですが、こうした技法が使用可能な事はそもそもユーザーの便利として有用性が高く、 "高すぎる無駄なセキュリティー意識" の犠牲にならない日がこの先の計算機と一般的なPCとOSの歴史でも続くと嬉しいです。もちろん、少なくともローカルに完結する範囲内で、それがユーザーの意図した介入である処理については、ですが。