ウディタ製ゲームのフリーズ対策に10日費やした備忘録
24時間飲まず食わずでDLsiteを漁っていたことがある男、OBOです。
先日とあるWOLF RPG Editor(以下ウディタ)製の同人ゲームを購入したのですが、なんかゲームを始めようとすると確定で応答なしになって遊べない現象にぶち当たりました。
作者の方に不具合報告したところどうも環境依存らしいということで自力での解決を目指す形になったわけですが、その結果と行程を備忘録として残しておきます。
結論から言いますと、MP4Splitterというコーデックが干渉してゲームが停止しておりました。
MP4Splitter
同様の現象を別のウディタ製ゲームの不具合報告で1件だけですが見かけました。どうもウディタ本体とかち合う様子です。
なので同様の症状の方はとりあえずコレがインストールされてるか確認して、もし入ってたらアンインストールすれば解決するかもしれません。
手順は上記リンクあたりをご参考にどうぞ。
(消すのは32bit版だけで良いと思います)
MP4Splitterはmp4形式の動画を再生可能にするコーデックなのですが、なぜウディタに干渉するのかと思ったら最近のアップデートでウディタが動画ファイルに対応したとか。
ウディタVer2.26公開!
すごいですね…リッチなフリーソフトだ。ちょっと弄ってみたくなりました。
どうもDirectshow関係が邪魔してんじゃないかという噂があったりしますが門外漢なのでこれ以上の言及は控えます。
ここからはオマケです。
今回のようにアプリケーションの応答なしが多発する場合の原因探しの手順です。
ぶっちゃけ開発系のノウハウがあるヒトにとっては完全に常識中の常識みたいなアレです。
僕はコレを知らなかったがために10日間も無駄な時間を……
(Windows環境オンリーですのであしからず)
まず大雑把に流れを説明しておくと、
1.応答なしになったプロセスからフルダンプファイルを作成する。
2.作成したダンプファイルを解析する。
3.お前のせいだったのか。
です。
マジで界隈によっては常識も常識だと思います。
僕もわからないなりに何度か試してはいたぐらいですからね…(不完全だったので意味がなかった)
1.応答なしになったプロセスからフルダンプファイルを作成する。
ダンプファイル自体はタスクマネージャからも作れるのですが、大事なのはフルダンプファイルです。
ここを知らなかったために解決に時間がかかりました。
フルダンプファイルは ProcDump で作成しました。
導入及びファイル作成の流れはこちらを参考にしました。
ProcDumpでダンプの取得: ダウンロードから基本的な使い方まで
ほぼ全部リンク先の記事に書かれているのですが、ものぐさ兄貴のためにこちらにも簡単に手順を書いておきます。
・ここから ProcDump をダウンロードし、任意のディレクトリに解凍します。
・Ctrl + Alt + Deleteなどでタスクマネージャを出し、詳細タブにしておいてください。
・問題のあるアプリケーションも起動し、応答なしの状態にしてください。(閉じないでそのまま)
・コマンドプロンプトを管理者権限で開き、以下のコマンドを実行。
>cd (先ほど解凍したディレクトリのパス)
>procdump64.exe –ma –h (タスクマネージャの詳細タブ上の応答なしのプロセス名 例:Game.exe)
・Dump count reached.と表示されたらProcDumpを解凍した場所にダンプファイル(.dmp)が作成されます。
2.作成したダンプファイルを解析する。
Windows 用デバッグ ツールのダウンロード
上記リンクの手順に従いインストールを完了させたら、スタートメニュー辺りでWinDbgって検索すれば出てくると思います。STACK_COMMAND: ~0s; .ecxr ; kb
SYMBOL_NAME: mp4splitter!DllCanUnloadNow+aab
MODULE_NAME: MP4Splitter
IMAGE_NAME: MP4Splitter.ax
FAILURE_BUCKET_ID: BREAKPOINT_80000003_MP4Splitter.ax!DllCanUnloadNow
OS_VERSION: 10.0.19041.1
BUILDLAB_STR: vb_release
OSPLATFORM_TYPE: x86
OSNAME: Windows 10
FAILURE_ID_HASH: {6a508c2e-26e3-c3f5-4ae8-728f252fe5e5}
Followup: MachineOwner
3.お前のせいだったのか。