『スーパーリアル麻雀VR』でテクスチャ変更MODを作ろうとして、ChatGPTに教えてもらった通りBepInExを入れたのに、
「BepInExフォルダの中に何も生成されない……」
という状態になってしまった人へ。
しかも、ゲーム本体のexeと同じ場所にdotnet、doorstop_config.ini、winhttp.dllまで置いているのに動かない。
さらにゲームフォルダからexeを直接起動すると、なぜかゲームが複数起動してしまう。
この状態だと「どこが間違っているの?」となりますよね。
私なら、MOD側をいじる前に「BepInExそのものがゲームへ読み込まれているのか」を確認します。
というのも、BepInExが正常に起動していれば、初回起動時に設定ファイルやログが生成されるのが基本だからです。
- まず結論|BepInExフォルダが空ならMOD以前の問題かも
- 一番最初に確認したいのはMono版かIL2CPP版か
- ありがちな失敗|1階層深い場所に入っている
- doorstop_config.iniの中身も確認する
- 「BepInExフォルダ内に何も生成されない」場合の確認
- 直接exeを起動すると複数起動するのはなぜ?
- まずSteamから1回だけ起動してみる
- 初回起動では少し待つ必要がある場合もある
- 「dotnetはあるのに動かない」場合
- WinHTTP.dllだけ置けばいいわけではない
- ゲーム本体の場所をもう一度確認
- いきなりテクスチャMODを入れないほうがいい
- 今回の症状ならここを優先して確認
- 最終的にはLogOutput.txtを見るのが一番早い
- まとめ|まずBepInExが読み込まれる状態を作る
まず結論|BepInExフォルダが空ならMOD以前の問題かも
今回の症状で一番重要なのはここです。
BepInExフォルダが作られているのに、configやLogOutput.txtまで何も生成されないなら、MODの入れ方より前の段階でBepInExが読み込まれていない可能性が高いです。
BepInExの公式手順では、Unity IL2CPP対応版をゲーム本体と同じルートフォルダへ展開し、ゲームを一度起動すると`BepInEx/config/BepInEx.cfg`と`BepInEx/LogOutput.txt`が生成される流れになっています。
したがって、最初に見るべきなのはMOD本体ではありません。
- BepInExの種類がゲームに合っているか。
- x64などのアーキテクチャが合っているか。
- ゲームのexeと同じフォルダに正しく配置されているか。
- Doorstopの設定が正しいか。
- 本当にゲーム本体のexeが起動しているか。
一番最初に確認したいのはMono版かIL2CPP版か
ここはかなり重要です。
BepInExにはUnity Mono用とUnity IL2CPP用があり、必要なファイル構成が違います。
現在のBepInEx公式ドキュメントでは、WindowsのUnity IL2CPPゲームについて、ゲームのアーキテクチャに応じてUnity.IL2CPP-win-x86またはUnity.IL2CPP-win-x64を選ぶよう案内しています。
さらにIL2CPP版では、`dotnet`フォルダや`BepInEx.Unity.IL2CPP.dll`を利用する構成になっています。
つまり、
| 確認項目 | チェック |
|---|---|
| BepInExの種類 | Unity IL2CPP |
| Windows版アーキテクチャ | x64かどうか確認 |
| dotnetフォルダ | ゲームexeと同じ階層 |
| winhttp.dll | ゲームexeと同じ階層 |
| doorstop_config.ini | ゲームexeと同じ階層 |
| BepInExフォルダ | ゲームexeと同じ階層 |
この「同じ階層」というのが非常に重要です。
ありがちな失敗|1階層深い場所に入っている
「ちゃんとゲームフォルダに入れたはずなのに動かない」というときに、実は一番ありがちなのがこれです。
例えば本来は、
ゲームフォルダ ├─ スーパーリアル麻雀.exe ├─ winhttp.dll ├─ doorstop_config.ini ├─ dotnet └─ BepInEx
となっている必要があります。
ところが、解凍方法によっては、
ゲームフォルダ └─ BepInExPack_x64 ├─ winhttp.dll ├─ doorstop_config.ini ├─ dotnet └─ BepInEx
のように、全部1階層奥に入っていることがあります。
BepInExの公式GitHubでも、Doorstopの`winhttp.dll`と設定ファイルはゲームexeと同じ場所に置く必要があると説明されています。
ここがズレていると、ファイルが存在しているだけでBepInExは起動しません。
doorstop_config.iniの中身も確認する
ファイルが置いてあるだけでは十分ではありません。
IL2CPP版のDoorstop設定では、基本的に次のようにBepInExのIL2CPPエントリーポイントを指定します。
[General] enabled = true target_assembly = BepInEx\core\BepInEx.Unity.IL2CPP.dll [Il2Cpp] coreclr_path = dotnet\coreclr.dll corlib_dir = dotnet
これはBepInEx公式のIL2CPP用設定に対応した構成です。
したがって、別ゲーム向けのdoorstop_config.iniをそのまま流用している場合は要注意です。
特に`target_assembly`がMono用になっていたり、`dotnet`の指定が違っていたりすると、当然ながら正常に動きません。
「BepInExフォルダ内に何も生成されない」場合の確認
ここは症状からかなり絞れます。
BepInEx公式では、初回起動後に`BepInEx/config/BepInEx.cfg`と`BepInEx/LogOutput.txt`が生成されるとされています。
なので、何も生成されない場合は次の順番で確認するのがおすすめです。
- ゲームを完全終了する。
- Steamも終了させる。
- BepInExのファイル配置を確認する。
- ゲームexeと`winhttp.dll`の場所を確認する。
- `doorstop_config.ini`の内容を確認する。
- 正しいIL2CPP版BepInExか確認する。
- ゲームを1回だけ起動する。
- `BepInEx`フォルダ内を確認する。
この時点で`LogOutput.txt`すら出ないなら、テクスチャMODやプラグインの問題ではなく、BepInEx自体のロード失敗を疑ったほうがいいです。
直接exeを起動すると複数起動するのはなぜ?
ここは少し別問題として考えたほうがいいです。
「ゲームフォルダからexeを直接開くと複数起動する」という症状だけで、BepInExが失敗しているとは断定できません。
むしろ、Steam経由で起動する場合と、実行ファイルを直接起動する場合でゲーム側の起動処理が異なっている可能性があります。
『スーパーリアル麻雀 Venus Returns』はSteam版としてWindows向けに提供されています。
そのため、まずは「exeを直接起動すること」にこだわるより、Steamから通常起動してBepInExが読み込まれるかを確認したほうが安全です。
なお、BepInExの公式ガイドでもSteamゲームについては、プラットフォーム側の起動方法に合わせて設定する必要がある場合があると説明されています。
まずSteamから1回だけ起動してみる
私なら、切り分けのために次のようにします。
| 手順 | 操作 |
|---|---|
| 1 | ゲームを終了 |
| 2 | Steamも終了 |
| 3 | BepInExファイルを正しい場所へ配置 |
| 4 | Steamを起動 |
| 5 | Steamからゲームを1回だけ起動 |
| 6 | BepInEx/LogOutput.txtを確認 |
LogOutput.txtが生成されたら、BepInEx自体は動き始めています。
そこで初めて、次にプラグインやテクスチャMODの作成へ進むのがいいと思います。
初回起動では少し待つ必要がある場合もある
IL2CPPゲームの場合、初回起動時に必要なファイルの生成処理が入ることがあります。
BepInEx公式でも、IL2CPPゲームの初回起動は生成処理のため時間がかかる場合があると案内されています。
なので、
起動してすぐ終了→失敗と判断
は避けたほうがいいです。
特に初回は普段より長く待つことがあります。
ただし、何分待ってもログも設定ファイルも一切生成されない場合は、単なる待ち時間の問題ではなく、ロード経路を確認したほうがいいです。
「dotnetはあるのに動かない」場合
ここも勘違いしやすいところです。
`dotnet`フォルダを置いただけではBepInExが自動的に動くわけではありません。
IL2CPP版では、Doorstopの設定から`dotnet\coreclr.dll`を参照し、最終的にBepInExのIL2CPPアセンブリを読み込む構成になっています。
つまり、
dotnetが存在する
と
dotnetがBepInExから正しく読み込まれている
は別の話です。
WinHTTP.dllだけ置けばいいわけではない
`winhttp.dll`はかなり重要ですが、それだけで動作するわけではありません。
Doorstopはゲームexeと同じ場所にある`winhttp.dll`を経由してBepInExをロードします。
そのため、
- winhttp.dll
- doorstop_config.ini
- dotnet
- BepInEx
の位置関係が重要になります。
「4つ全部あるからOK」ではなく、「4つが正しい場所にあり、設定も一致しているか」まで見る必要があります。
ゲーム本体の場所をもう一度確認
Steamゲームでは、ショートカットから場所を探すより、Steamのゲームプロパティからインストール先フォルダを開く方法が確実です。
そこで、実際にゲームexeがあるフォルダを確認してください。
そのフォルダの直下に、
ゲーム.exe BepInEx dotnet winhttp.dll doorstop_config.ini
が並んでいる形を目指します。
別のフォルダに入れてしまっていたら、それだけでBepInExは動きません。
いきなりテクスチャMODを入れないほうがいい
ここはかなり大事です。
最初からテクスチャ変更用のDLLやMODファイルまで入れてしまうと、「BepInExが動かない」のか「MODが動かない」のか分からなくなります。
私はまず素のBepInExだけで正常起動することを確認するのをおすすめします。
順番としては、
- BepInExだけ導入。
- 初回起動。
- LogOutput.txtを確認。
- BepInEx.cfgが生成されることを確認。
- その後にプラグインを追加。
- 最後にテクスチャMODを入れる。
この順番なら、どこで失敗したのかを切り分けやすくなります。
今回の症状ならここを優先して確認
質問内容から私なら、次の順番で疑います。
| 優先度 | 疑うポイント |
|---|---|
| 1 | BepInExの種類が間違っている |
| 2 | ゲームexeとファイルが同じ階層にない |
| 3 | doorstop_config.iniの設定が合っていない |
| 4 | ゲームのx86/x64とBepInExが合っていない |
| 5 | Steamと直接exeの起動経路が異なっている |
| 6 | 初回生成前にゲームを終了している |
特に、BepInExフォルダ内にログもconfigも何も生成されないという症状なら、5番や6番よりも、まず1~3を重点的に見ます。
最終的にはLogOutput.txtを見るのが一番早い
BepInExが一度でもロードされれば、ログからかなりの情報が分かります。
逆にログが存在しないなら、そもそもBepInExが起動地点まで到達していない可能性があります。
だからこそ、私はMOD制作に進む前にLogOutput.txtを出すところまでを第一目標にします。
そこまでできれば、その後は「どのプラグインを入れるか」「テクスチャをどの形式で差し替えるか」という別の問題として切り分けできます。
まとめ|まずBepInExが読み込まれる状態を作る
今回の症状をまとめると、
- スーパーリアル麻雀 Venus ReturnsはSteamのWindows向けタイトル。
- BepInExはゲームに合ったUnity IL2CPP版を使う必要がある。
- Windows版ではx86/x64の選択も重要。
- winhttp.dll、doorstop_config.ini、dotnet、BepInExはゲームexeと正しい位置関係に置く必要がある。
- IL2CPP版の初回起動後は`BepInEx/config/BepInEx.cfg`や`BepInEx/LogOutput.txt`が生成されるのが基本。
- 何も生成されないなら、まずBepInExのロード自体を疑う。
- 直接exeで複数起動する問題は、BepInExの問題と決めつけずSteam経由との起動差も確認する。
- テクスチャMODは、BepInEx単体で正常起動してから追加する。
個人的には、今回いきなりテクスチャMODの中身を疑う必要はないと思います。
まずは「ゲームを1回起動したらBepInEx/LogOutput.txtが出る状態」を作ること。
ここまで成功すれば、BepInExは少なくともゲームに読み込まれているので、その次にテクスチャ変更MODの作成へ進めます。
逆にログすら出ない状態でDLLやテクスチャMODを何度も入れ替えると、原因が分からなくなります。
今回のようなケースでは、まず「MODを動かす」ではなく、「BepInExを確実に起動させる」ことを最初のゴールにするのが一番早いと思います。

