Skip to main content

Advice to SoR2 modders

· 9 min read
Abbysssal

I am writing this under an appreciable mental strain, since by tonight I shall be modding no more. If you're interested in modding Streets of Rogue 2, then I suggest you read this short story, that I believe accurately represents what an experience modding this game will be...

Product of a twisted mind

At a first glance, SoR1 may appear as just the first project of an unexperienced developer. All of the mistakes Matt made were understandable, forgiveable, negligible. When I first started modding the game, I didn't even realize that they were bad, since I had no C# knowledge at the time. But in just a few months I learned that they weren't normal, they were abhorrent abominations, commonly brought to life by beginner developers. I had thought that it was so uncannily weird that Matt, a developer with many years of experience, left so many in his code. He himself had admitted that the code was bad, and said he planned to fix everything in preparation for SoR2, so I didn't think much of it. Oh, how was I wrong...

No one could comprehend the entirety of SoR1's code, and very few have been able to modify just a small part of it. I was one of the lucky most successful few, with a library and many mods under my belt. I've seen many modders come and go, — they'd ask about getting into modding... But after directing them to dnSpy, I'd never hear from them again. SoR2 is even worse. I knew better than to expect much from Matt, but I did have some bare minimum expectations, — I expected some improvements.

I was naive... I didn't think it could get much worse than it already was. I was not prepared for the reserve of unguessed horrors, that Matt would let loose upon the world with the demo.

Descent into madness

It's straight up Cthulhuesque-adjacent. I feel like a character in one of H.P. Lovecraft's stories, that peered into the unknown too much and went insane... It damaged my sanity, and now I find myself here, rambling about the horrors I've had the unfortune to witness. But unlike true cosmic horror, I could comprehend everything I saw. I don't think I'll ever be able to look at bad code the same way again.

The code... It simply cannot be described — there is no language for such abysms of shrieking and immemorial lunacy, such eldritch contradictions of principles, patterns and underlying logic. The stars were right again, and what a decades-old walk of life had failed to produce by design, a foolish inexperienced programmer had done by accident.

The labyrinthine execution paths twist and warp in cunning spirals that I dare not seek to interpret. The bizzare perversions of the familiar and the monstrous, horribly remote and distinct from programming as we know it. I never ever want to see that codebase again.

If you are...

... a developer with ANY degree of experience (3+ months)

Give up on trying to mod SoR2. After working for so long with code of tolerable quality, you won't be able to get into modding SoR2, — its code is just that horrible. And by "tolerable quality" I mean the baseline lowest, the kind that money-hungry and uncaring corporations have devs work on, with no time to refactor or even fix anything. The kind of code that you hear of in anecdotes, and see in DailyWTF posts, — that is what I mean by "code of tolerable quality"! I'd much rather work on these almost mythical failures of the programming world, than attempt modding SoR2! You've got enough experience to make a decision yourself, so I'll leave the final judgement to you. Choose wisely.

If you are... a beginner developer (0-2 months)

Go ahead! Try modding it. Your sanity won't be damaged as much, as you don't yet know what good and bad code is. You may succeed at a few things, but you'll get to learn programming from the worst code in the world, so I'm unsure if you'll want to continue on this harrowing path. As you learn how to actually write code, you'll begin to understand just what kind of horrible pit you've put yourself into... Forsake the people idolizing you for your endeavors. No one will blame you for quitting.




Final epigram


Heed my fable. Don't repeat my mistakes.

You may think that I'm being irrational.

But just try modding the game.

You'll see what I saw.







Upd: Literary breakdown

Yes, this is a short cosmic horror story. A lot of people took it literally and drew conclusions out of thin air. I'm not a professional writer or anything, so it's understandable, I should have made clear that this post isn't literal. It's a mix of fiction and non-fiction. The fiction parts consisted of overexaggerated "indescribable horrors", common to the Lovecraftian horror genre. The non-fiction parts consisted of my aversion to Matt's code.

The first lines of the post paraphrase Lovecraft's short story "Dagon":

I am writing this under an appreciable mental strain, since by tonight I shall be no more. Penniless, and at the end of my supply of the drug which alone makes life endurable, I can bear the torture no longer; and shall cast myself from this garret window into the squalid street below.

The first section ends with the paraphrasing of this part from Lovecraft's "Facts Concerning the Late Arthur Jermyn and His Family":

Science, already oppressive with its shocking revelations, will perhaps be the ultimate exterminator of our human species — if separate species we be — for its reserve of unguessed horrors could never be borne by mortal brains if loosed upon the world.

The satiricity should have been extremely obvious by "It's straight up Cthulhuesque-adjacent. I feel like a character in one of H.P. Lovecraft's stories". I noted the usual structure of Lovecraft's stories — written accounts of those who survived incomprehensible horrors, and even paraphrased one of the most famous quotes from "The Call of Cthulhu".

The Thing can not be described—there is no language for such abysms of shrieking and immemorial lunacy, such eldritch contradictions of all matter, force, and cosmic order. A mountain walked or stumbled. God! What wonder that across the earth a great architect went mad, and poor Wilcox raved with fever in that telepathic instant? The Thing of the idols, the green, sticky spawn of the stars, had awaked to claim his own. The stars were right again, and what an age-old cult had failed to do by design, a band of innocent sailors had done by accident. After vigintillions of years great Cthulhu was loose again, and ravening for delight.

The last paragraph of the second section was pretty standard for cosmic horror - a mess of contradicting pretentious words and descriptors, with a bit of paraphrasing of Lovecraft's "The Call of Cthulhu":

The characters along the base were equally baffling; and no member present, despite a representation of half the world’s expert learning in this field, could form the least notion of even their remotest linguistic kinship. They, like the subject and material, belonged to something horribly remote and distinct from mankind as we know it; something frightfully suggestive of old and unhallowed cycles of life in which our world and our conceptions have no part.

The third section couldn't have much quotes and paraphrasing, as it needed a lot of non-fiction to tie it all together, so I just put it together myself. And then the story ends with a slightly ominous warning.

On a serious note,

I really did want to mod SoR2, but the current state of the code doesn't allow it. The excuse "It's just a demo/playtest" doesn't work here. I didn't test how optimized or buggy the game is, I only looked at the code itself. And it's a mess. It's a mess that I don't want to deal with.

Regarding modding tooling that Matt promises: that would be completely different from the modding we did with SoR1. Waiting until Matt adds support for something is very different from implementing the thing yourself. He's an only developer, and his hands are already full with just the base game.

And finally, for me personally, the most interesting thing about modding is creating something, that's vastly different from the original. Something weird, extrinsic, grand, silly, weird. For something of that degree of peculiarity, you'd at least have to make use of C#'s more advanced constructs. And Matt outright refuses to use any, other than classes, methods and fields.

If you want to mod SoR2, then good luck.