The Story of Green - A Tale of Game Code Purgatory

Started by Edixo, January 17, 2018, 01:28:01 AM

Previous topic - Next topic

Edixo

I need to tell you guys this story, as it is so absurd and meta that I don't know what to think.

I'm running a game with several mods, the prominent ones in this story being the Star Wars Force mod, which adds RPG-like skill progression to certain pawns, the OHU Dropships mod which adds a shuttle you can travel around the planet with, and the Children and Pregnancy mod that lets your colonists have children together.

So it all starts with Green Alboio. He was a tribal that raided my base in the early stages of the game. He had the Force Sensitive trait which meant I could train him to become a Jedi, so I captured him and recruited him. Over time I trained his skills to the point where I could start using him to solo bandit camps, and I did so with the OHU Dropship. At this point, Green was a Jedi around level 13.

Somewhere, somehow, on a flight to or from a bandit camp, Real Green (referred to as RG) was replaced by Imposter Green (IG). I did not realize this until very, very late in this whole thing. IG was an exact clone of RG with the same skills and equipment, and RG got pushed back in the game code and became a world pawn that never spawned. So, IG lands and starts doing everything that RG did, mine, grow, interact with the other pawns, etc. Meanwhile, RG was stuck in Game Code Purgatory.

After a while, I started noticing a bug with Green's social status. It would constantly reset for no apparent reason. It did it every time that I reloaded a save, but also randomly during gameplay. It would simply reset to 0 for my other colonists, meaning they had no opinion on IG. IG, however, would retain all the social interactions with the other pawns. This, I'd learn later, was because all the social interactions towards IG would actually go to RG, still stuck in Game Code Purgatory.

I shrugged the bug off, blaming a ton of mods for it. At this point it wasn't an issue, since IG wasn't a lover or married to someone. No matter that it kept resetting. So IG just kept leveling his skills and increasing in force power. The real issue started once IG got a lover, Gen. I'd assign them a double bed where they could sleep together, but the bug would keep showing up. Gen would have Green as a lover, and another Green as an acquaintance. When I clicked on the lover Green in the social stat, it would say "Green is off the map", and when I clicked the Acquaintance Green, it would direct to the Green currently working somewhere on my base. Of course, I wanted them to stay together, so I kept reloading saves and try over to keep the relationship going. They got engaged, and in the end married.

However, at one point, even reloading saves would not fix it. It would still be "Green is off the map" when I clicked Gen's spouse in the social tab. So I started messing around with dev tools for the first time in my over 500 hours of playing Rimworld. I was adamant enough about their relationship that I was willing to alter my game with the tools in order to keep it going. I did this for a long time in ingame time, and a while after they got married, Gen got pregnant. She gave birth to a daughter, and everything seemed fine. The bug carried over to the Daughter, with her father being "off the map", and IG being an acquaintance. I kept resetting their relationship with dev tools, but at one point I became fed up with it enough that I started looking for the reason this kept happening.

I tried disabling mods here and there to see if they were the ones causing the issue. It still showed up. Then I started looking through the world pawn lists in devmode. That was when I noticed a second green. I had had the list open several times before when fixing the relationship, but never actually searched for "Green" in it, I would just pick the first one and go with it, which turned out to be IG. RG was further down the list. Now that I saw that there were two Greens, I tried to delete the one I thought was the imposter, but actually was the real one. First, I removed all relations to RG with devmode. Then I ran RuntimeGC to remove world pawns. Sure enough, this removed RG from the game and left IG as the only one.

The bug persisted on my next reload. There was two Greens again.

At this point, and only at this point, did I start to think the other way around. "What if this random world pawn also named Green is actually the real one?" So I spawned him. It was Green, level 13 and with way less skills, and with the old scars and missing eye that I still hadn't fixed on him. At this point, IG was level 41 and with really good skills. I made IG strip all his gear, deleted him, had RG that I'd just spawned equip the gear, ran RuntimeGC, fixed his work tab, and ran the game as usual. I haven't had the bug since.

Now, this is the spooky part. RG had been stuck in the game code since that long ago. All social interactions between IG and the other pawns had gone towards RG. He'd felt every social interaction, but could do nothing. He'd seen IG level his skills and live his life, but could do nothing. He'd seen IG fall in love and get married on his behalf, but could do nothing. He'd seen IG father his child, but could do nothing. And when I, the creator, noticed this, I tried desperately to make IG the real Green, but I constantly had RG fight back from his place in Game Code Purgatory. Even when I managed to delete RG, he showed up again later, as a result of my other colonists remembering who RG was. See, my colonists knew the entire time that IG wasn't RG, hence why the social stat kept resetting.

Now RG is in my game, sleeping with his wife Gen, slowly on his way to rebuild his skills and levels. I've considered breaking my no drugs rule for him; I think he deserves a beer for being through all this.

That's the story of Green, the pawn who fought against his stupid creator with everything he had, and won.
Nothing says "Home Security" like 50 turrets

Bozobub

Heh. Funny, how pawns can fall victim to an "item dupe" bug ^^'.  They ARE just objects to the game, after all.
Thanks, belgord!

Hans Lemurson

Mental break: playing RimWorld
Hans Lemurson is hiding in his room playing computer games.
Final straw was: Overdue projects.

Cpt. DuctTape

It's very interesting to see how a bug like this can end up creating such an interesting story. Thanks for posting this!