Hacker News new | past | comments | ask | show | jobs | submit login
Legalizing gay marriage in Crusader Kings III with Ghidra (waffleironer.medium.com)
429 points by ice3 on April 5, 2021 | hide | past | favorite | 170 comments

For a second that title made me remember early SEO tactics of stuffing your H1 tags with as many relevant keywords as possible, except here it's optimizing for my queer nerd interests.

I'm a bit surprised by the reaction from Paradox - I assume the standard forum mod has neither the time nor skillset to assess whether any game binary patch is going to be safe, so banning them by default seems like a safe way to go, but removing even the discussion of it feels a bit overkill.

I reverse engineered Paradox's binary format for their save files. Part of this process is extracting a table of 16 bit ids to text representations. I asked Paradox if I could open source this table, but they replied that I was already breaking the ToS. The solution I've come up with is to open source the logic but commit the table as a gpg encrypted payload (for which only I have the key).

So you could say that Paradox is sensitive when it comes to people poking around or pushing boundaries.

ToS are irrelevant and you should have published it anyways, under a name different from the one you use on the forums and in-game.

Open knowledge is important, especially in video game scenes where elitism is a real issue, stopping people from getting into great hobbies that I'm sure many only got into due to that one person that didn't give in to elitism and bothered to listen and to answer questions.

> ToS are irrelevant

That's some bad advice. ToS are irrelevant only if you don't expect retaliation from ToS owner, or the costs are trivial.

> Open knowledge is important, especially in video game scenes where elitism is a real issue

Open knowledge? This is reverse engineering someone's cash cow. Kinda like claiming Win 10 code is open knowledge.

Video game scenes? Elitist? It's just a silly option in some medieval sim. There are other games that allow these kinds of things. Massive chalice for example.

By that stretch, why not complain Hearts of Iron don't allow you to create a third Furry side in WW2?

Or if you really want to be part of video game scene make your own. But I doubt you'd open source it. It takes monumental effort.

Did you see indie games? It's veritable farmers market of small games.

> Or if you really want to be part of video game scene make your own. But I doubt you'd open source it. It takes monumental effort.

I have minted a few very active video game scenes with a good culture, open codebases and devs that are happy to help and introduced many people to reverse engineering that wouldn't otherwise have gotten into it, and it's really not as hard as you make it seem. Good resources are easy to write when you're passionate.

You just don't have to be so bitter all the time :)

> Kinda like claiming Win 10 code is open knowledge.

It arguably is and you can plop any Windows binary into Ghidra or IDA and learn from it. There's a huge amount of books and free information on NT internals on the internet.

It's the same with games, just that you might be more invested in your favorite game than in NT internals.

> I have minted a few very active video game scenes with a good culture,

Sure. Nice of you to assume I haven't made any games, and put words in my mouth.

So to repay the kindness, I'm going to assume your games weren't on scale of Paradox games. Because those games shave man decades. That means collaborative effort on a longer timescale. That means people sacrificed their time to make this. And people need to eat.

> It arguably is...

Arguably you could open a beer bottle with your eye. That doesn't make your eye a bottle opener.

In same vein, just because you can reverse engineer something doesn't make it open source.

I'm not bitter, just realistic. Poking a sleeping lion isn't guaranteed to kill you, it's just a stupid thing to do. Especially when you are way weaker than a lion and within his claw's reach.

The code runs on your machine. You do not own the game, the idea behind the game or the logic, but you do own the copy of the game on your machine.

You can read and change your copy, regardless of what the ToS says. The owner of the game can retaliate, this is not law after all.

Sure, but if you do it alone, on your computer and not tell anyone, no one from Paradox is going to harass you about it.

Moment you start open sourcing someone's game behind their back, is when they get defensive.

I believe this might be forbidden by the DMCA

IIUC, changes that circumvent encryption intended to control access to copyrighted materials would be forbidden by the DMCA; other changes would not. I suppose we could say the game itself envisions the rules by which we're intended to access its content, but if there's no encryption being circumvented I think the DMCA still doesn't apply. That said, I'm now curious how it defines encryption.

> ToS are irrelevant and you should have published it anyways, under a name different from the one you use on the forums and in-game.

Not right after you were refused permission though, that's too obvious.

"Ask for forgiveness, not permission"

Dont ask. Do. Exploration is a right, not a sin to be forgiven.

I'll try that line with my wife but I have that feeling that she won't like it

The obvious caveat is that with people consent comes into the picture.

So we are back where we started, no?

Code is not people.

There's a philosophical discussion here longer than a comment can afford but the bottom line isn't "code is not people". While I took GP's "wife" remark as a joke, I feel like you're implying that as long as it's "not people" it's a free for all. Like someone "exploring" how it feels like to spend your money, wear your watch, and drive your car.

Since this is a digital world, hacking doesn't have to lead to a loss for the creator. It can be done for your own intellectual pleasure and exploration. But making it available online to the general public is no longer exploration. So depending on the case you no longer have the moral cover of "I was just exploring".

