This document provides a comprehensive reference to the decompiled RimWorld codebase structure, organized by namespace and folder. This reference is intended for modders working with the RimWorld Access mod or other RimWorld modifications. Total Files: ~9,000+ C# files
Total Namespaces: 14+ major namespaces plus external libraries
- Root Level Files
- RimWorld Namespace
- Verse Namespace
- Verse.AI Namespace
- Verse.AI.Group Namespace
- Verse.Glow Namespace
- Verse.Grammar Namespace
- Verse.Noise Namespace
- Verse.Profile Namespace
- Verse.Sound Namespace
- Verse.Steam Namespace
- Verse.Utility Namespace
- RimWorld.BaseGen Namespace
- RimWorld.IO Namespace
- RimWorld.Planet Namespace
- RimWorld.QuestGen Namespace
- RimWorld.SketchGen Namespace
- RimWorld.Utility Namespace
- LudeonTK Namespace
- External Libraries
- Architecture Patterns
Location: /decompiled/ (32 files)
These are utility and specialized classes in the root namespace, primarily handling complex generation systems and special behaviors.
| File | Purpose |
|---|---|
LayoutWorker.cs |
Base class for procedural layout generation for various site structures and complexes |
LayoutWorker_AncientStockpile.cs |
Layout generation for ancient stockpile sites |
LayoutWorker_Labyrinth.cs |
Complex labyrinth layout generation with puzzle-like room configurations |
LayoutWorker_OrbitalPlatform.cs |
Layout for orbital platform structures |
LayoutWorker_SimpleRuin.cs |
Simple ruined structure layout generation |
LayoutWorker_Structure.cs |
Generic structure layout with detailed room and corridor generation |
LayoutWorkerComplex.cs |
Base class for complex multi-level layout generation |
LayoutWorkerComplex_Ancient.cs |
Ancient complex layout generation system |
LayoutWorkerComplex_Mechanitor.cs |
Mechanitor-related complex layout generation |
| File | Purpose |
|---|---|
CallBossgroupUtility.cs |
Utilities for summoning boss groups via devices and managing boss group mechanics |
Command_CallBossgroup.cs |
UI command for calling boss groups |
DarknessCombatUtility.cs |
Handles darkness-based combat modifiers (shooting accuracy, melee hit chance, dodge chance based on lighting conditions and ideology) |
HistoryEventUtility.cs |
Utilities for recording and managing historical game events |
JobDriver_BreastfeedCarryToMom.cs |
AI job driver for babies to carry feed items to nursing mother pawns |
JobDriver_BreastfeedCarryToDownedMom.cs |
Variant for downed nursing mothers |
MechanitorUtility.cs |
Utilities for mechanitor and mech-related interactions |
MechWorkUtility.cs |
Utilities for mechanical work and maintenance |
| File | Purpose |
|---|---|
Delay.cs |
Simple delay/timeout utility structure |
DevWindowDrawing.cs |
Utilities for drawing developer debug windows |
FleckParallelizationInfo.cs |
Data structure for parallel processing of visual effects (flecks) |
FleckUtility.cs |
Utilities for managing game flecks (small visual effects like blood splatters) |
PerformanceBenchmarkUtility.cs |
Performance benchmarking and profiling utilities |
ResearchUtility.cs |
Utilities for research system interactions and calculations |
ScenarioUtility.cs |
Utilities for scenario setup and management |
| File | Purpose |
|---|---|
Screen_ArchonexusSettlementCinematics.cs |
UI screen displaying cinematics for Archonexus settlement sequences |
StructureGenParams.cs |
Parameters for procedural structure generation |
Thought_FoodEaten.cs |
Specialized thought class for food eating reactions |
WeaponClassDef.cs |
Definition for weapon classifications |
WeaponClassPairDef.cs |
Definition for paired weapon classes |
| File | Purpose |
|---|---|
__JobReflectionRegistrationOutput__18251418111571612730.cs |
Auto-generated job reflection registration |
UnitySourceGeneratedAssemblyMonoScriptTypes_v1.cs |
Unity-generated assembly script types |
-BurstDirectCallInitializer.cs |
Burst compiler initialization for performance optimization |
Location: /decompiled/RimWorld/ (5,913 files)
The largest namespace containing all game-specific systems and mechanics. This is the primary namespace for game content and gameplay systems.
The RimWorld namespace is organized into several major functional categories:
Implement specific pawn work activities. Each JobDriver defines how a pawn performs a specific task:
Common JobDrivers:
JobDriver_Blind.cs,JobDriver_Dance.cs,JobDriver_Floordrawing.cs- Recreation/social activitiesJobDriver_Hunt.cs,JobDriver_NatureRunning.cs- Hunting and outdoor workJobDriver_TendPatient.cs,JobDriver_TendEntity.cs- Medical careJobDriver_LayDown.cs,JobDriver_LayDownAwake.cs- Sleep and restJobDriver_UseCommsConsole.cs,JobDriver_Radiotalking.cs- CommunicationJobDriver_WatchTelevision.cs,JobDriver_WatchBuilding.cs,JobDriver_ViewArt.cs- EntertainmentJobDriver_Sacrifice.cs,JobDriver_DeliverPawnToAltar.cs- Religious/ritual workJobDriver_VisitGrave.cs,JobDriver_VisitJoyThing.cs,JobDriver_VisitSickPawn.cs- Social visitsJobDriver_InstallImplant.cs,JobDriver_GetReimplanted.cs- Bionic operationsJobDriver_Hack.cs,JobDriver_ActivateMonolith.cs,JobDriver_InspectGravEngine.cs- Ancient technology interactionJobDriver_UseItem.cs,JobDriver_UseItemResearchBench.cs- General item usage
AI decision makers for assigning jobs based on conditions:
JobGiver_Binge*.cs- Addiction-driven behaviorJobGiver_AITrash*.cs- Garbage and waste managementJobGiver_FleePotentialExplosion.cs,JobGiver_FindOxygen.cs- Emergency behaviorJobGiver_SentryPatrol.cs- Military patrol dutiesJobGiver_AIReleaseMechs.cs- Mechanoid release management
Reusable job action components that can be combined to create complex job behaviors:
Toils_Tend.cs- Medical treatment actionsToils_Misc.cs- Miscellaneous work toilsToils_Refuel.cs- Refueling actionsToils_Interpersonal.cs- Social interaction toils
In-game notifications for various conditions:
Colonist & Pawn Alerts:
Alert_ColonistLeftUnburied.cs- Dead bodiesAlert_Boredom.cs,Alert_Biostarvation.cs- Pawn needsAlert_FireStartingSpree.cs- Mental break warnings
Animal Management:
Alert_AnimalPenNeeded.cs,Alert_AnimalRoaming.cs- Animal management
Equipment & Combat:
Alert_BrawlerHasRangedWeapon.cs- Equipment warnings
Dozens more covering all major game systems
Pawn thoughts affecting mood. Covers social, environmental, ideological, and circumstantial thoughts:
Thought_FoodEaten.cs- Reactions to food types- Various thought implementations for mood management
Severe pawn behavioral states during mental breaks
Mental breakdown definitions and triggers
Core ability system components:
| File | Purpose |
|---|---|
Ability.cs |
Base ability class |
AbilityCategoryDef.cs |
Ability category definitions |
AbilityDef.cs |
Ability definitions |
AbilityDefOf.cs |
Static references to common abilities |
AbilityComp.cs |
Component system for ability modifiers |
AbilityUtility.cs |
Ability helper functions |
Specialized building types:
Building_Bed.cs- Sleeping structuresBuilding_Door.cs- Door mechanics and pathfindingBuilding_TurretGun.cs- Defensive turretsBuilding_Power*.cs- Power generation/transmission buildings
Component-based system for building/pawn behaviors:
Major Comp Categories:
- Power, heat, temperature management
- Breakdowns and maintenance
- Storage and inventory
- Combat and damage
- Production and crafting
- Many specialized systems
This component system allows buildings and pawns to have modular, extensible behaviors.
Core pawn entity management:
| File | Purpose |
|---|---|
Pawn.cs |
Core pawn entity (colonists, animals, enemies) |
PawnKindDef.cs |
Definition of pawn types |
PawnRelationUtility.cs |
Relationship calculations |
PawnGenerationRequest.cs |
Pawn creation parameters |
Related Systems:
- Health and medical system
- Psychology and mood system
- Needs management (food, rest, recreation, comfort)
- Skills and trait systems
- Relationships and social interactions
Work order and recipe system:
| File | Purpose |
|---|---|
Bill.cs |
Individual work order |
BillStack.cs |
Work order queue management |
RecipeDef.cs |
Recipe definitions |
Ingrediant.cs |
Recipe ingredient requirements |
Combat mechanics and damage system:
Key Files:
Verb_*.csfiles - Weapon attack types (shooting, melee, explosions)Projectile.cs- Projectile mechanics and ballisticsDamage*.csfiles - Damage calculation and applicationCombat*.csutilities - Combat calculations and modifiers
Technology progression system:
| File | Purpose |
|---|---|
ResearchManager.cs |
Research progress tracking |
ResearchProjectDef.cs |
Research definition |
TechBook.cs |
Technology knowledge items |
Inter-faction relationship system:
| File | Purpose |
|---|---|
Faction.cs |
Faction definition and state |
FactionRelation.cs |
Inter-faction relationships |
NegotiationUtility.cs |
Trade and negotiation mechanics |
General purpose utilities:
GenText.cs,GenUI.cs,GenMath.cs- General utilities*Def.csfiles - Static definition collections*Utility.cs- Domain-specific utilities- Statistical modifiers, trait definitions, dialogue systems, etc.
Location: /decompiled/Verse/ (1,747 files)
Core engine systems shared across all RimWorld content. The fundamental game framework that other namespaces build upon.
Verse is the core engine layer, providing fundamental systems like data structures, UI, graphics, sound, and low-level game mechanics.
Core coordinate and mathematical types:
| File | Purpose |
|---|---|
IntVec3.cs |
3D integer coordinate system (primary tile coordinate type) |
IntVec2.cs |
2D integer coordinate system |
Rot4.cs |
4-direction rotation (North, East, South, West) |
FloatRange.cs, IntRange.cs |
Numeric range containers |
Vector2Utility.cs, Vector3Utility.cs, IntVec3Utility.cs |
Vector math utilities |
ByteRange.cs |
Byte-based ranges |
RotEnum.cs, RotEnumExtensions.cs, RotationDirection.cs |
Rotation enumerations |
Debug and logging infrastructure:
| File | Purpose |
|---|---|
Log.cs |
Central logging system |
LogMessage.cs, LogMessageType.cs |
Log message definitions |
LogMessageQueue.cs |
Queued logging |
DebugLogsUtility.cs |
Debug logging helpers |
Collection utilities and data structures:
| File | Purpose |
|---|---|
GenList.cs, GenDictionary.cs |
Collection utilities |
SimplePool.cs, FullPool.cs |
Object pooling systems |
SimpleLinearPool.cs |
Linear pool allocator |
LRUCache.cs |
Least recently used cache implementation |
EventQueue.cs |
Event queue system |
Text processing and parsing:
| File | Purpose |
|---|---|
ParseHelper.cs |
Parsing utilities |
GenString.cs |
String manipulation |
GenericConverter.cs |
Type conversion |
MathEvaluator*.cs files |
Mathematical expression evaluation |
GenAttribute.cs |
Attribute reflection utilities |
GenTypes.cs |
Type system utilities |
XmlHelper.cs |
XML parsing assistance |
CultureInfoUtility.cs |
Locale/culture utilities |
User interface system:
| File | Purpose |
|---|---|
UI.cs |
UI management |
InspectTabBase.cs, InspectTabManager.cs |
Inspector UI system |
TexGame.cs |
Game textures |
GameplayTipWindow.cs |
Gameplay hints |
ModSummaryWindow.cs |
Mod information display |
ShaderParameter.cs |
Shader parameters |
Effect and ability framework:
| File | Purpose |
|---|---|
AbilityCompProperties.cs |
Ability component properties |
DeathActionWorker*.cs files |
Death effect handling |
DeathActionProperties*.cs |
Death effect definitions |
ConditionalStatAffecter*.cs |
Conditional stat modifiers |
SubEffecter_*.cs files |
Effect sub-systems |
Gene and biological trait system:
| File | Purpose |
|---|---|
GeneticTraitData.cs |
Genetic trait definitions |
GeneticBodyType.cs |
Body type genes |
EndogeneCategory.cs |
Gene categories |
GeneCategoryDef.cs |
Gene category definitions |
GeneSymbolPack.cs |
Gene visual symbols |
PassionMod.cs |
Passion level modifiers |
Ritual and event framework:
| File | Purpose |
|---|---|
RitualStagePositions.cs |
Ritual stage positioning |
RitualStageOnTickActions.cs |
Ritual tick events |
PawnRitualReference.cs |
Pawn ritual involvement |
PawnRenderTreeDef.cs |
Pawn render tree definitions |
TagFilter.cs |
Tag filtering system |
DamageFactor.cs |
Damage modification factors |
OptionCategoryDef.cs |
Option categories |
General utilities:
| File | Purpose |
|---|---|
GenRadial.cs |
Radial calculations and patterns |
GenAdj.cs, GenAdjFast.cs |
Adjacent cell calculations |
AcceptanceReport.cs |
Approval/rejection reporting |
ToStringNumberSense.cs |
Number formatting |
ToStringStyle.cs |
String styling |
AnyEnum.cs |
Generic enum utilities |
Predicate.cs |
Predicate helper |
MurmurHash.cs |
Hash function implementation |
FreezeManager.cs |
Game freeze state management |
WorldFloodFiller.cs |
World flood fill algorithm |
Game startup and initialization:
| File | Purpose |
|---|---|
BaseContent.cs |
Base game content management |
UnityData.cs, UnityDataInitializer.cs |
Unity engine integration |
StaticConstructorOnStartup.cs |
Runtime initialization |
StaticConstructorOnStartupUtility.cs |
Initialization utilities |
BackCompatibility.cs |
Save game version compatibility |
BackCompatibilityConverter*.cs |
Version conversion handlers |
Core enumerations:
| File | Purpose |
|---|---|
LogMessageType.cs |
Log types |
AltitudeLayer.cs, Altitudes.cs |
Rendering altitude layers |
AnimalNameDisplayMode.cs |
Name display options |
AnimalType.cs |
Animal categorization |
ApparelLayerDef.cs |
Clothing layers |
Danger.cs |
Danger levels |
WaterBodyType.cs |
Water types |
ToStringNumberSense.cs |
Number display options |
Performance optimization systems:
| File | Purpose |
|---|---|
MoteCounter.cs |
Visual effect counting |
PawnWaterRippleMaker.cs |
Ripple effect management |
LongEventHandler.cs |
Long-running operation handling |
Area definition and management:
| File | Purpose |
|---|---|
Area.cs, AreaManager.cs |
Area definition and management |
AreaUtility.cs, AreaOverlap.cs, AreaSource.cs |
Area utilities |
ArenaUtility.cs |
Arena area utilities |
AnimalPen*.cs files |
Animal pen enclosure system |
Additional systems:
| File | Purpose |
|---|---|
AddedBodyPartProps.cs |
Body part properties |
AlternateGraphic.cs |
Alternate visual representations |
AnimationDef.cs, AnimationPart.cs, AnimationUtility.cs |
Animation system |
AnimationWorker_*.cs files |
Specific animation implementations |
AttachableThing.cs, AttachmentUtility.cs |
Attachment system |
AudioSourceUtility.cs |
Audio source management |
DangerUtility.cs |
Danger assessments |
ActiveTip.cs |
Tooltip system |
Location: /decompiled/Verse/AI/ (278 files)
Artificial Intelligence and behavior systems for pawns and creatures.
The AI system uses a hierarchical decision-making structure with Think Nodes, Job Givers, Jobs, and Toils.
Core job execution framework:
| File | Purpose |
|---|---|
Toil.cs |
Base job action unit (smallest work component) |
ToilCompleteMode.cs |
Job completion conditions |
ToilEffects.cs |
Effects that occur during toils |
ToilFailConditions.cs |
Conditions that fail jobs |
ToilJumpConditions.cs |
Conditions that jump to other toils |
| File | Purpose |
|---|---|
JobDriver_Goto.cs |
Movement only |
JobDriver_Wait.cs |
Idle waiting |
JobDriver_AttackMelee.cs |
Melee combat |
JobDriver_CastAbility*.cs |
Ability casting |
JobDriver_PlayStatic.cs, JobDriver_PlayToys.cs, JobDriver_PlayWalking.cs |
Recreation |
Pre-built toil collections:
| File | Purpose |
|---|---|
Toils_General.cs |
General-purpose toils |
Toils_Combat.cs |
Combat toils |
Toils_Interact.cs |
Interaction toils |
Toils_Effects.cs |
Visual/audio effect toils |
Toils_JobTransforms.cs |
Job modification toils |
Mental break and state management:
| File | Purpose |
|---|---|
MentalState.cs |
Base mental state class |
MentalStateWorker.cs |
Mental state decision maker |
MentalStateHandler.cs |
Mental state management |
MentalFitGenerator.cs |
Mental health assessment |
MentalBreakWorker_*.cs - Specific mental break types
| File | Purpose |
|---|---|
MentalState_Berserk.cs |
Violent rages |
MentalState_PanicFlee*.cs |
Fear responses |
MentalState_Tantrum*.cs |
Anger tantrums |
MentalState_Binging*.cs |
Addiction binges |
MentalState_WanderConfused.cs |
Confusion |
MentalState_Manhunter.cs |
Wild animal aggression |
MentalState_InsultingSpree*.cs |
Social outbursts |
MentalState_FireStartingSpree.cs |
Arson |
MentalState_SlaughterThing.cs |
Destructive rage |
MentalState_GiveUpExit.cs |
Despair/surrender |
AI decision tree:
| File | Purpose |
|---|---|
ThinkNode.cs |
Base AI decision node |
ThinkNode_Conditional.cs |
Conditional decision branches |
ThinkNode_Tagger.cs |
Action tagging |
ThinkNode_Subtree.cs |
Behavior tree branching |
ThinkNode_Random.cs |
Random selection |
ThinkNode_ChancePerHour_*.cs |
Probability-based decisions |
ThinkNode_ChancePerHour_Forage.cs |
Foraging |
ThinkNode_ChancePerHour_InsectDigChance.cs |
Insect behavior |
Support utilities:
| File | Purpose |
|---|---|
MurderousRageMentalStateUtility.cs |
Murderous rage handling |
JobGiver_PickupDroppedWeapon.cs |
Weapon pickup logic |
Location: /decompiled/Verse/AI/Group/ (129 files)
Group behavior and multi-pawn coordination systems.
The Lord system manages coordinated group behaviors like raids, caravans, and trading parties.
| File | Purpose |
|---|---|
LordJob.cs |
Base lord job (group mission) |
LordToil.cs |
Group behavior state |
Lord.cs |
Group leader/state manager |
LordManager.cs |
Multi-group coordinator |
LordUtility.cs |
Group utilities |
PawnGroup.cs |
Group definition |
LordToil_*.cs files - Specific group behaviors:
| File | Purpose |
|---|---|
LordToil_Travel.cs |
Group movement |
LordToil_AssaultColony.cs |
Raids |
LordToil_TravelExit.cs |
Group departure |
LordToil_Trade.cs |
Trading caravans |
LordToil_DefendPoint.cs |
Defense positions |
LordToil_PrepareForAssault.cs |
Raid preparation |
Transition_*.cs files - Group state transitions
Location: /decompiled/Verse/Glow/ (7 files)
Light and glow rendering system.
| File | Purpose |
|---|---|
GlowGrid.cs |
Grid-based light calculation |
PsychGlow.cs |
Psychological glow levels (mood/visibility) |
GlowFlooder.cs |
Light propagation algorithm |
SkyColorSet.cs |
Sky color management |
Location: /decompiled/Verse/Grammar/ (9 files)
Grammar and text generation systems for dynamic narrative text.
| File | Purpose |
|---|---|
GrammarRule.cs |
Grammar rule definition |
GrammarRequest.cs |
Text generation request |
GrammarResolverAccumulator.cs |
Rule resolution |
RulePackDef.cs |
Rule pack definitions |
Related grammar and NPC dialogue generation systems.
Location: /decompiled/Verse/Noise/ (51 files)
Procedural noise generation for world and map generation.
| File | Purpose |
|---|---|
Perlin.cs |
Perlin noise implementation |
NoiseDebugUI.cs |
Debug visualization |
NoiseRenderer.cs |
Noise rendering |
Billow.cs, Ridged.cs |
Noise modifier classes |
NoiseRenderer_NoisePlanes.cs |
Noise plane rendering |
Various noise utility and configuration classes for procedural generation.
Location: /decompiled/Verse/Profile/ (1 file)
Performance profiling system.
| File | Purpose |
|---|---|
Profiler.cs |
Performance measurement and profiling utilities |
Location: /decompiled/Verse/Sound/ (69 files)
Complete audio and sound effect system.
| File | Purpose |
|---|---|
SoundRoot.cs |
Root sound definition |
SoundStarter.cs |
Sound playback initiation |
SoundInfo.cs |
Sound parameters |
Sustainer.cs |
Continuous sound management |
SustainerManager.cs |
Multi-sustainer coordination |
SampleOneShot.cs, SampleSustainer.cs |
Audio sample management |
SubSustainer.cs |
Sub-sound management |
SustainerScopeFader.cs |
Sound scope fading |
| File | Purpose |
|---|---|
AudioSourcePool.cs |
Audio source object pool |
AudioSourcePoolWorld.cs |
World audio sources |
AudioSourcePoolCamera.cs |
Camera-relative audio |
AudioSourceMaker.cs |
Audio source creation |
SoundSlotManager.cs |
Audio slot allocation |
| File | Purpose |
|---|---|
SoundFilter.cs |
Base sound filter |
SoundFilterLowPass.cs, SoundFilterHighPass.cs |
Frequency filters |
SoundFilterEcho.cs, SoundFilterReverb.cs |
Effect filters |
ReverbSetup.cs, ReverbCustomPresets.cs |
Reverb configuration |
SoundFilterUtility.cs |
Filter utilities |
ImpactSoundTypeDef.cs |
Impact sound definitions |
Dynamic sound parameter mapping:
SoundParamSource_*.cs files - Specific parameter sources:
| File | Purpose |
|---|---|
SoundParamSource_Random.cs |
Random values |
SoundParamSource_Perlin.cs |
Perlin noise |
SoundParamSource_SourceAge.cs |
Sound age |
SoundParamSource_Underground.cs |
Underground detection |
SoundParamSource_External.cs |
External parameters |
SoundParamSource_AggregateSize.cs |
Size-based |
SoundParamSource_CameraAltitude.cs |
Camera height |
SoundParamSource_OutdoorTemperature.cs |
Temperature |
SoundParamSource_MusicPlayingFadeOut.cs |
Music fade |
SoundParamSource_AmbientVolume.cs |
Ambient volume |
SoundParamTarget_*.cs files - Specific targets:
SoundParamTarget_Volume.csSoundParamTarget_Pitch.csSoundParamTarget_PropertyLowPass.csSoundParamTarget_PropertyHighPass.csSoundParamTarget_PropertyEcho.csSoundParamTarget_PropertyReverb.cs
| File | Purpose |
|---|---|
AudioGrain.cs |
Base audio grain |
AudioGrain_Clip.cs |
Audio clip grain |
AudioGrain_Folder.cs |
Folder-based grain selection |
AudioGrain_Silence.cs |
Silent grain |
ResolvedGrain.cs |
Resolved audio grain |
ResolvedGrain_Clip.cs, ResolvedGrain_Silence.cs |
Resolved variants |
| File | Purpose |
|---|---|
SoundContext.cs |
Sound context/scope |
RepeatSelectMode.cs |
Repeat selection |
VoicePriorityMode.cs |
Voice priority |
MaintenanceType.cs |
Sound maintenance |
TimeType.cs |
Time type constants |
DebugSoundEventsLog.cs |
Debug logging |
MouseoverSounds.cs |
Mouse over audio |
SoundSizeAggregator.cs, ISizeReporter.cs |
Size reporting |
Location: /decompiled/Verse/Steam/ (14 files)
Steam platform integration for workshop, achievements, and friends.
| File | Purpose |
|---|---|
SteamManager.cs |
Steam platform manager |
SteamUtility.cs |
Steam utilities |
Related Steam API integration and configuration.
Location: /decompiled/Verse/Utility/ (1 file)
| File | Purpose |
|---|---|
Utility.cs |
Miscellaneous utility functions |
Location: /decompiled/RimWorld/BaseGen/ (125 files)
Procedural base and dungeon generation system using symbol resolution.
BaseGen uses a recursive symbol resolution system to generate complex structures from abstract descriptions.
| File | Purpose |
|---|---|
BaseGen.cs |
Main generation coordinator |
BaseGenUtility.cs |
Generation utilities |
GlobalSettings.cs |
Generation settings |
SymbolStack.cs |
Symbol resolution stack |
SymbolResolver.cs |
Base symbol resolver |
ResolveParams.cs |
Generation parameters |
InteriorSymbolResolverUtility.cs |
Interior generation utilities |
All inherit from SymbolResolver and handle specific generation tasks.
| File | Purpose |
|---|---|
SymbolResolver_AncientAltar.cs |
Ancient altars |
SymbolResolver_AncientTemple.cs |
Ancient temples |
SymbolResolver_AncientShrine.cs |
Ancient shrines |
SymbolResolver_AncientShrinesGroup.cs |
Shrine groups |
SymbolResolver_AncientRuins.cs |
Ruined structures |
SymbolResolver_AncientCryptosleepCasket.cs |
Cryptosleep pods |
SymbolResolver_Archonexus.cs |
Archonexus megastructure |
SymbolResolver_ArchonexusResearchBuildings.cs |
Archonexus research areas |
SymbolResolver_AncientComplex*.cs (5 variants) |
Large ancient complexes |
| File | Purpose |
|---|---|
SymbolResolver_BasePart_Indoors.cs |
Indoor base areas |
SymbolResolver_BasePart_Outdoors.cs |
Outdoor base areas |
SymbolResolver_BasePart_Indoors_Division_Split.cs |
Indoor subdivisions |
SymbolResolver_BasePart_Outdoors_Division_Grid.cs |
Outdoor grid layout |
SymbolResolver_BasePart_Outdoors_Division_Split.cs |
Outdoor subdivisions |
Indoor room generators:
| File | Purpose |
|---|---|
SymbolResolver_BasePart_Indoors_Leaf_Barracks.cs |
Military barracks |
SymbolResolver_BasePart_Indoors_Leaf_BatteryRoom.cs |
Power storage |
SymbolResolver_BasePart_Indoors_Leaf_Brewery.cs |
Alcohol production |
SymbolResolver_BasePart_Indoors_Leaf_DiningRoom.cs |
Dining areas |
SymbolResolver_BasePart_Indoors_Leaf_ThroneRoom.cs |
Throne rooms |
SymbolResolver_BasePart_Indoors_Leaf_Gravcore.cs |
Gravity cores |
SymbolResolver_BasePart_Indoors_Leaf_WorshippedTerminal.cs |
Religious terminals |
| File | Purpose |
|---|---|
SymbolResolver_BasePart_Outdoors_Leaf_Farm.cs |
Farms |
SymbolResolver_BasePart_Outdoors_Leaf_Building.cs |
Buildings |
SymbolResolver_BasePart_Outdoors_Leaf_LandingPad.cs |
Landing pads |
SymbolResolver_BasePart_Outdoors_Leaf_PowerPlant.cs |
Power generation |
SymbolResolver_BasePart_Outdoors_Leaf_Empty.cs |
Empty areas |
| File | Purpose |
|---|---|
SymbolResolver_EdgeWalls.cs |
Perimeter walls |
SymbolResolver_EdgeSandbags.cs |
Sandbag fortifications |
SymbolResolver_EdgeDefense.cs |
General edge defenses |
SymbolResolver_EdgeThing.cs |
Edge objects |
SymbolResolver_EdgeMannedMortar.cs |
Mortar emplacements |
| File | Purpose |
|---|---|
SymbolResolver_IndoorLighting.cs |
Lighting systems |
SymbolResolver_OutdoorLighting.cs |
Outdoor lights |
SymbolResolver_Roof.cs |
Roofing |
SymbolResolver_Doors.cs |
Door placement |
SymbolResolver_Bed.cs |
Bed placement |
SymbolResolver_FillWithBeds.cs |
Multiple beds |
SymbolResolver_PlaceChairsNearTables.cs |
Furniture arrangement |
SymbolResolver_GenericRoom.cs |
Generic interior rooms |
SymbolResolver_EmptyRoom.cs |
Empty rooms |
| File | Purpose |
|---|---|
SymbolResolver_Hives.cs |
Insectoid hives |
SymbolResolver_Infestation.cs |
Infestations |
SymbolResolver_Ambush.cs |
Ambush setups |
SymbolResolver_RandomMechanoidGroup.cs |
Mechanoid groups |
SymbolResolver_SleepingMechanoids.cs |
Sleeping mech setups |
SymbolResolver_DesiccatedCorpses.cs |
Dead bodies |
Location: /decompiled/RimWorld/IO/ (8 files)
File I/O and save/load system.
| File | Purpose |
|---|---|
SaveCompression.cs |
Save file compression |
DataSerializing.cs |
Data serialization |
ScribeMetaHeaderUtility.cs |
Save file headers |
Related file operations and data persistence.
Location: /decompiled/RimWorld/Planet/ (302 files)
World map, planet generation, and overland mechanics.
| File | Purpose |
|---|---|
WorldGen.cs |
World generation coordinator |
WorldGenStep_*.cs files - Sequential generation steps:
| File | Purpose |
|---|---|
WorldGenStep_Tiles.cs |
Base tile generation |
WorldGenStep_Terrain.cs |
Terrain type assignment |
WorldGenStep_Rivers.cs |
River generation |
WorldGenStep_Roads.cs |
Road networks |
WorldGenStep_Lakes.cs |
Water body generation |
WorldGenStep_Landmarks.cs |
Landmark placement |
WorldGenStep_Pollution.cs |
Pollution system |
WorldGenStep_Mutators.cs |
World mutations |
WorldGenStep_TileElementsCore.cs |
Core tile elements |
WorldGenStep_TileElementsOdyssey.cs |
Odyssey elements |
WorldGenStep_Grids.cs |
Grid generation |
WorldGenStep_Components.cs |
Component initialization |
World-scale geographic features:
| File | Purpose |
|---|---|
WorldFeature.cs |
World feature system |
FeatureWorker_*.cs files - Feature types:
| File | Purpose |
|---|---|
FeatureWorker_Biome.cs |
Biome regions |
FeatureWorker_MountainRange.cs |
Mountains |
FeatureWorker_Archipelago.cs |
Island groups |
FeatureWorker_Island.cs |
Individual islands |
FeatureWorker_Peninsula.cs |
Peninsulas |
FeatureWorker_Protrusion.cs |
Land protrusions |
FeatureWorker_Bay.cs |
Bay formations |
FeatureWorker_Cluster.cs |
Terrain clusters |
FeatureWorker_FloodFill.cs |
Area filling |
FeatureWorker_OuterOcean.cs |
Ocean edges |
Layered world rendering system:
| File | Purpose |
|---|---|
WorldDrawLayer.cs |
Base render layer |
WorldDynamicDrawManager.cs |
Dynamic rendering coordination |
WorldDrawLayer_*.cs files - Specific layers:
| File | Purpose |
|---|---|
WorldDrawLayer_Clouds.cs |
Cloud rendering |
WorldDrawLayer_Rivers.cs |
River rendering |
WorldDrawLayer_Roads.cs |
Road rendering |
WorldDrawLayer_Glow.cs |
Glow/light effects |
WorldDrawLayer_Hills.cs |
Terrain features |
WorldDrawLayer_Paths.cs |
Pawn paths |
WorldDrawLayer_Satellites.cs |
Orbital objects |
WorldDrawLayer_Landmarks.cs |
Landmark rendering |
WorldDrawLayer_Pollution.cs |
Pollution display |
WorldDrawLayer_CurrentMapTile.cs |
Current location |
WorldDrawLayer_SelectedTile.cs |
Selected tile |
| File | Purpose |
|---|---|
WorldGrid.cs |
Tile grid system |
WorldInfo.cs |
World information storage |
PositionData.cs |
Position data |
GlobalTargetInfo.cs |
Cross-world targeting |
Tile*.cs files |
Tile properties |
BiomeWorker.cs |
Biome determination |
World-scale pathfinding:
| File | Purpose |
|---|---|
WorldPathing.cs |
World pathfinding |
WorldPathGrid.cs |
Pathfinding grid |
WorldPath.cs |
Pathfinding result |
WorldPathPool.cs |
Path object pooling |
WorldReachability.cs |
Reachability calculation |
WorldReachabilityUtility.cs |
Reachability utilities |
Caravan system for overland travel:
| File | Purpose |
|---|---|
Caravan.cs |
Caravan group |
CaravanInventoryUtility.cs |
Caravan inventory |
Caravan_*.cs files:
| File | Purpose |
|---|---|
Caravan_BabyTracker.cs |
Baby management |
Caravan_BedsTracker.cs |
Bed availability |
Caravan_CarryTracker.cs |
Carrying capacity |
Caravan_ForageTracker.cs |
Food foraging |
Caravan_NeedsTracker.cs |
Pawn needs |
Caravan_TraderTracker.cs |
Trade management |
| File | Purpose |
|---|---|
WorldObject.cs |
Base world object |
WorldObjectComp.cs |
World object component system |
Settlement.cs |
Settlement objects |
SitePartWorker.cs |
Site part definitions |
MapParent.cs |
Map parent container |
Various WorldObjectComp*.cs files for components.
| File | Purpose |
|---|---|
SettleUtility.cs |
Settlement establishment |
SettleInExistingMapUtility.cs |
Settlement joining |
FastTileFinder.cs |
Rapid tile searching |
WorldGizmoUtility.cs |
World gizmo management |
TimedDetectionRaids.cs |
Raid timing |
TimedMakeFactionHostile.cs |
Faction hostility |
TimedForcedExit.cs |
Forced exit events |
TilesPerDayCalculator.cs |
Travel speed |
Location: /decompiled/RimWorld/QuestGen/ (381 files)
Dynamic quest generation and quest system.
| File | Purpose |
|---|---|
QuestGen.cs |
Main quest generation engine |
QuestNode.cs |
Base quest node |
QuestTextRequest.cs |
Text generation requests |
QuestGenUtility.cs |
Quest generation utilities |
QuestGen_*.cs files:
| File | Purpose |
|---|---|
QuestGen_Debug.cs |
Debug quest generation |
QuestGen_Delay.cs |
Delay utilities |
QuestGen_End.cs |
Ending quest generation |
QuestGen_Filter.cs |
Filtering logic |
QuestGen_Factions.cs |
Faction involvement |
QuestGen_Get.cs |
Retrieval operations |
QuestGen_HistoryEvents.cs |
Historical events |
QuestGen_Lord.cs |
Lord/group generation |
All extend QuestNode and define specific quest actions and generators.
| File | Purpose |
|---|---|
QuestNode_Sequence.cs |
Sequential execution |
QuestNode_RandomNode.cs |
Random selection |
QuestNode_SubScript.cs |
Subscript execution |
QuestNode_LoopCount.cs |
Loop execution |
QuestNode_Signal.cs |
Signal handling |
QuestNode_SendSignals.cs |
Signal sending |
| File | Purpose |
|---|---|
QuestNode_Log.cs |
Logging |
QuestNode_RuntimeLog.cs |
Runtime logging |
QuestNode_Message.cs |
Message display |
QuestNode_Letter.cs |
Letter sending |
QuestNode_Set.cs |
Variable setting |
| File | Purpose |
|---|---|
QuestNode_GetPawn.cs |
Pawn retrieval |
QuestNode_GetPawnKind.cs |
Pawn kind selection |
QuestNode_GetRandomPawnKindForFaction.cs |
Random pawn kind |
QuestNode_JoinPlayer.cs |
Pawn joining |
QuestNode_Leave.cs |
Pawn departure |
| File | Purpose |
|---|---|
QuestNode_GiveRewards.cs |
Reward distribution |
QuestNode_GiveRoyalFavor.cs |
Royal favor |
QuestNode_GiveTechprints.cs |
Technology distribution |
QuestNode_EndGame.cs |
Game ending |
| File | Purpose |
|---|---|
QuestNode_GetRandomElement.cs |
Random selection |
QuestNode_GetRandomElementByWeight.cs |
Weighted random |
QuestNode_GetRandomInRangeInt.cs |
Random integer |
QuestNode_GetRandomInRangeFloat.cs |
Random float |
Location: /decompiled/RimWorld/SketchGen/ (37 files)
Procedural sketch-based structure generation system.
| File | Purpose |
|---|---|
SketchGen.cs |
Main sketch generation |
SketchResolver.cs |
Base sketch resolver |
Various SketchResolver_*.cs files for specific structure generators.
Location: /decompiled/RimWorld/Utility/ (4 files)
Miscellaneous RimWorld utilities.
General purpose utility functions and helpers specific to RimWorld.
Location: /decompiled/LudeonTK/ (50 files)
Development and debugging toolkit (named after Ludeon Studios).
| File | Purpose |
|---|---|
DevGUI.cs |
Main developer GUI manager |
Window_Dev.cs |
Developer window |
Window_DevListing.cs |
Debug menu listing |
Window_DebugTable.cs |
Debug data tables |
Dialog_Debug.cs |
Debug dialog |
Dialog_OptionLister.cs |
Option listing |
EditWindow.cs |
Base edit window |
EditWindow_DefEditor.cs |
Definition editor |
EditWindow_TweakValues.cs |
Value tweaker |
EditWindow_DebugInspector.cs |
Object inspector |
EditWindow_Log.cs |
Log viewer |
| File | Purpose |
|---|---|
DebugTabMenu.cs |
Base debug tab |
DebugTabMenu_Actions.cs |
Action tab |
DebugTabMenu_Settings.cs |
Settings tab |
DebugTabMenu_Output.cs |
Output tab |
DebugTools.cs |
Debug action utilities |
DebugTool.cs |
Base debug tool |
| File | Purpose |
|---|---|
DebugActionAttribute.cs |
Debug action marker |
DebugActionYielderAttribute.cs |
Debug action generator |
DebugOutputAttribute.cs |
Debug output marker |
DebugActionType.cs |
Action type enum |
DebugActionButtonResult.cs |
Action result |
AllowedGameStates.cs |
Game state filtering |
DebugActionNode.cs |
Action node structure |
DebugLogsUtility.cs |
Debug logging |
| File | Purpose |
|---|---|
Dialog_DevNoiseBase.cs |
Base noise dialog |
Dialog_DevNoiseMap.cs |
Map noise visualization |
Dialog_DevNoiseWorld.cs |
World noise visualization |
Dialog_DevCelestial.cs |
Celestial noise |
Dialog_DevInfectionPathways.cs |
Infection pathways |
| File | Purpose |
|---|---|
Dialog_DevMusic.cs |
Music debugger |
Dialog_DevPalette.cs |
Color palette viewer |
MeasureTool.cs |
Distance measurement |
MeasureWorldDistanceTool.cs |
World distance measurement |
TweakValue.cs |
Value tweaking utility |
DebugHistogram.cs |
Histogram display |
DebugTables.cs |
Table generation |
Job scheduling library for performance optimization:
| File | Purpose |
|---|---|
ManagedJob.cs |
Base managed job |
ManagedJobFor.cs |
For-loop job |
ManagedJobParallelFor.cs |
Parallel for-loop |
ManagedJobParallelForTransform.cs |
Transform parallel job |
Trie data structure library for efficient string/key lookups.
Delaunay triangulation library for mesh generation.
Compression library for save file compression.
CRC checksum library for data integrity.
| File | Purpose |
|---|---|
VorbisWaveReader.cs |
Ogg Vorbis audio decoder |
| File | Purpose |
|---|---|
AudioFormat.cs |
Audio format definitions |
CustomAudioFileReader.cs |
Custom audio reading |
Manager.cs |
Audio loading manager |
Unity collections and data structures:
| File | Purpose |
|---|---|
NativeHeapIndex.cs |
Heap index |
HeapData.cs |
Heap data structure |
HeapNode.cs |
Heap node |
NativeHeapDebugView.cs |
Debug view |
UnsafeHeap.cs |
Unsafe heap |
Throughout the codebase, there's heavy use of a component system where:
- Base classes (e.g.,
Comp,WorldObjectComp,AbilityComp) define extensible properties - Derived classes implement specific behaviors
- Properties classes (
CompProperties_*) define configurable data
This allows for modular, extensible functionality without deep inheritance hierarchies.
Definitions (Defs) are serializable configuration objects that allow data-driven design:
*Defclasses - Define game content (e.g.,ThingDef,PawnKindDef,RecipeDef)*DefOfclasses - Static references to commonly-used defs for performance- Allow modding through XML configuration without code changes
Procedural generation uses recursive symbol resolution:
SymbolResolver- Resolves abstract symbols into concrete map elements- Parameters are passed down recursively through
ResolveParams - Each resolver can spawn child resolvers
- Enables complex generation from simple rules
Multi-layered decision system:
- ThinkNode tree - High-level decisions (what should I do?)
- JobGiver - Job assignment logic (what job should I take?)
- Job with Toils - Task execution (how do I do it?)
- JobDriver - Specific job implementation (detailed execution)
This separation allows for flexible, maintainable AI behavior.
Scribeclasses handle serializationExposeDatapattern for save/load consistency- Cross-reference management for object persistence
- Version compatibility handling via
BackCompatibilityclasses
- Signals - String-based event notifications
- Triggers - Condition-based event firing
- History Events - Tracked game events for quests and records
RimWorld uses Harmony for runtime code modification:
- Prefix patches - Run before original method
- Postfix patches - Run after original method
- Transpiler patches - Modify IL code directly
This is how mods like RimWorld Access modify game behavior without changing game files.
- RimWorld/ - Game-specific systems (factions, jobs, alerts, abilities)
- Verse/ - Core engine (coordinates, UI, sound, data structures)
- Verse.AI/ - AI behavior system
- RimWorld.Planet/ - World map and overland travel
- RimWorld.BaseGen/ - Structure generation
- RimWorld.QuestGen/ - Quest system
DefXML files - Define new content- Harmony patches - Modify existing behavior
MelonModclasses - Mod entry points- Component system - Extend buildings/pawns
- ThinkNodes/JobGivers - Custom AI behaviors
Thing- Physical objects in the worldPawn- Characters (colonists, animals, enemies)Building- Constructed structuresWorldObject- Objects on the world mapDef- Definition objects (loaded from XML)Comp- Component for ThingsJobDriver- AI job implementationThinkNode- AI decision node
GenSpawn- Spawning thingsGenPlace- Placing thingsGenCollection- Collection operationsGenText- Text utilitiesFind.*- Access game managers (e.g.,Find.World,Find.Maps)
- Decompiled Source Location:
C:\Users\Shane Earley\documents\personal_projects\rimworld\decompiled\ - RimWorld Access Mod:
C:\Users\Shane Earley\documents\personal_projects\rimworld\mod\ - Total Files Documented: ~9,000+
- Major Namespaces: 14+
- 2025-10-21 - Initial API reference creation
- Documented all major namespaces
- Listed key files and their purposes
- Included architecture patterns
- Added modding notes
This reference is based on the decompiled RimWorld source code and is intended for educational and modding purposes only. All rights to RimWorld belong to Ludeon Studios.