This is my attempt to share my limited knowledge of save editing with Windows 7 (Using a different OS can change file locations & other things).
Warning: You may corrupt your save/blow up the planet while editing, create backups before toying with things.
Part 1: Getting StartedSave file locationThere's a few ways to find the save file location.
The Easy Way:
Open Rimworld
Start a game
Open the in-game menu
Click on Options
Look under Gameplay and click "Open save data folder"
A folder should open up with your saves & stuff
(Windows 7) Manual navigation:
Navigate to C:\Users\*\AppData\LocalLow\Ludeon Studios\RimWorld
* is my windows user name, replace it with your own and find your way there.
Open the saves folder and you're there.
(Windows 7) The Minecraft Way:
Search for %appdata% in the Start menu
Open the folder "Roaming" when it appears
Click on appdata in the Navigation bar
Open LocalLow
Open Ludeon Studios
Open Rimworld
Open saves folder and you're there.
Opening a .rwm save file requires you to select a program to open it with. Notepad will work, personally I recommend using Notepad++.
Notepad ++I recommend grabbing
Notepad++ for editing save files, it allows you to open multiple save files in different tabs (It's nice to be able to compare save files)
Part 2: A colonist and what they look like in a save fileHere's what a colonist looks like in a save file.
<thing Class="Pawn">
<def>Human</def>
<id>Human1</id>
<pos>(140, 0, 120)</pos>
<rot>1</rot>
<faction>Colony</faction>
<kindDef>Colonist</kindDef>
<jailerFaction>null</jailerFaction>
<story>
<name.first>Julian</name.first>
<name.last>Kocher</name.last>
<name.nick>Julian</name.nick>
<childhood>MedievalLordlingUntitledShort1206230971</childhood>
<adulthood>LudditeRebelLuddite1864176822</adulthood>
<skinColor>RGBA(1.000, 0.937, 0.835, 1.000)</skinColor>
<hairColor>RGBA(0.310, 0.280, 0.260, 1.000)</hairColor>
<crownType>Average</crownType>
<headGraphicPath>Things/Pawn/Humanoid/Heads/Male/Male_Average_Pointy</headGraphicPath>
<hairDef>Spikes</hairDef>
<traits>
<allTraits>
<li Class="Trait">
<def>Psychopath</def>
</li>
</allTraits>
</traits>
</story>
<age>32</age>
<apparel>
<wornApparel>
<li Class="Apparel">
<def>Apparel_CollarShirt</def>
<id>Apparel_CollarShirt3</id>
<health>100</health>
<color>RGBA(0.389, 0.398, 0.388, 1.000)</color>
</li>
</wornApparel>
</apparel>
<equipment>
<primary IsNull="True" />
<secondaries />
</equipment>
<mind>
<MindState>
<lastJobTag>Idle</lastJobTag>
<duty IsNull="True" />
<enemyTarget>null</enemyTarget>
</MindState>
</mind>
<playerController>
<drafter>
<autoUndrafter>
<lastNonWaitingTick>300</lastNonWaitingTick>
</autoUndrafter>
</drafter>
</playerController>
<jobs>
<curJob>
<def>Goto</def>
<targetA>(143, 0, 121)</targetA>
<targetC>(0, 0, 0)</targetC>
<targetQueueA IsNull="True" />
<targetQueueB IsNull="True" />
<placedTargets IsNull="True" />
<numToBring IsNull="True" />
<bill>null</bill>
<moveSpeed>Walk</moveSpeed>
<commTarget>null</commTarget>
<eqToUse>null</eqToUse>
</curJob>
<curJobDriver Class="JobDriver_Goto">
<curToilIndex>0</curToilIndex>
<ticksLeftThisToil>-109</ticksLeftThisToil>
<curToilCompleteMode>PatherArrival</curToilCompleteMode>
</curJobDriver>
</jobs>
<healthTracker>
<pawnHealth>100</pawnHealth>
<bodyModel>
<injuries />
<nonlocalInjuries />
<missingParts />
<maxPainLevelMultiplier>1</maxPainLevelMultiplier>
</bodyModel>
</healthTracker>
<pather>
<nextSquare>(141, 0, 121)</nextSquare>
<ticksUntilMove>14</ticksUntilMove>
<totalMoveDuration>40</totalMoveDuration>
<pathMode>OnSquare</pathMode>
<destination>(143, 0, 121)</destination>
</pather>
<inventory>
<container>
<maxStacks>99999</maxStacks>
<contents>
<li Class="ThingWithComponents">
<def>DoorKey</def>
<id>DoorKey2</id>
<health>30</health>
</li>
</contents>
</container>
</inventory>
<filth>
<carriedFilth />
</filth>
<food>
<pieceFood>
<curLevel>79.56024</curLevel>
</pieceFood>
</food>
<rest>
<pieceRest>
<curLevel>79.71382</curLevel>
</pieceRest>
</rest>
<carryHands>
<container>
<maxStacks>1</maxStacks>
<contents />
</container>
</carryHands>
<psychology>
<thoughts>
<thoughts>
<li Class="Thought">
<def>NewColonyOptimism</def>
<age>150</age>
</li>
</thoughts>
</thoughts>
<mood>
<curLevel>51.3125</curLevel>
</mood>
<environment>
<curLevel>54.8</curLevel>
</environment>
<openness>
<curLevel>92.5</curLevel>
</openness>
<recentMemory>
<lastLightTick>999999</lastLightTick>
<lastOutdoorTick>312</lastOutdoorTick>
</recentMemory>
</psychology>
<prisoner IsNull="True" />
<ownership>
<ownedBed>null</ownedBed>
</ownership>
<talker />
<skills>
<skills>
<li Class="SkillRecord">
<def>Construction</def>
<level>5</level>
<xpSinceLastLevel>3311.884</xpSinceLastLevel>
<passion>Minor</passion>
</li>
<li Class="SkillRecord">
<def>Growing</def>
<level>2</level>
<xpSinceLastLevel>2565.002</xpSinceLastLevel>
</li>
<li Class="SkillRecord">
<def>Research</def>
<level>3</level>
</li>
<li Class="SkillRecord">
<def>Mining</def>
<level>4</level>
<xpSinceLastLevel>763.1116</xpSinceLastLevel>
<passion>Minor</passion>
</li>
<li Class="SkillRecord">
<def>Shooting</def>
<level>3</level>
<xpSinceLastLevel>1717.906</xpSinceLastLevel>
</li>
<li Class="SkillRecord">
<def>Melee</def>
<level>6</level>
<xpSinceLastLevel>5459.545</xpSinceLastLevel>
<passion>Major</passion>
</li>
<li Class="SkillRecord">
<def>Social</def>
<level>7</level>
<xpSinceLastLevel>1400.784</xpSinceLastLevel>
<passion>Minor</passion>
</li>
<li Class="SkillRecord">
<def>Cooking</def>
<level>3</level>
<xpSinceLastLevel>1405.521</xpSinceLastLevel>
</li>
<li Class="SkillRecord">
<def>Medicine</def>
<level>3</level>
<xpSinceLastLevel>3038.747</xpSinceLastLevel>
</li>
<li Class="SkillRecord">
<def>Artistic</def>
<level>3</level>
<xpSinceLastLevel>2915.657</xpSinceLastLevel>
</li>
<li Class="SkillRecord">
<def>Crafting</def>
<level>3</level>
</li>
</skills>
</skills>
<workSettings>
<workPriorities>
<keys>
<li>Warden</li>
<li>Repair</li>
<li>Construction</li>
<li>Hunting</li>
<li>Mining</li>
<li>Cleaning</li>
<li>Hauling</li>
<li>Patient</li>
<li>Firefighter</li>
<li>Research</li>
<li>Crafting</li>
</keys>
<values>
<li>4</li>
<li>4</li>
<li>4</li>
<li>4</li>
<li>4</li>
<li>4</li>
<li>4</li>
<li>4</li>
<li>4</li>
<li>0</li>
<li>0</li>
</values>
</workPriorities>
</workSettings>
</thing>
What is "Thing"?Reading through the contents of the colonist save section is mostly self explanatory, the first area:
<thing Class="Pawn">
<def>Human</def>
<id>Human1</id>
<pos>(140, 0, 120)</pos>
<rot>1</rot>
<faction>Colony</faction>
<kindDef>Colonist</kindDef>
<jailerFaction>null</jailerFaction
Tells you what the "thing" is, It is a Human located at 140,0,120 facing east. The human is also a member of the colony and a Colonist, also the human is not jailed by any faction.
Some notes:
Colonists gained from randomly joining will be listed as villagers, not colonist. <kindDef>Villager</kindDef> instead of <kindDef>Colonist</kindDef>.
The <jailerFaction> section states what faction has jailed this person.
Directions are as follows North=0? East=1 South=2 West=3, this is for the <rot> value (Rotation), North isn't actually defined the <rot> </rot> section is entirely removed when facing north (back towards player)
What is Thing's story? - Backstory, traits, name, skin, and hair colourAnd the next section is Story, the backstory name and colonists skin & hair colour are defined here.
<story>
<name.first>Julian</name.first>
<name.last>Kocher</name.last>
<name.nick>Julian</name.nick>
<childhood>MedievalLordlingUntitledShort1206230971</childhood>
<adulthood>LudditeRebelLuddite1864176822</adulthood>
<skinColor>RGBA(1.000, 0.937, 0.835, 1.000)</skinColor>
<hairColor>RGBA(0.310, 0.280, 0.260, 1.000)</hairColor>
<crownType>Average</crownType>
<headGraphicPath>Things/Pawn/Humanoid/Heads/Male/Male_Average_Pointy</headGraphicPath>
<hairDef>Spikes</hairDef>
<traits>
<allTraits>
<li Class="Trait">
<def>Psychopath</def>
</li>
</allTraits>
</traits>
</story>
Again self explanatory, for editing traits & back stories I recommend Neurotoxin's
save editor paired with the Rimworld
wiki, Just a note, changing backstory manually or with Neuro's editor won't affect stats, but it will allow your colonist to do jobs disabled by their old backstory.
What is Thing up to? - Age, Apparel, equipment(Weapon), Mindstate, and current job detailsThis next section I'm entirely unfamiliar with but a few things are again self explanatory
<age>32</age>
<apparel>
<wornApparel>
<li Class="Apparel">
<def>Apparel_CollarShirt</def>
<id>Apparel_CollarShirt3</id>
<health>100</health>
<color>RGBA(0.389, 0.398, 0.388, 1.000)</color>
</li>
</wornApparel>
</apparel>
<equipment>
<primary IsNull="True" />
<secondaries />
</equipment>
<mind>
<MindState>
<lastJobTag>Idle</lastJobTag>
<duty IsNull="True" />
<enemyTarget>null</enemyTarget>
</MindState>
</mind>
<playerController>
<drafter>
<autoUndrafter>
<lastNonWaitingTick>300</lastNonWaitingTick>
</autoUndrafter>
</drafter>
</playerController>
<jobs>
<curJob>
<def>Goto</def>
<targetA>(143, 0, 121)</targetA>
<targetC>(0, 0, 0)</targetC>
<targetQueueA IsNull="True" />
<targetQueueB IsNull="True" />
<placedTargets IsNull="True" />
<numToBring IsNull="True" />
<bill>null</bill>
<moveSpeed>Walk</moveSpeed>
<commTarget>null</commTarget>
<eqToUse>null</eqToUse>
</curJob>
<curJobDriver Class="JobDriver_Goto">
<curToilIndex>0</curToilIndex>
<ticksLeftThisToil>-109</ticksLeftThisToil>
<curToilCompleteMode>PatherArrival</curToilCompleteMode>
</curJobDriver>
</jobs>
From here you can see the humans age, apparel, equipment, state of mind (Mental brakes: dazed/rampage) and finally their current job.
Note: for editing this, I'd experiment with in-game resources to see different values depending on what that person was doing/wearing at the time.
Ex. For apparel wear power armour and then save to see its <def> & <id> so that you know the proper names to edit in as desired.