> But making it available online to the general public is no longer exploration.

Why not? I'd argue the opposite: that making something available online to the general public is the first step toward maximizing exploration - in particular, enabling exploration beyond the limits of your own imagination/ability.

But the time and effort put into writing that code was a significant part of their lives, and that code was only shared with those who agreed with their rules.

>>and that code was only shared with those who agreed with their rules.

This is the point of contention though. In EU courts have ruled over and over and over again that you cannot be bound by terms set AFTER the purchase of any software. As a result, EULAs are pretty much worthless, because they are presentented post-purchase.

If you went to a store and bought a copy of this game then that's it, you haven't agreed to anything, and you own a copy of it and you can do almost whatever you wish with it. You cannot make further copies and sell those because that's governed by copyright law, but modifying the binaries to do what you want them to do? Absolutely fine.

It's like with cars - obviously someone put a huge amount of work into making them, they contain a huge amount of software in them, yet the idea that the manufacturer tells you what you can or cannot do with it after purchase is ridiculous(and yes, I know some companies like Tesla are already trying).

We're getting into legal details here, but in principle one can construct a contract where software use plus onerous rules are exchanged for money.

Thanks for the European perspective. Not a big fan of EULAs myself, especially ones where the cost to properly analyze by your own lawyer is likely much greater than the value of the software itself, which is the case for most consumer software.

I've definitely seen discussions of the binary format on the forums in the past. I wrote my own script for figuring out what the table for the 16-bit IDs was, but I've never committed the result anywhere.

Probably an automated ban. You can't have people distributing patches to game binaries on the official forums. Too much potential for malware, and the company ends up being liable (if not legally then at least PR wise).

Would like to see some statement soon on the ban

That's considered SEO stuffing? I thought it was just so I know what the article is about.

I think the joke was that the words in the headline couldn't possibly be related. Except that they were.

If one is interested in parsing the CK3 scripts / game files (briefly showed in the post) to dissect the wonderful world of PDS games, there's a js library for parsing these files:


disclaimer: author

“Do ye a marriage” has to be the greatest proposal I’ve ever heard. It’s so matter-of-fact and deadpan. I love it.

If you can add an option between Seduce and Romance of “Mine body ages and the offers are few, but my family hath bequeathed land” I’m buying this game right now.

Turning the JZ into a nop to fallthrough to the next line is easier, right? That might be what he did in the quickfix area anyway.

The self-marriage part was pretty hilarious. "Do I take myself? I do!"

> The self-marriage part was pretty hilarious. "Do I take myself? I do!"

People are doing that in real life: https://www.abc.net.au/everyday/why-women-marry-themselves/1...

Of course, it isn't legally recognised anywhere. And I doubt it will be – marriage as a legal relationship between two distinct people has various legal consequences on property law, taxation law, etc – a self-married person is legally indistinguishable from an unmarried person. But no law against holding a party called a "self-marriage ceremony", if your guests are happy to attend it.

There is a very big difference between a wedding and a marriage. I don't understand why this confuses so many people, but it does.

In some languages the same word means both, e.g. the Italian “matrimonio”

Come to think of it, it seems to be the case in at least some Indian languages (ie, "wedding" & "marriage" are referred to by the same term). I can't think of a distinct native term for "marriage" as an entity or a state of being - the closest I can come up with is akin to "married" as a past tense verb.

English has wedlock.

Changing JZ into JZ to the following address has the advantage of ease of editing: same length, same opcode, reliably copied, pasted and inspected value. A NOP sequence is more general but making it the wrong length is not impossible.

NOP on x86 is one byte. Patching out an instruction with a NOP is always possible.

Further, not all jumps are equal; while you can certainly patch the assembly and let the assembler manage the variant selection and relocations etc., doing bytecode patching is a different story. You might have to change the jump instruction altogether depending on how "far" away the pointer is.

Also, jumps hold conditions in most cases (the exception being an unconditional jump, JMP) which means that you have to adhere to whatever state is expected at that point in time.

The NOP approach is usually the soundest and safest.

It's more general, but also more invasive. Replacing jumps with another jump as discussed in the article leaves part of the original intent (the test or the address) intact, while a NOP sequence leaves no indication of what it replaces.

This technique is known as a NOP sled. You have to change all the bytes in the jump to NOPs (opcode 0x90).


A NOP slide is a slightly different thing.

The NOPs as suggested by GP are meant to replace unwanted instructions. The purpose of a NOP slide is to serve as target area for jumps and to guide the flow of execution to a particular adress at the end of the slide, independent of where in the NOPed range a jump was actually executed to.

I may have used that technique once or twice in Ollydbg before, but I didn't realize it had a name. Thanks for that.

OllyDbg has been discontinued but now you can use one of its spiritual successors:

- https://github.com/eteran/edb-debugger

- https://x64dbg.com/

Other tools you might like...

- https://cutter.re/

- https://github.com/longld/peda

- https://github.com/Gallopsled/pwntools

And of course, Ghidra, that means no mention.

