Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

Non desktop platform support?

A topic by Surabaya created Sep 26, 2022 Views: 200 Replies: 1
Viewing posts 1 to 2

Hello, is there a plan to expand the supported platform beyond windows/linux/mac? For example Android, HTML5, or even Opera GX build

Thanks.

Developer (1 edit) (+1)

I have a desire, but the problem is in how much overhead there is.

For Windows/Mac/Linux, through years of gradual improvements and automation, I have reached the point where adding a new function is usually a matter of writing the said C++ code and tagging the function with a custom “keyword” - without setting up function arguments/return type in GameMaker editor and writing an intermediate script if the function takes a buffer, int64, or anything else that isn’t a real/string/pointer.

HTML5 can kind of use C++ code with help of Emscripten, but this is pretty clunky because you don’t even “just” give a string to an Emscripten program - you ask it to store the string to you, which returns an “address” (which is just a number) that you then pass to the actual function, and call the clean-up function afterwards.
I experimented with this for a client before, but basically you need a tool to auto-generate these small JS functions because writing them by hand is a disaster.

Android is only slightly better - both GameMaker and your extension are C++ code with shared memory, but there’s a certain caveat: GameMaker can only call Java code. So for every C++ function you need a Java function definition. Someone made a test Android version of Apollo before (the source code is included in the download), but I do not like the idea of doing this by hand for every function - so that’s another tool that I would need to write.

iOS is kind of like Android except instead of Java you have Objective-C code. That’s a third tool to write.

Opera GX formally can’t use native extensions at all - you’d want to use my “tiny expression runtime” (which is GML without external code) if you need to publish on it (although I doubt that this will be the only issue with loading user-generated content on GX).


As for your other topic, yes, you can use GMLive while testing in Opera GX - the only feature that uses native extensions is shader reloading.