So me and my friends started playing 7 Days to Die a while ago.

After we played for a while I was getting quite frustrated by the poor balancing choices made by the game devs. To be fair “Fun Pimps” (the development studio) were a team of two for the longest time, which shines a completely different light on the game as it is today. But after seven (!!!) years of early access one could argue, that some aspects of the game should be in a more polished state than they are right now.

Because of that I started adding my own tweaks and ideas to the game. It’s mostly config tweaks and changes in item recipes, but I learnt that you can (more or less) easily change core aspects of the game by patching classes and importing your own assets as unity3D files.

So I’ll look into that in the future.

The config files for the game are super easy to mod. All credit goes to the devs for their modular design and for making it super easy to just set new values in their configs.

As an example here is a mod I wrote to change the recipes for plant seeds:

<EasyPlantSeeds>
    <!-- seed changes-->
    <set xpath="/recipes/recipe[@name='plantedAloe1']/ingredient[@name='resourceCropAloeLeaf']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedBlueberry1']/ingredient[@name='foodCropBlueberries']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedChrysanthemum1']/ingredient[@name='resourceCropChrysanthemumPlant']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedCoffee1']/ingredient[@name='resourceCropCoffeeBeans']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedCorn1']/ingredient[@name='foodCropCorn']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedCotton1']/ingredient[@name='resourceCropCottonPlant']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedGoldenrod1']/ingredient[@name='resourceCropGoldenrodPlant']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedGraceCorn1']/ingredient[@name='foodCropGraceCorn']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedHop1']/ingredient[@name='resourceCropHopsFlower']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedMushroom1']/ingredient[@name='foodCropMushrooms']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedPotato1']/ingredient[@name='foodCropPotato']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedYucca1']/ingredient[@name='foodCropYuccaFruit']/@count">3</set>
    <set xpath="/recipes/recipe[@name='plantedPumpkin1']/ingredient[@name='foodCropPumpkin']/@count">3</set>
</EasyPlantSeeds>

Yep, thats XML. Can’t remember when I knowingly chose to use XML when JSON was a option… Especially in a .NET environment where Newtonsoft’s incredible JSON package is a thing. Well I’m not one to judge, I guess.

Basically you just use xpath to refer to your config entry of choice and use <set> to… well set your desired values. It’s such a simple and easy workflow to change values. Keeps me thinking why so many recipes and stuff in the game feel so unbalanced 😏. I’m judging again ain’t I?

On this particular example I found it very harsh (is that the correct word for that? idk) to need five of each plant to create a seed from. Realism aside it’s just a bad design decision imho to force the player to choose if they want to eat a plant or save up five of them to create one seed. I mean it’s a long term investment, but who wants that anyways lol. For some plants five is fine, but some, like POTATOES of all things, are so frigging rare, that it took us 25 in-game days (not real time but literal day-nigh cycles in game) to find enough of those suckers to create one seed.

Since then one of my friends took it upon himself to farm potatoes non-stop and we now have enough to feed all those hungry survivors.

Enough babbling about.

If you’re interested you can find this potato-saving mod and all of my other ones over at my github.