This is cool. This is what I imagined it would be like to program computers when I was a kid.

When I was a kid, this is the first thing I did that I'd call programming, but it was to use a hex editor on my Warcraft (the original game, yeah) save files to give myself more gold and wood. I had a friend teach me how to convert to hex, learned about LSB/MSB then away I went.

It's amazing how cheating or tweaking a game can spark a lot of interest professionally.

Back in the earliest part of my career (late 80's), I had a love for single-byte hex hacks, especially for apps that were timed to stop working after the trial period. Changing the date-check comparison branch instruction so that the apps would only work _after_ the trial period ended. Used this on various C64, Amiga, and VAX/VMS(!) apps. I thought I was so clever :)

When I was 16 I helped my father and his friends by cracking a laser scanning software they got their hands on which required a hardware key.

Thanks to Ollydbg, I just had to open the executable, find the error message and change a JZ to a JNZ *. Incredibly easy if you know how to, but you look like a cool HACKERMAN to everybody else.

Sadly, my professional life nowadays as a full stack engineer is much less glamorous than cracking software for street cred.

* A NOP would have been preferrable in retrospect, though I like the idea that with my patch you'd get locked out iff you have the hardware key.

Same here. First use pctools, get tired of firing your hex editor every time (and make mistakes) then automate the procedure by writing a program which patches your save files!

I also discovered signed/unsigned integers at this time : give yourself too much money in the save file, it overflows, and you end up with negative money in the game...

My first foray into the world of programming was as a kid, trying to learn how to make games in C. My first debugging experience though, was a few years later using a GameShark for the N64. That was a lot of fun!

Ah, I recall in high school we made a localized version of Warcraft by hexediting the strings in the executable - though with this approach it was a pain in cases when you needed longer words than English had.

Wow that’s so amazing! I bet it was a bit like code golf trying to find appropriate words to fit in the space. It’d be funny if you had it all still around.

I did this exact same thing with this exact same game. Good times.

That's pretty wild if you think about it, Warcraft sold 100k copies at release and maybe 300k copies total (according to Wikipedia) so of the nearly six billion people on the planet at the time, you and I were two of 100k of six billion, and we both hex edited the save game for money.

And we crossed paths after some 30 years on this obscure website that definitely has a bias towards people like us.

Paradox games release early, patch often, and the core engine is nearly 15 years old. I wouldn't be surprised if the gender of a marriage is assumed all over the code-base and enabling full equality would have been a significant development complication. This all being said I wouldn't be surprised if we see full equality options in the next year or so.

See: Matrilineal Marriages, Gender Equality, Same-Sex Relations, and Sexuality Distribution


> the core engine is nearly 15 years old

"The core engine" doesn't do what you think it does. It's actually a running joke on /r/paradoxplaza that every time you mention Clausewitz, Meneth (or one of the other developers) pops up to explain this. It just does what every other game engine does, none of the actual game mechanics are coded into the engine. The reason why all Paradox games have so many things in common—a map-based UI, the scripting language, everything else that makes a GSG a GSG—is that game code gets copied and pasted from game to game as they start new projects. None of this is in the Clausewitz engine itself.

Funny thing though, they actually did decide (relatively) recently to centralize a lot of basic GSG functionality in one place so they don't have to keep copying-and-pasting code. The result is a library called Jomini. But this is a recent development; the only games so far that use Jomini are Imperator and CK3. It's a very new library, so it shouldn't have 15 years of legacy cruft in it.

> It's a very new library, so it shouldn't have 15 years of legacy cruft in it.

If they made it by copy-pasting one last time, it certainly could.

Eww, equality.

If you make it equal, you remove the drama. If you force equality onto history, you falsify it.

Case in point: Edward II, king of England. He had affairs with Gaveston and Despenser the Younger, all the while in a marriage with queen Isabella. He wasn't too subtle about what he was doing, showered his lovers with gifts, prestige and land. His nobles pressured him send him away, but he was the KING, and it went back and forth a few times.

If it's in game, it should be called "sodomy".

You start falsifying history the moment you unpause the game. Equality shouldn't be there at the start of the game, nor the most common outcome, but there is no reason the game engine needs to forbid it.

Not equality of people, equality of paths. In an FPS the shotgun and the rocket launcher shouldn't be equal or there's no need for both.

imho the thing to do is take OPs suggestion, Paradox should make gay-marriage possible but have people refer to it in variable ways. Some egalitarian societies can call it marriage, others sodomy, etc. And then add other cross-cultural restrictions too, where civilizations may not recognize bi-religious or bi-racial marriages for various reasons.

In other words don't minimize the issue, lean into it in a CK way, deeply and unsettlingly.

There is also an extensive modding community. There's no reason Westeros or post-apocalyptic North America needs to have the same attitudes towards gender and sexuality as medieval Europe.

I don't know anything about reverse engineering but why can't you just change the IF in the decompiled C++? Why do you need to mess around with the assembly instructions?

Calling it "decompilation" is misleading. That term implies that you can get your compiled binary and turn it back into C++. No automated tool exists that allows you to do that - too much information is lost in the compilation process. Function names are one things that's mentioned, but the very structure of the program (which functions are in which classes, etc.) is lost. You could infer this based on your knowledge of how compilers usually work, and how developers usually develop but it's all guesswork.

Instead what we actually do is 'disassembly'. We just perform the minimal processing to get the human readable form of the assembly instructions that make up the binary. This is very hard to directly get you head round, so 'decompilation tools' are then all assistants that help the manual process of understanding the structure of the program. You can see a very basic example of that in the article where the author is looking for references to an address so they can see which functions reference the string.

The gold standard tool in the space is IDA Pro. You can see in these screenshots the visual tool it gives that allows you to group chunks of assembly together into functions and keep track of the linkages to codify the person's understanding as the process continues.

> Calling it "decompilation" is misleading. That term implies that you can get your compiled binary and turn it back into C++. No automated tool exists that allows you to do that

The article shows snippets of decompiled C++ code. No, nobody is claiming that it is the "original" code. But it is C++ code derived from the compiled binary. Decompilation.

> Instead what we actually do is 'disassembly'.

Additionally what we do is disassembly.

Patching a few machine instructions in the compiled executable is easy; decompiling a complex program into C++ code that can be compiled back is amazingly complex.

It's like the difference between cleaning guano from your car with the localized application of a wet rag or by disassembling the car down to the last screw, putting all pieces in a giant dishwasher, replacing all parts that got damaged, and reassembling the car.

Well it's already been compiled. If the `if` is changed and the entire codebase is recompiled it might rearrange large sections of code, significantly changing the resulting binary. The patch will then be potentially quite complex.

So the resulting patch will be significantly smaller if only a few bytes need to be changed.

That would require you know which C++ compiler and which exact version the code was compiled with. Your decompiler would also need to be built for this specific version of the C++ compiler to allow for round tripping. After you have done that, the risk of the patch being unnecessarily large still exists and now you have to mess around with the source code hoping you find a way to rewrite it such that only one byte has changed. That's a lot of effort compared to just changing the instructions directly which for an inexperienced engineer merely requires frequent lookup of a reference sheet.

There is absolutely no need to do any of that, even in cases where you write a lot of new code yourself. 99% of the time it is enough to find the code location, insert a call to a DLL (which can be created in any language of your choice) you injected and be done with it.

I reverse engineered some games trying to fix them.

If they were made in ASM? Well, then it is easy, what you get from the decompiler is probably very close to what went into the compiler.

C? It gets harder, but decompilation to C is possible, you lose function names and whatnot but that is alright.

C++? Then you are 100% screwed, virtual functions, polymorphism, etc... it all becomes just a huge mess, if they used some common libraries it helps (STL, BOOST, etc...) but if they made a ton of custom classes that have virtual functions, polymorphism and composition at same time, then nothing can be done, you will get some ASM that almost looks like non-sense.

That depends on how much time you're willing to invest. The recently DMCA'd re3 project is a full decompilation of Grand Theft Auto 3 and Vice City, through a clever combination of all released versions (eg. the Android version leaked some symbols, Renderware signatures were somewhat recognizable on PC and PS2), pre-existing community knowledge (The mission script format had already been reversed which provided many clues by looking at its interpreter, many memory addresses were known by the modding community, etc.) and just a massive collective effort, it fully reversed the cpp game that is Grand Theft Auto 3 (and VC).

Honestly, I think decompiled C++ might be easier for me to read than regular C++. Half of the confusing parts are compiled out entirely.

The decompiled code is just a best guess at what the assembly is doing, it's likely not completely correct or close to compilable, changing the asm is the easiest way to make changes.

The word for "decompiled C++" is "disassembly".

Can't you do this by reforming your religion anyway? I haven't played since launch

You can reform your religion making it accepted, however that only allows characters to perform Seduce and Romance schemes without risk of imprisonment if Criminal or an opinion penalty if its considered shunned.

Certainly neat, but let's be real. They don't have time to spend on this because they have to finish Cities Skylines 2 amiright?

That's Paradox the Publisher, not Paradox the Developer.

Gotta admit that the words "legalizing gay marriage" in the title of the Medium piece really tick me off, as they slanderously suggest that that the creators of CK3 are somehow anti-gay.

I read it as "Hey, there is this game trying to depict a historically accurate medieval scenario. I modified it for fun to allow gay marriage".

And the first paragraph seems to confirm this interpretation:

> Crusader Kings III is a pretty impressive game. It’s impressive not only for its official content, but also for its extensive modding tools. Even before its release, I was drawn in by its promises of an improved modding experience. Relevant to this post, I was also impressed by an apparent dedication towards improved inclusivity.

Did you read until the point where they would ban the creator of this patch from their forums and aggressively remove any mention of it?

Now I don't know what the creator originally wrote on there, or what the people who mentioned the patch have been saying, but it does raise eyebrows...

So no reason to get your pitchforks yet, but definitely reason enough to demand some form of explanation from paradox's side.

While banning any executable hack on the official forums, without exceptions, is a reasonable policy, not spending a few hours to implement and release a same-sex marriage patch implies not caring about such a feature rather than technical obstacles: that maybe someone at PAradox opposes gay rights is an unavoidable theory.

It seems odd to me. Paradox is a Swedish company, and Sweden is a fairly liberal country. Same-sex marriage was legalized in 2009, and even the Church of Sweden gave the go-ahead on performing same-sex marriages the same year.

The game logic around this is simple enough that changing two byes fixes it, so it's not a technical issue.

What gives?

Take a look at the screenshot of that same sex marriage, do you notice something odd? The gender symbols at the bottom are male/female not male/male. The patch only disables the gender check, it does not fix the game content or any other logic related to marriage. There are probably dozens of follow up bugs waiting, some of which will need new game logic and art to fix.

I have to wonder if one of the men will become pregnant and have a child once they are married.

You could use the excuse that they are transgender...but again, that probably only adds another layer of complication and abstraction, heh...

> The gender symbols at the bottom are male/female not male/male.

Do you mean the symbols next to "This is you"? I think you're misinterpreting them. That's the character's sexual orientation. It's always there, regardless of the character's marriage status. And gay or lesbian characters can and do marry people of the other sex even if that would not be what they want. The sexual orientation symbol doesn't change.

I don't own the game so I was confused by having both the character and their spouse in the image. Sorry about that.

That is a good reason for why they haven't implemented the feature themselves.

But it's not a good reason for why they are blocking all discussion about a mod that implements the feature in a buggy way.

Others have mentioned in the comments: the blocking is because they don’t want people poking round the binary. It’s likely because of the opportunity for creating and spreading malware via the forum.

I just can’t fathom they couldn’t see this coming.

That just means someone in charge made a bad choice during planning and either no dev or designer ever dared to speak up against it or many of them supported said bad choice.

Why is it a bad choice? A game set in middle age Europe has no more reason to foresee needing the ability to mod gay marriage into it than accommodating modding cell phones into it. It's not an insignificant amount for work just to include an anachronism.

It seems odd to that when the scripting language allows such absurd customization to hardcode the sexes of marriage, to be fair.

Apparently one can marry a piece of furniture with the scripting language, so long as the sex be appropriate.

Have you played this game and seen how much you can customize it?

What's an anachronism in a sea of many others, if you wish to have them in your personal save games. And if you don't, you stick to whatever is historically accurate.

Not having the foresight to be aware of this matter and the issues that come with it(going as far to be be especially exclusive) as a game studio in 2020 is what they should think about the next time they set out to make a game like this.

Given a preference I'd rather keep "but it's current year" out of the considerations of the devs of games I play. It's not a role playing game. It's not Tomodachi Life. They owe us nothing except what they advertise.

And the game engine is from 2007 which likely built in many of these historically accurate constraints to reduce scope. Remember until recently this much more core functionality was broken; "Fixed looting not making you hostile to looted country if you’re a vassal"


Yes, it was started in 2007 - maybe some people here still live in the early 2000s, but that's 14 years and 2 big iterations ago. Check the calendar.

Maybe games just shouldn't be rushed out this much either.

As someone who's lost many nights to CK3, Elite Dangerous, and not Star Citizen I'm grateful they released a limited very enjoyable game that simulates the core elements of the concept, and I hope they enhance it with native support for Gay Marriage in the future.

it's 2021 actually.

"Just" made a bad choice? It's clearly an historically accurate, and _simplifying_ assumption, which you dismiss. The fact that they include a scripting language needn't obligate them to broaden the scope of their project. It's theirs, and they needn't pretend to cater to anyone they don't wish to, especially if it isn't a priority. They can make whatever they want, as can you.

I suspect it has approximately nothing to do with what the patch implemented. And a lot more to do with it being effectively a guide to reverse-engineering the game executable. Paradox makes multiplayer games. They probably saw this as How To Cheat 101.

As to not wanting to do the work to make it implementable without a binary patch, well, it's just not in the game. I can imagine hesitance to start modifying the game based on demands of modders for multiple reasons, even if they liked the mod itself.

It sounds like the thing that was posted on the forums was the binary patch itself, and this article's explanation of how to reverse engineer the game was written after the poster was banned.

They host How to Cheat 101.[1]

[1] https://ck3.paradoxwikis.com/Console_commands

You can’t use those in multiplayer... unless you reverse engineer the game and patch the cheat checks oout...

Crusader Kings III has you live on as your daughter/son when you die.

As there is no adoption mechanic, same-sex relationships will lead to a game over unless you are one of the few countries that can use the House Seniority mechanic.

So I guess they never got around to implementing adoption.

Banning though...? That was weird.

> So I guess they never got around to implementing adoption.

If you think about this, it seems pretty obvious the reason they didn’t include adoption was that it’s overpowered. The CK series is all about managing dynasties, so the randomness of reproduction is a major game mechanic, one of the primary sources of problems and challenges. Adoption would totally negate all of that.

Like, if Henry VIII could just have adopted a son, his whole story would have been so much more straightforward! :)

