-
Notifications
You must be signed in to change notification settings - Fork 0
Developer and Contributor Notes
DESKTOP-5KM6RA3\david edited this page Feb 25, 2026
·
1 revision
This page is the maintainer-focused reference for building, testing, and shipping Rimgate.
For player-facing setup and gameplay systems, start at Home.
For patch compatibility coverage, see Compatibility Matrix.
- Primary gameplay/content data lives under
Mod/1.6/Defs/(XML). - Runtime logic lives in
Source/Rimgate/(C#). - Build outputs shipped to players are in
Mod/1.6/(Assemblies+AssetBundles). - Raw textures/audio belong in
AssetsRaw/and are bundled via the Unity builder project. - The wiki is a git submodule at
wiki/and has its own commit history.
| Path | Purpose |
|---|---|
Mod/1.6/Defs/ |
Core XML content (things, research, factions, incidents, etc.) |
Mod/1.6/Patches/ |
XML patch operations (core and conditional mod compatibility) |
Source/Rimgate/ |
C# source for runtime systems and Harmony patches |
Mod/1.6/Assemblies/ |
Built Rimgate.dll output |
AssetsRaw/ |
Raw texture/audio source content |
UnityAssetBuilder/ |
Unity 2022.3 LTS project used to build AssetBundles |
Mod/1.6/AssetBundles/ |
Generated bundle outputs consumed by the mod |
wiki/ |
Git submodule for documentation (Rimgate.wiki.git) |
- RimWorld
1.6with required DLC set used by Rimgate. - .NET SDK available on
PATH(build-assembly.ps1runsdotnet build). - Unity
2022.3 LTSfor asset bundle generation. - Recommended: Visual Studio (or equivalent) for C# debugging against the RimWorld process.
.\build-assembly.ps1Optional configuration:
.\build-assembly.ps1 -Configuration Debug.\build-assetbundle.ps1Optional Unity path override:
.\build-assetbundle.ps1 -UnityPath "C:\Program Files\Unity\Hub\Editor\6000.3.9f1\Editor\Unity.exe".\build-release.ps1Optional:
.\build-release.ps1 -Configuration Release -UnityPath "C:\Program Files\Unity\Hub\Editor\6000.3.9f1\Editor\Unity.exe"- Put all raw textures/audio in
AssetsRaw/. - Do not manually place raw art/audio files under
Mod/. - After asset edits, run
build-assetbundle.ps1. - Treat
Mod/1.6/AssetBundles/as generated output. - Do not manually edit generated bundle files.
- Follow existing folder/category structure in
Mod/1.6/Defs/. - Use clear, consistent
defNamenaming (Rimgate_*for mod content). - Reuse existing def patterns where possible instead of inventing parallel schemas.
- Keep classes grouped by feature area (AI, Comps, Things, UI, Utilities, etc.).
- Register XML-linked definitions centrally via
Rimgate_DefOf. - Prefer narrowly scoped patches and avoid broad Harmony hooks when a local hook is sufficient.
- Put optional mod integrations under
Mod/1.6/Patches/using conditional patch patterns. - Keep patch intent explicit (what behavior is being corrected and why).
- Update Compatibility Matrix when new integrations are added or changed.
- Start RimWorld with Rimgate enabled.
- Confirm no startup XML errors.
- Validate the affected system in-game (buildability, jobs, inspect strings, incidents).
- Build with
.\build-assembly.ps1. - Launch RimWorld and reproduce the target behavior.
- Attach debugger if runtime behavior diverges from expected flow.
- Verify no obvious red-error spam in logs tied to your change.
- Re-test save/load once for stateful systems (gate links, sarcophagus state, cloning, ZPM systems).
- If touching UI strings, verify corresponding keys in
Mod/Languages/English/Keyed/Keys.xml.
- Run
.\build-release.ps1. - Confirm outputs:
Mod/1.6/Assemblies/Rimgate.dllMod/1.6/AssetBundles/rimgate_core
- Upload only the
Mod/folder to Workshop distribution. - Do not upload:
Source/UnityAssetBuilder/AssetsRaw/- raw textures/audio
wiki/ is a submodule (Rimgate.wiki.git), so wiki updates are tracked separately.
Practical workflow:
- Commit page changes inside
wiki/(submodule repo). - Commit the updated submodule pointer in the main repo.
- Push both repositories.
- Editing raw assets but forgetting to rebuild bundles.
- Reporting gameplay lockouts that are actually unmet research/analysis prerequisites.
- Assuming optional compatibility patches are active without the target mod present.
- Forgetting that generated outputs and source assets have different ownership paths.