ウディタ製ゲームのフリーズ対策に10日費やした備忘録 | なにがみえる?

ウディタ製ゲームのフリーズ対策に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.作成したダンプファイルを解析する。

ダンプファイルの解析にはWinDbgを使用します。
WinDbgはWindows 10 SDKに含まれます。

Windows 用デバッグ ツールのダウンロード

上記リンクの手順に従いインストールを完了させたら、スタートメニュー辺りでWinDbgって検索すれば出てくると思います。
WinDbg PreviewではなくWinDbgです)
 
・WinDbgを起動できたらそこに先程の.dmpファイルを投げ込みます。
 
・WinDbgのコマンドラインに !analyze -v と入力し実行。
 
・しばらく待つと解析結果がズラッと出てきます。
 
・あとは気合で怪しい部分を見つけてください。
 
 
ちなみに今回のケースでは最後の方の記述で犯人を発見できました。
 
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.お前のせいだったのか。

ここまで来たらあとはGoogle先生と相談しつつ色々すれば解決は目前です(適当)
 
 
 
とまぁ、要はダンプファイルをちゃんと調べろっていう基本中の基本のお話でした。
 
僕もそれ自体はなんとなく分かっていたのですが、ちゃんとした手順を知らず複数の情報を渡り歩いてどうにかここまでこぎつけたので、同じような状況の諸兄のためにもここに一つ備忘録を残して置こうと思い立った次第です。
 
付け焼き刃もいいところの知識でとりあえず最低限情報を得られるまでのチャートですので、何かイレギュラーがあると一瞬で破綻すると思います。
明らかに間違った部分とかあったらそっとご指摘ください……。
 
お役に立てたら幸いです。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ドハイパー"""良かった"""ので苦労した甲斐があったなと思いました。(小並感)