(None of which really justifies the Paradox response, of course, since adoption isn’t necessary for having same-sex marriages (even player ones) and not losing.)

It's the same reason as adoption.

You have the ability to arrange marriages as King or Queen. Just as if you could adopt, you could dilute the power of your enemies by arranging same-sex marriages that can have no legal heir.

They could make adoption produce a weaker claim to the title, with greater risk of usurpers leading a rebellion. I think this mechanic could be balanced and would add realism (it happened in history).

It's also something that could be restricted by culture. In some cultures, adopting your heir is a normal, everyday thing, but in others, blood is all that matters.

To be generous, I would presume the banning was because he uploaded a "hack" that changes the binary of the game, and that's not allowed. There's probably a clause in the ToS that says no reverse engineering is allowed.

But I look forward to the woke brigade assuming the devs hate the LGBT community, and showing up with virtual pitchforks... /s (Disclaimer: I support the struggles of the LGBT community, but I do have a problem with stupid extremist unthinking zealots, and there seems to be plenty of them everywhere.)

> Crusader Kings III has you live on as your daughter/son when you die.

No, you play on as your heir, which may be your uncle or some distant relative. This may even be your liege.

Only if they’re of the same house, otherwise your dynasty ends and it’s game over.

Wait, is this something they changed between II and III? Because in II, if you die with no children, but you have a brother, your brother inherits, even if you don't have Seniority. You only Game Over if your heir doesn't have your last name.

