5 ms·
Fantastic video. For those in the industry, how does a game get ported? Do you figure out all the constraints of the target system, fork the original, adjust,
by dopeboy 6y ago
Fantastic video. For those in the industry, how does a game get ported?
Do you figure out all the constraints of the target system, fork the original, adjust, and compile? Is it an involved process? Do the original dev's (Carmack in this case) get involved or is it "second tier" sort of work?
- city41 6y agoid software, primarily Carmack, wrote the Atari Jaguar port of Doom.
- djmips 6y agoAs someone who worked in that era, it really varied on how much support you would receive from the original authors. In this case he worked mainly from the reverse engineering of the data (WADs) that was available and used his own experience to recreate the game. When I was doing ports of games from Japanese companies or other people doing arcade ports for example often all you got was a copy of the game. I remember having to get so good at the game in order to be able to finish it to recreate it correctly! Best case scenario you get the original source code, art assets and audio. Worst case you have to work it all out and reverse engineer everything. Usually at least you would get some art and audio assets.
- pcwalton 6y ago> Do you figure out all the constraints of the target system, fork the original, adjust, and compile? Is it an involved process? For most games, yes, but this particular game was written in assembler (as were virtually all games on that system), while the original game was written in C (probably with some x86 assembler as well, also incompatible with the console). So it had to be essentially a complete rewrite.
- dopeboy 6y agoWriting DOOM in assembler sounds like a...gargantuan task. Is it a case where you can compare assembler output from the original or a start-from-scratch sort of thing?
- wk_end 6y agoProbably mostly a start from scratch. Even if you felt like disassembling and trying to grok the PC executable, it wouldn't be especially helpful - the SNES' 65816 CPU (and its SPC700 APU, and the Doom cart's Super FX coprocessor) are completely different than an x86; especially for a performance-intensive game like Doom, you'd likely need to rearchitecture the whole thing.
- ElCapitanMarkla 6y agoMVG has a recent video up where he ports Heart of Darkness to the original Xbox which gives a bit of insight - https://www.youtube.com/watch?v=f4rNhTTwGgk https://www.youtube.com/watch?v=f4rNhTTwGgk And in the case of SNES Doom, Randy didn't see any of the Doom source code. He found an online guide describing the Doom WAD files and then wrote a Doom prototype from scratch, on an Amiga using his own tool set. Insanely talented guy.
- FartyMcFarter 6y ago> how does a game get ported? There are many options. A few points: - Some "ports" are done by running the original game in an emulator. - If you don't have source code or it can't be compiled for the target platform, you may have to rewrite from scratch (as was done in the case of SNES Doom apparently). - Depending on how different the programming environments are (e.g. operating system, threading primitives, graphics/sound APIs, memory - consoles often have exotic memory layouts), significant rewriting may be needed in order to get the game running on the target platform at all. - Once you have something that runs, it may perform like dog crap. In this case the porting job turns into an optimization and re-tuning exercise. This may involve not only optimising code, but also changing the quality of graphical/sound assets (artist work may be needed!), chopping off parts of the game (the SNES Doom does not have all levels, textures or animations for example, as the video says). - Many bugs may crop up with the rewrite, or bugs in the original game may be exposed by running it on a different platform. General debugging skills are very likely to be required. All but the simplest ports are likely to be an involved process, unless the two systems are very similar: for example, porting a game from Windows PC to Linux PC is likely to be relatively simple, compared to porting a game from PC to a primitive console.
- gambiting 6y agoI've been involved in some ports recently, from really old systems into modern ones(like, PS1 games into current/next gen) - it's basically 1) import the whole thing into Visual Studio solution 2) Add the desired target platform 3) hit build 4) keep resolving compilation errors until the game builds. 5) keep resolving linking errors until the game links 6) try running the game until it starts on the target system and doesn't crash immediately. 7) congrats, now you have something that most likely runs without any video, sound or input 8) spend X amount of time re-writing the renderer for the target system, add input support, add sound. This step can take any amount of time 9) congrats, now you have a game that "runs". It probably runs like absolute garbage right now. Now spend time understanding how all subsystems work - how is the data loaded? If it was a PS1 game, it was probably optimized for loading from the disc - can we now change it to have a more straightforward loading sequence. Can we just load the whole thing into ram on startup and be done with it? 9) do as many tweaks and optimizations as the time and budget allow - make sure it renders in 4K, supports 3D audio, rumble for controllers etc etc etc etc. Again, step 9 can take any amount of time, depends what your production allows. We were lucky in that the original programmers who worked on these games 20+ years ago still work at the same company - so it was quite fun for them to revisit that old code. But yeah, don't expect people to remember the code they wrote 20 years ago, you end up ripping out entire sections still marked as "fixme before launch(date: 12/1998)". As for porting between current platforms(like a game simultaneously launching on Xbox and Playstation) - it's usually built for both from the start. In the rare cases where a platform gets added later, it's basically the same process as above - add the target, try building and running until it does. People who have experience doing it can progress much faster than people who don't - same as everything.
- bluedino 6y agoIf you were lucky you’d get the source code and assets for the game. But many home computer ports and early console ports weren’t so fortunate. You might have access to an arcade machine, or maybe just a video recording of a play through. It was up to the developer to mimic what they saw. Of course, the target system would limit what you could do.