Why is it so hard for modders to port games to pc


Why is it that game Devs are able to port games to pc but people aren’t able to do the same outside of emulation that take a while and doesn’t always run the best. I don’t know much about game development or computers, why is it so difficult/impossible?

In: 8

It’s more difficult (you don’t exactly have a way to wipe/reinstall in case something messed up, or you have to invest in hardware to plug it in) and more speculative (once your hardware ID is banned you are looking at shelling the money to buy a new console if you still want to play that game) to cheat with consoles so it’s easier to keep the game fair.

For single player games I guess it’s more like the projected money isn’t there because cracking DRM for computer games is relatively easier than writing emulators for console games.

Porting games means changing the code so that instead of giving commands to a particular console you have the software give equivalent commands to a PC. It requires rewriting the code of the game.

Not only is this a lot of work, but it generally requires source code. Source code is what humans can read that a compiler turns into code that a machine can read.

The developers wrote the source code, so they have it. So, if they want to make changes, they change the source code and compile it again.

Outsiders are left with the machine-comprehensible compiled version, not the human-comprehensible source code.

Many tools have been developed to make this easier, but it isn’t generally that easy, and without the source code it gets much harder. Developers are paid good money, have the source code, and have the tools. Software crackers generally do not make good money porting games and do not have the source code.

Emulators are when you recreate the game environment and translate all commands from the game to the PC on the fly. Tricky, and it means running the game on hardware that has both an additional source of slowness (the emulator) and often is translated slowly, badly, or can’t be translated readily at all.

However, PCs are powerful enough that this can be partially overcome by just throwing more power at the problem. If the console is new, this may be inadequate, but, on older games, an emulator on a modern PC is easier than porting, and it allows you to run dozens of games rather than just one. For the same amount of coding as converting only one or a few games, you might get almost every game that a Nintendo 64 ever had.

It is just as difficult as emulation (you need to know the hardware just as well), but you only get one game instead of many.

It is also less legal: the game is protected intellectual property. The law may put some heavy restrictions: like prohibiting **any** monetary gain (including crowdfunding). Emulators are confirmed to be legal in some countries, even for selling (doesn’t stop game publishers from trying taking them down anyway).

Devs have access to the human-readable source code, modders do not.

A dev would write code like this:


Then this code gets translated by a compiler into a ton of much more basic instructions that the actual processor can understand. To stick with the fridge/beer analogy, instead of just those three lines, the compiled code for a human would have hundreds or thousands of instructions specifying which muscles need to be tensioned and relaxed for how long and in which order.

Imagine thousands of lines like this:

tension(muscle1, 40N, 0.3sec);
relax(muscle7, 0.1sec);
relax(muscle3, 0.2sec);
tension(muscle2, 12N, 0.25sec);

It’s easy to understand what’s happening in the first bit of code, but with the second bit of code it’s impossible to tell what the human is doing. He could be playing golf or riding a bike or anything else that involves using his muscles.

What’s more, these instructions are specific to the hardware, in this case a two-legged human. If you tried to run the same compiled code on a dog, he wouldn’t get very far because only two legs are moving.

In order to port the code to a dog, the dev would just use a different compiler that spits out dog-compatible compiled code, and possibly make some adjustments to the human-readable code.

A modder would have to take the muscle instructions for a human and then somehow change them to be appropriate for a dog, if he even understands what exactly the code is doing.

The original programmers will have access to the source code (lowest level language). That’s easy to translate to whatever you need to.

Modders are starting with the already translated code. And have to translate it back to source then translate it again.

Going backwards in translation is a lot harder than going forward.

Imagine you start with an English text. It gets translated to Japanese (and this it the only version available to the public). But you need it in Chinese. To get the best results you need to take the Japanese text translate it back to English, and them to Chinese. Otherwise you end up with weird errors.