(also, there is the possibility your character will cheat, sire a bastard, and then have the bastard legitimized)

It wouldn't be the first time in game or in real life where a homosexual ruler has performed their royal duties and conceived an heir, then there are options to legitimize bastards.

Presumably slavish dedication to historical accuracy. Although were there really no cultures in that era that allowed same sex marriage?

I personally wouldn't want a seemingly historically accurate (ish) game to present the churches of the age as being okay with same sex marriage when they weren't. Although being able to toggle it on in the settings would be cool.

CKIII has several "fun" toggles for ahistoric behavior, so I'm not sure if this argument fits. For example: you can flip the default inheritence system to favor women or even make the majority of people homosexual.

I'm guessing it's just more or less something they didn't get around to implementing. Perhaps they wanted to tackle it in a future patch or DLC (I can see this happening if turning this on somehow led to buggy behavior in other areas)

Yeah that's exactly what I'd want for marriage. I'm definitely more inclined to think this is just one of many features they didn't get around to adding rather than an intentional omission.

It's expressing a constraint that wasn't entirely set until the end of the period of time the game is set in, as the power of the nobility and church consolidate. It would be more interesting if it allowed you to play with some of the tensions between the church and the nobility. Want to marry your same-sex spouse? Throw your weight around a la King Henry VIII and establish your own church.


