Autarky

Status Development Source
Finished Halted GitHub

Premise

RimWorld is a wonderful game where you manage a group of people who crash landed on an uncivilised namesake rimworld. Think Dwarf Fortress with more interface, less complexity and a flatter learning curve with the look heavily influenced by Prison Architect. Much like Dwarf Fortress it is a story generator that makes you deal with various environmental hazards and attackers along with the personal and interpersonal issues of your survivers (usually called pawns).
The player can’t control the pawns directly, except when in combat, only by giving orders to build structures, craft things or otherwise interact with constructions.

RimWorld is still relatively early in its development but had support for mods from the very beginning. As such there is a large community of modders who expand the game in all thinkable and unthinkable ways. From quality-of-life mods that improve on existing mechanics in one way or the other, to mods that introduce new mechanics to mods that add new playable species or convert the game to something else entirely.

Autarky, my first RimWorld mod, aimed to give the player access to certain things that already existed in the game but could only be obtained through trade, which makes acquisition a little tricky as traders arrive at random. So it may take very long until the required trader arrives or the player may not have the funds to buy the desired goods.
I dislike depending on RNG for game progress so I wanted to remedy that situation.

Development

Adding the crafting recipes to the game was quite straightforward. All static specifications, such as crafting recipes, configurations, species definitions or really any other non-changing configuration, are specified in XML, making their modification very simple. I tried to come up with a decently balanced recipe for the things I wanted reliable access to. In order to give the player the required items, but not devalue them, economical aspects had to be taken into consideration.

One major recipe chain I wanted to add was a path towards Luciferium, a late-game performance enhancement drug with a serious catch. It builds a dependency with the first dose and its extended withdrawal will kill the dependent pawn. Due to these restrictions Luciferium is usually considered a last resort to save a highly valued pawn, as it also cures all injuries except for dismemberment. But once you got your pawn hooked a somewhat reliable supply is crucial.
The drug’s description speaks of nano-technology being involved in its creation and my recipe needed to take that into account, so I added a new crafting station allowing to create mechanites. I also liked the idea of other drugs being used in the production, as Luciferium shares some of its performance enhancing effects with other in-game substances. This would also make these drugs more than just a source of income and danger in case any of the colonists had a chemical interest or fascination trait. Those pawns will infrequently go on drug binges, which makes drug production with them around a little interesting.
With drugs only being a source of income the player can easily skip on drug production and just sell art or other commodities instead. Requiring those drugs in the production of Luciferium would add an incentive for the player to set up a secured drug-lab and keep their chemical interest/fascination pawns out of it.

Screenshot of a boomrat producing chemicals Another item I wanted improved access to was Chemfuel, a highly flammable liquid used in the production of mortars and explosives. According to their descriptions, Boomrats and Boomalopes were genetically modified to produce a volatile chemical in sacks under their skin. The game reflects on that fact by making these animals explode when they die, which makes hunting them a little tricky but results in players taming and training them and later releasing them on attacking forces. I figured it could be interesting if they could be milked for that chemical, which could then be refined into Chemfuel. The precursor Screenshot of volatile chemicals in-game chemical should be even more volatile than Chemfuel, exploding when the container deteriorated too much or it was stored above safe temperatures for extended periods. To achieve all this, I had to touch the game’s C# part for the first time. The animal classes had to be modified to produce the desired chemical and be milkable for it. At first I used the built-in Milkable property for that purpose. Later I implemented my own version, since the built-in used a hard-coded “Milk fullness” text and volatile chemicals shouldn’t be referred to as milk. My implementation allowed for all labels involved to be Screenshot of volatile chemicals exploding fully configurable. I also needed to implement a property that gave the chemical a chance to catch on fire if the storage temperature was too high. With all the code in place the XML definitions had something to refer to and huge explosions ensued. Sucess!

Difficulties

  • Throughout development I had to keep re-balancing recipes according to my own experience and other players’ feedback. The introduction of the mechanites was made due to feedback from the test players on the RimWorld Discord.
  • The split construction (XML and C#) and the interaction of the parts of RimWorld was a little confusing at first. This was also my first exposure to C#, as Microsoft has made it available on Linux only fairly recently. So this was a double learning experience for me.

Synopsis

The mod was developed and released entirely in version 0.17 of RimWorld. I’m fairly happy with the balancing, but I’m aware that this is subject to taste and play-style and will not suit everyone. With the release of 0.18 RimWorld has re-balanced many of its recipes and added Chemfuel production in Boomalopes, making part of the mod obsolete. This requires me to re-balance large parts of the mod, which I have not taken the time to do yet. Development is currently halted.