Read the first exception from a fresh reproduction. Later exceptions often follow the same failed load or missing object. Copy its type, message, stack trace, and preceding plugin or phase lines.
For BepInEx 5, start with BepInEx/LogOutput.log relative to the game folder. BepInEx documents its disk listener writing there. Its output_log.txt reference is generic loader documentation, not a Rain World player path claim.
For a native Windows launch, Unity 2020.3 gives the default Player log as %USERPROFILE%\AppData\LocalLow\CompanyName\ProductName\Player.log. The placeholders come from player configuration, so this page does not name a Rain World directory. UnityEngine.Application.consoleLogPath reports the current path, or an empty string without log-file support. No Rain World log or player configuration was inspected.
For a Windows game under Steam Proton, keep using BepInEx/LogOutput.log in the game folder. A Proton game has a per-game Wine prefix at steamapps/compatdata/<app-id>/pfx/, in the same Steam library as the game. The Windows Player path belongs below that prefix’s drive_c tree, so %USERPROFILE%\AppData\LocalLow\... maps there rather than to a native Linux or macOS Unity log directory. Rain World’s Steam app ID is 312520. BepInEx’s Proton or Wine instructions use protontricks to select that game’s prefix and configure the winhttp override. This path mapping describes where to inspect logs after a compatible launch. It does not establish that Rain World or BepInEx runs under Proton or Wine.
Search the BepInEx log and the applicable Unity Player log for the mod’s plugin name, GUID, exception type, or [Error.
Locate the first failure
Close the game and copy a log containing a failure before the next run. Reproduce once with a stated setup. From the log start, find the earliest exception naming the plugin or an assembly it needs. Read upward to the prior phase marker and downward through its stack trace.
The exception type describes the failed operation. The stack trace lists the methods that led to it. Inspect your plugin’s first line, or the loader line after a missing assembly or rejected plugin type.
| First exception | Usual next check |
|---|---|
FileNotFoundException or FileLoadException | Missing file or an assembly that could not load, then references and copied files |
TypeLoadException or MissingMethodException | Named type or member, build, loader version, and compile-time signature |
NullReferenceException | Instance access and room, session, or object state at that point |
InvalidProgramException | IL hook target, emitted IL or metadata, and baseline assemblies |
These types need the first plugin line and test conditions to identify a cause.
Add markers that answer a question
BaseUnityPlugin.Logger gives a BepInEx.Logging.ManualLogSource. The inspected installed BepInEx 5.4.17.0 exposes LogInfo, LogWarning, and LogError, among other levels. Write one LogInfo before and after a risky setup step. If a caught exception has useful context, call Logger.LogError(exception) so the type and stack trace survive.
Avoid a marker in global::Player.Update(System.Boolean) or another frequent method. Hundreds of repeated lines make the first exception harder to locate and can add work to the test. Debugging and performance covers counters and measurements for a hot path.
Make the report usable
Include the Rain World build, the mod version or DLL hash, enabled mod list when it can be shared, exact action that triggered the error, and the complete first exception. Remove personal paths, Steam account details, and save data before posting a log. If the error is an IL hook issue, add the owning method signature and whether setup was skipped or applied. IL hooks has the matching evidence to record.
The local baseline is Rain World v1.11.8, Steam build 22785462, with BepInEx 5.4.17.0. No game launch or log capture was performed for this article. Use Testing a mod to reproduce with one variable changed.
Sources
- BepInEx 5 logging guide
- Unity 2020.3 log files
- Unity 2020.3
Application.consoleLogPath - BepInEx under Proton or Wine
- Valve Proton FAQ
- .NET file loading exceptions, FileLoadException
- .NET type and member loading exceptions, MissingMethodException
- .NET null reference exceptions
- .NET invalid program exceptions