To translate the concept of “marriage” between cultures is a fool's errand. — historical, and current cultures often had a variety of different concepts one could all call “marriage”.

It is as though one attempt to translate the ranks of entirely different historical military structures.

Though, such is also often done, such as the “Kings” of Rome which were elected and had a co-ruler.

In any case, one might for instance argue that a male Japanese samurai in 1800 could be “bound” to both a male and a female at the same time, but only one of each, but only the latter union is traditionally translated as “marriage” for “reasons” even though the former comes no less close. In act, the former union was typically more so one of love, and the latter more so one of business.

>Although were there really no cultures in that era that allowed same sex marriage?

No Christian cultures, obviously.

Was there any historical culture in which same-sex marriage was common or accepted? I can’t think of one, Christian or otherwise (though I can think of a couple of examples of same-sex people got married by subterfuge).

Yep, many! Today's era is quit unusual in how few open gay and bisexual relationships are had by public officials (which are the unions that are typically best recorded). In many other historical periods across different regions, today's standards would be considered unusually heterosexual. https://en.wikipedia.org/wiki/History_of_same-sex_unions

Given that the game simulates 867 to 1453 it was much more of a rarity, don't get me wrong I'd love to have the feature but I'm glad they shipped core features of the historical simulation game and more than likely left it on the backlog.

Gay marriage was more common than you might think during that time period as well, even in Europe! I found a few interesting accounts, from this summary of an older book on the topic: https://www.irishtimes.com/culture/when-marriage-between-gay...

No there were not. The other reply confuses acceptance of homosexual activity with acceptance of homosexual marriage. The latter is a new concept, the former was common in many cultures (notably Ancient Rome / Greece).

Homosexual activity cannot result in biological children so there was really never any society that considered anything like homosexual marriage until our own. The main reason for marriage was to control sexual unions and the children who might result from them. In societies which had marriage (many had no such concept) homosexual marriage didn't make much sense.

