The verified runtime is Rain World v1.11.8, Steam app 312520, Steam build 22785462. global::RainWorld.GAME_VERSION_STRING supplies the game version. The Unity executable identifies Unity 2020.3.45f1 (660cd1701bd5). The managed assembly file version 0.0.0.0 is not the Rain World release number.
Source identifiers
Use these hashes when comparing a report or example with this baseline. Game claims name the relevant symbol and refer to this table rather than a local path or a decompiler line.
| Component | Version or role | SHA-256 |
|---|---|---|
Assembly-CSharp.dll | Rain World game code | B6BE1D4E18CE219D21091B51564CB6A11C1E4106B41DE903EB8E58849CB16FDB |
Assembly-CSharp-firstpass.dll | First-pass managed code | 7180DA54E10BCFF9E068D04FC067F5A5225029D147120DF24814DAB909B442DB |
HOOKS-Assembly-CSharp.dll | On.* hook surface | 233BF3687919F125D248C75909C6795D82CBFE8E823DFAF1205EBC84473351EF |
BepInEx.dll | BepInEx 5.4.17.0 | DC1CB6B58B962BDA5AAA1D6B5F9AE14EC174F61836A1A1F96C1A040C7E8381F7 |
BepInEx.MultiFolderLoader.dll | Mod plugin directory discovery, version 1.3.1.0 | C0D96BD8B815044FF91CFC9072DB11A7A9B137C7638137EDBEB1DF16658B69BB |
The game assembly was inspected statically before accounting for changes made by other installed plugins. Hook signatures used by the examples were also checked by compilation.
Bundled module manifests
The installation contained known bundled module manifests at their expected module IDs:
| Module ID | Manifest version | Declared requirements |
|---|---|---|
devtools | absent | none |
expedition | absent | none |
jollycoop | absent | none |
moreslugcats | 1.11.0 | rwremix |
rwremix | 1.9.15b | none |
watcher | 1.5 | none |
File presence and manifest identity do not establish ownership, enablement, or unchanged Steam content. These versions are module versions rather than six separate DLC purchase claims. The tutorials use base content unless they name an additional dependency.
Runtime lifecycle and data readers
| Area | Full symbol | Verified behavior |
|---|---|---|
| Plugin creation | BepInEx.Bootstrap.Chainloader.Start() | Adds plugin types as Unity components. See First plugin. |
| Mod finalization | global::ProcessManager.Update(System.Single) | Runs the wrapped disable and initialization sequence during a process transition. |
| Initialization | global::RainWorld.PreModsInit(), global::RainWorld.OnModsInit(), global::RainWorld.PostModsInit() | Initializes configuration connection, enum and module extensions, then starts user data and config loading. See Hook lifecycle. |
| Abstract registration | global::AbstractRoom.AddEntity(global::AbstractWorldEntity) | Adds abstract world membership and separately tracks abstract creatures. |
| Object placement | global::AbstractPhysicalObject.RealizeInRoom() | Realizes and places an eligible physical object in a prepared room. See Abstract and realized objects. |
| Realized registration | global::Room.AddObject(global::UpdatableAndDeletable) | Adds updates, room ownership, collision layer membership, and drawable handling. |
| Room lookup | global::WorldLoader.FindRoomFile(System.String,System.Boolean,System.String,System.Boolean) | Resolves region rooms first, then defined fallback locations. |
| World graph reader | global::WorldLoader.MappingRooms() | Reads room connection entries from the world file. |
| Region list reader | global::Region.LoadAllRegions(global::SlugcatStats.Timeline, global::RainWorldGame) | Reads the resolved region list for a timeline. |
| Room settings reader | global::RoomSettings.Load(global::SlugcatStats.Timeline) | Reads room settings and timeline variants. |
| Room settings writer | global::RoomSettings.Save(global::SlugcatStats.Timeline) | Writes settings through the resolved destination. |
| Map writer | global::DevInterface.MapPage.SaveMapConfig() | Writes map positions and room attraction data. |
| Map image writer | global::DevInterface.MapRenderOutput.Signal(global::DevInterface.DevUISignalType, global::DevInterface.DevUINode, System.String) | Writes the map texture and image rectangle metadata. |
| Asset resolution | global::AssetManager.ResolveFilePath(System.String,System.Boolean,System.Boolean) | Checks merged output, active mods, and applicable content paths. See Rooms and regions. |
The nearby rock example hooks global::Player.Update(System.Boolean), scans global::Room.physicalObjects, checks global::Room.VisualContact(UnityEngine.Vector2,UnityEngine.Vector2), and adds a global::Spark through global::Room.AddObject(global::UpdatableAndDeletable). Object interaction gives the bounded algorithm and compilation command.
Compilation baseline
The public examples listed in the example build instructions compiled from their repository source with .NET SDK 10.0.400, Roslyn 5.9.0-1.26379.115, and C# language version 7.3. The build script references the installed Mono framework, Assembly-CSharp.dll, Assembly-CSharp-firstpass.dll, Unity assemblies, BepInEx, and the hook assembly. It performs no restore and no deployment.
Compilation establishes syntax, metadata references, and hook signatures for this installed baseline. It does not show that the loader discovered the DLL or that the hook behaved correctly in a running game.
Verification limits
No game session was launched for these articles. Plugin loading, Remix toggling, visual output, room transitions, cooperative play, online compatibility, save behavior, and interaction with other plugins remain runtime tests. Room export destinations, exit numbering, shelter geometry, gate traversal, campaign access, display name loading, and placed objects tied to a DLC also remain unverified.
Static behavior can change when another plugin detours the same method. The hook chain has local orig ordering, but the installed evidence did not establish a global order across mods. Abstract persistence through room unloading does not by itself establish save file persistence. Dev Tools writes through resolved paths, so authors should inspect outputs before packaging and keep authored files outside generated mergedmods content.
To compare another installation with this baseline, hash its managed DLLs and inspect only the needed symbols with ILSpy. A different hash means the behavior should be verified again for that installation. Do not redistribute game source or game assets.