Abstract API for open consoles?


#1

As I’ve been looking into the possibility of porting the Gamebuino META library, I’ve gotten this idea:

How about we create an abstract API, independent of the HW, which if used would allow compiling the game for most open consoles like Pokitto, Arduboy, Gamebuino, …?

Nowadays with each new platform we have to port a number of libraries there and back in order to port games. It’s not wrong, but mostly it’s an unnecessary amount of work.

The API that would be above all these libraries would probably have some limitations and wouldn’t allow exploiting the HW to the fullest, but it would suit most games. It would be like Unity/Godot for open consoles – write the code once and export to whatever platform, for a price of some performance and capabilities of course.

Now the good part would be this: the supported export platform would include the PC. Think about it: you could comfortably develop games in a way you’re used to, for each platform the same, even if it’s new and lacks a comfy emulator. Use your favorite debugger etc. And get a small PC game for free.

The library could also support settings that would allow interesting experiments – for example how to display a game that uses color on a black and white display – you could choose between dithering, “blinking” shades of grey and so on. Plus some higher level functions such as save game that could use each platform’s preferred way of doing so.

Just an idea to talk about. What do you think?


#2

The moment you start trying to get the same code to run on multiple systems, you become limited by the lowest specs.

For example, Gamebuino has a resolution of 84x84 and Arduboy has a resolution of 128x64, so to get something that runs on both without alteration means you have to either limit yourself to 84x64, scale the image (which is really difficult with monochrome screens), or write separate drawing code for each resolution.

In my opinion, it’s more effort than just porting the libraries or porting the games themselves,
and to be honest I think hand-tailoring each game to the console it’s targeting gives you a better result anyway.


#3

Definitely, just sometimes you prefer multiplatform code to a platform specific but better code.

Would be nice to just have a choice.

Well, not exactly – you don’t have to target all supported platforms, plus you can have fallbacks for the low specs. Also as you say, you can have a small piece of drawing code separate for each platform, but generally most of your game can be a common code.


Also it could be exported to fantasy consoles :blush:

But anyway it would be a big project. I think this will become more relevant when more open consoles come.

With current approach the number of libraries we have to port grows quadratically (each to each), while with the uber API it would only grow linearly (just write a new exporter/binding for a new console) (of course supposing everyone would use the API, which people wouldn’t). Currently we’re at about the point where the efforts should be equal, but with two more consoles I’d seriously start thinking about it.


#4

This can be done much more easily if the API has very strict restrictions on the type and scale of game. A multiplatform API for bitsy-style games is a more feasible project than trying to remake Love or SDL.