The wikipedia article on historical same-sex unions mentions that some cultures had rituals around cementing homosexual relationships but those wouldn't be considered the same as marriage, they'd be more like any pre-sexual / pre-relationship rituals. Marriage typically is about the sharing of finances, responsibilities, the raising and rights of children, etc. And none of the examples in the wikipedia article on historical same-sex unions concerned any of these.

Not to delve, but the article does mention a number of relationships that are explicitly comparable (according to the article) to heterosexual marriage, or are otherwise described as unions. There are multiple references to homosexual marriage and union.

I'm not sure that the points you're making about shared finances are particularly important, or even true, based on this. But I'm not a historian.

The article is being too generous to these accounts. Here is an example: https://penelope.uchicago.edu/Thayer/E/Roman/Texts/Cassius_D...

In this account of the relationship between two men they are termed in quotes as "husband" and "wife" to imply sarcasm . They were not literally considered with seriousness to be married by their society the way we consider men to be able to do to each other now.

Marriage, in societies where it existed often served two functions: binding families and providing for the legal rights of children. Unions of lovers did not do either of these.

Many ritualized unions of a same-sex variety in history were of the latter type and those of the former would not likely have been seriously recognized by the outward society. There isn't a strong record of that anyways.

No Christian cultures, obviously.

Interestingly, the vast majority of countries that now permit gay marriage have Christian histories.

Did Buddhist cultures allow same sex marriages in ancient times?

Balancing this in a dynasty simulator would be an absolute nightmare.

Presumably the AI would have the ability as well, and then you would have to start coding some restrictions to avoid a dynasty simulator spanning 100s of years going off the rails and then you'll be in for all sorts of progressive political wrangling.

Frankly if it was me I'd have stayed well away from it as well.

Also, Paradox have not a great track record of balancing things or maintaining quality straight out of the gate with their games anyway. I do love their games though.

I know I shouldn't talk about down votes but I love how it proves my point. It is impossible to have rational discussions about these topics and so it's actually optimal to avoid them entirely.

And as an aside the game had homosexuality and so assuming there was some conservative stance on the part of the game developer appears ill founded.

Their official stance [1] is:

> You can make same-sex relations acceptable, but marriage will still only be opposite due to historical constraints.

Other than their official stance, I wonder if it's because they'd need to script in the in-game church's (presumably negative) reaction to this. Also there doesn't seem to be adoption in the base game, so maybe they didn't want to hand the player a quick path to a game over?

[1] https://ck3.paradoxwikis.com/index.php?title=FAQ

The game simulates historic reality, and that reality was that marriage between nobles was mostly political and about consolidating land and power rather than about sex, love, or attraction although breeding was also intrinsic to marriage for the same reason. Marriage is a major game mechanic with much of the UI and playflow dedicated to finding the right spouse based on a wide range of conditions (family status, demesne extent, breeding traits). Doing same-sex marriage would require a massive overhaul to much of the game mechanic, not just a simple gender swap for the intended spouse.

Because the love/sex/reproduction angle was separate from the marriage angle, the game already has very deep support for all variants of human relationship when it comes to lovers, concubines, and uh, other special situations and it's very historically accurate. Homosexuality among nobles was not uncommon in the middle ages and the game supports this directly, but marriage had nothing to do with love or sex.

I went to Glitterhoof's chambers and gave him a good tumble. It is good to be the king.

If it were me I'd just let same sex couples impregnate each other, regardless of sex. Sounds like a hoot.

I'd also add furries and dragonkins while we're at it, because why not, it might as well be a fantasy game

CK2 let put a horse named Glitterhoof on your council and then have sex with it, so that would be par for the course.

Was it ever clear if Glitterhoof was real, or a hallucination?

Here is the story: https://imgur.com/a/K1utf

Note that this was unintentional ;)

A reference to Caligula?

I recall a Game of Thrones mod for CK2 that seemed like a very appropriate combination.

That's their official stance for the game itself, not the modding tools. I can assure you same sex marriage is probably the least historically inaccurate thing that would be modded in. Heck you can make yourself a kingdom of homosexuals.

Then it must be a political issue, right?

Or maybe it's just a simulator of dark ages where same-sex marriage just wasn't. Go ahead, point out my wrong usage of "dark ages".

Or they just didn't program that and had too little representation in their company to notice and weigh that against marketability in various markets.

Or they did notice, figured out it would be complex to modify the engine to handle this case, found data indicating that having this feature or not would have zero impact of the marketability/sales of the game, and just decided to use the bandwidth on something more valuable.

Have we read the same post? It's a one-byte modification, and they ban for mentioning the patch.

It's a one-byte modification if you want just to remove the check for mixed genders upon marriage. If you want to implement as proper game feature - as a selectable option - then you need to do a bunch more things; you need to model the conditions in which that same-sex marriage would be permitted (even if it'd be enabled in the game as such, there would be character-faith-related conditions), you need to model how every other character would treat that marriage (a bunch of conditional modifiers depending on the attributes of that other character), you need to decide how it interacts with polygamy if someone has spouses of both genders; you need to adjust for any impacts on the many inheritance models (after all, the main gameplay purpose of marriage as opposed to just lovers is the effect on inheritance); you need to adjust any events and event text (and translations) where it does not make sense any more; you'd likely need to change the treatment of bastards if one is born in a woman-woman marriage and you need to treat edge cases such as regency if both spouses are pregnant (from other partners) at the same time; etc, etc.

