Quick answer: GameMaker extension functions returning -1 on HTML5 but working on desktop? Extensions need a JS implementation for HTML5 - check the extension's HTML5 source files.
Steam extension works fine on Windows. Same project HTML5 export returns -1 for every call.
Add HTML5 source
Extension > Files. The HTML5 export needs a .js source mirroring the desktop DLL's interface. Without it, calls silently fail.
Stub unsupported APIs
For desktop-only APIs (Steam, native filesystem), the HTML5 stub returns -1 or a sensible default. Document the gap.
Branch in GML
if (os_browser != browser_not_a_browser) {
// HTML5 path
} else {
steam_function();
}Skip extension calls when running in browser. Cleaner than relying on the stub.
“Cross-platform extensions need per-platform sources. The HTML5 stub isn't free.”
If you target HTML5 alongside desktop, audit every extension call at project start. Easier than after release surprises.