Experienced Points

The Perils of Porting


Author’s Note: Before we get started, let me state for the record that I’ve never ported to or from a console. I’ve made stuff that’s “cross platform” between Windows and Linux, but that’s the Easy Mode form of porting. I’ve also taken features developed on a then-current PC and made them work more or less gracefully on machines a few processor generations behind the times, which is a task that has a lot in common with porting, except it’s easier whenever it isn’t impossible.

So you’re making a videogame. And let’s say this videogame is planned to release on multiple platforms: The FunBox, the WizBang, and the PC. You can’t very well have your programmers jumping from machine to machine as they work, so you need to pick one specific platform as your development platform. Let’s say you pick the FunBox. You get FunBox development machines for the team and you put them to work making your videogame.


So how do you handle porting? You can have a platform specialist working on the game in tandem with the rest of the team. The core team can make a build for the FunBox and then your WizBang guy gets it running on the WizBang. The problem is that plans change throughout development. Features get cut, effects are added, tweaked, removed, and then implemented in a different way. That’s just part of development. But if you’re paying someone to port this half-finished game as it gradually becomes a finished game, then a lot of their work is going to get thrown away. Programmer time is crazy expensive, and not the sort of time you want to be wasting like this. It makes more financial sense to let the game solidify on the FunBox, and then have your specialist come in and do the port once the game is nearly done.

However, if they develop the port after the core game is done, then they might not have enough time to finish the port. What will you do then? If you delay the game on the WizBang then the mega-corporation that makes the WizBang will be pissed. They might even have a contract that says you’re not allowed to give the FunBox an “exclusive”. If you delay the game on all platforms, then your publisher will crucify you because their timetable says this is going to be a Christmas release, and literally millions of dollars are hinging on that.

Halfway through development a problem comes up: In your game, you’ve got this elevator ride designed to hold the player still so you can pre-load the next section of gamespace. The player is exploring the factory, then they get in the elevator and the game loads up the sewers or whatever. Once the elevator ride ends, the game clears the factory from memory and the player seamlessly moves into the sewers. Except, you’ve got slightly less memory available on the WizBang, and there’s not enough room for both the factory and sewers to be in memory at once. What do you do?

You can replace the elevator ride with a loading screen on the WizBang, but players will notice. People will say, “The WizBang has loading screens and the FunBox doesn’t.” WizBang will be pissed at you, and they have the power to make life really difficult for you. Also, there’s some lines of dialog that happen during the elevator ride to keep it from getting too boring for the player. They’re actually important to the plot, so we can’t cut them. Do we want to make the player go through a loading screen and then also lock them in place for 30 seconds of dialog?

Batman Arkham Knight Logo Large

You could just make the factory level smaller. Maybe cut it into two levels. But that means re-doing a huge level. Literally dozens of people will need to re-design fights and set-pieces, and we’ll need to add another “elevator” somewhere to the middle of the factory. Programmer time is expensive, sure, but the time of a dozen people is terrifyingly more expensive.

The other thing you can do is to give both platforms a loading screen. That’s a little unfair to FunBox owners, since their machines are powerful enough to avoid it, but they’ll never know what they’re missing out on. On the other hand, critics might ding us for long loading times if we do that.

While you’re pondering that, someone comes to you with a question about texture resolution. See, while the WizBang has less memory available for loading levels, it actually has more memory for graphics rendering. You can use larger, more detailed texture maps if you want to. The artists already created the ultra-high detail base images, which they then scaled down to fit in the FunBox graphics memory limit. But you don’t need to do this for the WizBang. If you want, you can let WizBang owners see the environments in their full-resolution glory. The only question is: Are you willing to deal with the controversy and ill will from FunBox Corp if the community notices and makes a big deal about this?

While you’re trying to figure out what to do about that, another minion comes in to ask you about another problem: Both machines have about the same hard drive speed. However, the WizBang also allows the user to play directly from the optical media (DVD, Blu-Ray, whatever) which is slower than a hard drive. We stream our cutscenes into memory as the player watches them. So the problem we have is that some small percent of WizBang owners will have really horrible stuttering while watching cutscenes. One of the programmers thinks she can add a feature to detect when the player is about to enter the cutscene and begin pulling the data in early, to avoid the stuttering. It’s really complex and it will probably take some time to get it right. The other thing we can do is just drop the quality of cutscenes on the WizBang (which makes those users very angry) or drop the quality for everyone (which makes everyone slightly annoyed) or we can leave it as-is, and hope that people just accept the stuttering if they’re playing directly from disc.

There’s a new kind of special fire effect that looks really snazzy and (most importantly) looks fantastic in gameplay trailers. Marketing really wants it in the game so it can be in the trailers, even though it’s a tiny part of the game that only appears once. However, this same effect is achieved in two entirely different ways on our two platforms. We’d need the artists and programmers to basically do the entire feature twice.

So porting is this horrible mix of political decisions, technology decisions, and artistic decisions, and nearly every choice involves a tradeoff where you decide who you want to piss off. It’s expensive and arduous and if you work very hard and do things just right, then nobody will notice because the game looks exactly the same on both platforms and that’s what everyone expects.

As release approaches, a lackey comes in to ask you a question about how the DLC bonuses are going to work on the PC. You forgot about the PC port, didn’t you?

Did you know they can return defective games now?

Shamus Young is a programmer, critic, comic, and crank. Have a question for the column? Ask him! [email protected].

About the author