It's far more than a one-byte modification.

CK3 has a lot of modifiers - you can simply have this as one of them.

You don't need to do any of the above, everything else you mentioned is something that can be done in the scripting language. The community will do it for you. You just have to hide a toggle somewhere.

Maybe adding same-sex marriage just isn't important for game from times where same-sex marriage was non-existent. I want rocket jumps in every game but I doubt my desire will be fulfilled.

The author acknowledges themselves: "The patch that I made was only good for the current Steam version of CK3, on my operating system, with my cpu architecture."

Not counting the fact that a change like that would need to be more thoroughly QA-ed to make sure it doesn't break something at some point.

This is because targets have different binaries. The change in the code is removing one if statement.

That will introduce game breaking behavior when you can't have kids...

Yes, of course. That's the cost of same-sex marriage in such a game, unless you use the House Seniority mechanic you will eventually have a game over. That doesn't make this anymore difficult than switching a false to a true in an optional fun feature, it'll just be very difficult to play the game (but not impossible!)

Elective succession and tanistry were rather common historically and an option in the game, so having kids shouldn't be significant. The key is the heir has to be in your dynasty, not that it be the fruit of your loins.

Well, one can have kids from other partners, not only within marriage.

My personal guess would be that there's some kind of non-deterministic game-state-exploding bug tangled up with the marriage checks, and that the amount of work to fix it puts it at the bottom of the list after new feature work. This would be entirely consistent with the sorts of weird bugs that have already come up in CK3 change logs.

Maybe Paradox don't want to host mods that are a modified version of the core executable binaries

You also cannot disable homosexuality so I don't think their decisions are politically aligned.

Richard I of England and Philip II of France were very likely homosexual but still got married off in the hopes of creating an heir. Maybe a suitably bribed pope in the middle ages would have found a way to get a gay marriage passed. That it'd even be considered necessary is doubtful - that "at night their beds did not separate them" was likely good enough for that pair of K̶i̶n̶g̶s̶/Queens. So they could be well-aligned with the relevant historical period and setting.

I have zero familiarity with the game so am purely considering the title here.

> it turns out that the game logic to marry two characters is contained in the game binary, not in the scripting files, and the game engine will unilaterally block same sex marriages.

> it became clear from statements both on the forums and off of it that while the concern was noted, fixing the issue would be difficult, and it wasn’t a current priority.

Doesn't look like it's that easy.

Inheritance and adoption was probably cut from the feature set for simplicity. Without an heir you "lose"and I suspect adoption to force an heir would break some lose scenarios

No guarantees about the personal beliefs of the person/people running the forums, who seems to be the major blocker of this patch / discussing the patch.

Occam's razor suggests to me that some people in the design process defined marriage as being strictly between a man and a woman, and nobody else cared enough to change this.

It doesn't fill me with joy that a 2020 game would make that choice.

Also the choice to have characters default to open homophobia, and for that to be used as a positive in promotional material, is not an indicator of a gay-friendly organisation.

> Occam's razor suggests to me that some people in the design process defined marriage as being strictly between a man and a woman, and nobody else cared enough to change this.

Occam’s razor suggests they built a historical game and just ended up embedding some in-game cultural background in the game engine. As others pointed out, dealing with same-sex marriages affects several aspects of the game, particularly dynastic rules.

> It doesn't fill me with joy that a 2020 game would make that choice.

You are working from your assumption, here. We really have no idea how it ended up that way.

> Also the choice to have characters default to open homophobia, and for that to be used as a positive in promotional material, is not an indicator of a gay-friendly organisation.

I find it interesting that you genuinely feel that. If anything, it tells a lot about how pervasive violence is in our societies. The game is full of back-stabbing, lies, cheating, poisonings, forced marriages, the occasional war, and yes, hate and irrational beliefs. Not much of it is moral, and yet you’re not pained that the developers might be enthusiastic about smothering babies.

It is a game set up in Europe in the Middle Ages. Hardly the most progressive environment. If you want to build a tolerant utopia, Cities Skylines is probably a better game. It is also great, but you might also like the occasional opportunity to be a ruthless, amoral, power hungry arsehole every now and then, regardless of your personal situation IRL.

> It doesn't fill me with joy that a 2020 game would make that choice.

> You are working from your assumption, here.

I can rephrase: "It doesn't fill me with joy that any game company in 2020, particularly one known for encouraging modding, would hard-code marriage as between a man and a woman"

But don't forget about Hanlon's razor.

I don't play Crusader Kings, was more curious about the technical bit, but it would be a shame to not be able to release what seems like a quazi-historical game with fairly different cultural norms by default.

Hanlon's razor: "never attribute to malice that which is adequately explained by stupidity".

What's the difference? The outcome is the same.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact