More thoughts on portability


emulators everywhere

Is portability overrated? That seems to be the conclusion of my previous article, in which I ended up suggesting you'd be better off picking an older computer platform and making games for it, relying on emulation to have your work reach a wider audience. Then again, even among 8-bit micros portability may not have been a lost cause after all. As a friend pointed out (thanks, WereWolf), most computers in the 1980es were based on one of two CPUs: either the 6502 or else the Zilog Z80. And since they were typically programmed in assembly language, core game logic was theoretically quite portable. So were BASIC type-ins for that matter, for all the differences between dialects, as long as they didn't make use of platform-specific drawing or sound code.

It may be that the secret of portability lies in the algorithms.

When I ported [[Square_Shooter?]] from Javascript to C++, a very pleasant surprise was that the core game logic only had to undergo a 1-to-1 translation from one language to the other. The same happened with the Java ME port of Buzz Grid. It helps that in both cases game logic is strictly separated from graphics rendering — a trick I learned early on. The importance of this separation can't be overstated: you could make a 3D version of Buzz Grid and not change the game logic one iota.

buzz grid 3D

Even graphics may not be so difficult to port. Square Shooter and Buzz Grid couldn't care less about resolution, which was very useful when I ported the latter to mobile phones. It's why they have vector graphics in the first place; but as it turns out, it works with bitmaps too. Granted, then it requires hardware acceleration. But not the 3D kind! This is the same good old 2D so many game developers consider obsolete.

It's subtly tricky when porting a text adventure from one authoring system to another. While all of them revolve around the same basic concepts — room, actor, thing, exit — they all differ in flavor and capabilities. While the more powerful ones routinely emulate each other's features, each does it its own way. Default scope and darkness rules are especially common traps. Luckily, even cursory testing should reveal those, and at worst, you may need to change the gameplay a little. You shouldn't be afraid to do it, either.

And that's the best conclusion I can draw about portability: while it's overrated, and usually not worth the trouble, sometimes it will be easier than you may think. When it is, go for it. Making your game more widely available is definitely a good thing. Just don't force the issue. It's better to make a Halo for the Atari 2600 — a completely different game in the same spirit — than to go against the grain, with all that entails, just so you can brag about your title running on the latest fashionable platform.

(Thanks also go to Kris for the feedback.)