On Engines and Portability

7/15/2019 - Nathan

Common wisdom holds that if you want your game to run on a bunch of different systems, you should use a third party engine like Unity or Unreal. But is that really true?

What platform is it for? That's the first question you have to answer when making a game. Is it for a console? Then you're going to have a nice easy time dealing with the controls. Is it for a computer? Then bad news, everything's going to be difficult! But what about if you want your game to be on more than one platform?

Eight Dragons was originally written in C++, and built to run on Windows, Linux and MacOS. Now, we're a pretty small team, so actually supporting Linux and MacOS would be difficult - we don't have the gear to test those platforms effectively enough to have any confidence when selling the game. So despite those platforms being theoretically supported, in practice Eight Dragons was Windows-only.

However. One of the unstated goals was to port Eight Dragons to consoles. Not just any consoles, either - the Sega Saturn, Sony Playstation and the 3DO. Those systems, all released in the mid-nineties, were ahead of their time in one important way - they could all, with add-ons, handle eight controllers at once. Naturally porting to these systems wouldn't be straightforward. All the graphics and sound handling code would have to be rewritten for each system, and a lot of the data files would need to be pre-processed in some way to reduce loading times. But C++ can be compiled to the formats those three systems need, so all the important game logic wouldn't need to be rewritten.

It turns out, however, that while there are a lot of people who love new games to come out on those systems, there aren't many people who are prepared to buy new games for those systems. With a heavy heart, I put that goal on the back-burner. Maybe some day I'd get around to writing that cross-platform engine that'd simplify the task...

And while thinking of cross-platform engines, I found myself rethinking the entire basis of writing Eight Dragons in C++ at all. Both Unity and Unreal would allow us to reliably support not just the three PC platforms, but also consoles. And they'd make it relatively simple to add online multiplayer too. Only one small problem - the game was basically written. Switching to a third-party engine would mean replacing all the code that handled graphics, sound, files and controllers. And delaying the launch again.

Which brings us to today. We're about a month away from launching Eight Dragons for real, having spent an awfully long time porting the game to Unity. Soon the Early Access players will get a shot at it, and hopefully it'll fix a few of the bugs they've run into as well as give them new features. But how much time would we have saved by just using Unity in the first place?