Ventures of an ex indie game developer

IDE and portable code growth without portability layer

I took my first stumbling steps with SciTE. The code was straightforward and as far as I could tell the bulk of it was platform-specific. Which means the author has had to implement it twice and probably a third time for the Mac version. I jumped to a ton of hoops to avoid this in my game engine. I know that when something is implemented on a very portable code base you have five major benefits:
  • When it's implemented for another platform, it usually just works.
  • It usually behaves identically on all platforms, as behaviour is separate from system calls. This often surprises me as it's a bit strange at first to see your game run flawlessly on different hardware.
  • The easy problem areas are confined to platform-specific files. These problems are often trivial to fix, only seldom hard.
  • The hard problems are more often than not bugs that occurs on all platforms, but is usually overlooked on the development platform that for some reason or another is more forgiving.
  • In the long run it should be less work.
One obvious drawback is of course that the architecture in the platform-specifics becomes more complex, larger, harder to develop. And I assume it also becomes more boring to maintain in the long run, as it (base of an engine) is further from what you're actually trying to make (a game). The trade-off in time is, I'm guessing, advantageous if you want less total boredom.

If we look at the number of commits over time for SciTE we could either assume the project has become more relevant for Niel, or it takes more to maintain it:


(The contributions by others constitute only 1.1 % of the commits and I consider them neglectable.) My two-penn'orth: go for a portability layer if you're making something that is going to live more than three years.

Btw, this is what I did with SciTE in 5-6 hours: drop all other languages than Python, drop menus and menu alternatives for other languages, place all configuration files in a subfolder, default to a monospaced font, configure syntax highlighting similar to Notepad++, remove syntax check menu command, add buttons in toolbar for running and stopping, build as TrabantIDE.exe, replace program icon, ESC hides the output window, output log shows every time a game prototype is started. Most of this was made in two configuration files in minutes. Thanks again Mr. Neil Mega Awesomeness Hodgson!

About the author

Mitt foto
Gothenburg, Sweden