WavedashDocs

GameMaker

Publish GameMaker projects to the web via HTML5 or GX.games exports.

View the example on GitHub

GameMaker exports to HTML5 and GX.games (OperaGX) targets, both of which produce browser-ready builds that work on Wavedash. The export includes index.html, runner.js, runner.wasm, and your game data.

Export your game

Use one of these export targets in GameMaker:

  • GX.games / OperaGX — produces a flat zip with runner.wasm, game.unx, and supporting files. This is the recommended target for Wavedash.
  • HTML5 — produces a similar folder with an HTML shell and WebGL runner.

Export to a dedicated folder (e.g. build/web) and point upload_dir at it.

SDK integration

Wavedash injects WavedashJS into the page before your game runs. To call it from GML, create a JavaScript extension:

  1. Create an extension in your project (e.g. WavedashBridge)
  2. Add a .js file to the extension with wrapper functions:
function wavedash_get_username() {
  var user = WavedashJS.getUser();
  return user ? user.username : "";
}

function wavedash_submit_score(leaderboard_id, score) {
  WavedashJS.uploadLeaderboardScore(leaderboard_id, score, true);
}

function wavedash_set_achievement(achievement_id) {
  WavedashJS.setAchievement(achievement_id);
  WavedashJS.storeStats();
}

function wavedash_load_complete() {
  WavedashJS.loadComplete();
}
  1. Register each function in the extension editor so GML can call them:
var _username = wavedash_get_username();
show_debug_message("Playing as: " + _username);

wavedash_submit_score("high-scores", global.score);

Load progress

Report loading progress so the Wavedash shell can display its loader:

function wavedash_update_progress(value) {
  WavedashJS.updateLoadProgressZeroToOne(value);
}

Call wavedash_load_complete() from GML once the player can interact.

wavedash.toml

Point entrypoint at the exported index.html inside upload_dir. Wavedash loads that page first, and it boots GameMaker's runner.js, runner.wasm, and game data from there.

game_id = "YOUR_GAME_ID_HERE"
upload_dir = "./build/web"
entrypoint = "index.html"

Do not set upload_dir to your project root — that would upload your entire source tree. Always point it at the exported build folder.

Known issues

show_message and alerts. Wavedash hosts games in a sandboxed iframe without allow-modals. GameMaker's show_message compiles to alert(), which will silently fail. Remove all show_message calls or replace them with in-game UI before publishing.

Save data with script references. GameMaker's json_encode can serialize script references as @ref script(...) strings. These do not round-trip on web — json_decode returns undefined for them. Save state by name (string) instead of by script reference.

Ad and mobile extensions. If your project includes Google Mobile Ads, IAP, or other mobile-only extensions, make sure they exit early or are stripped for web builds. Leftover ad snippets in index.html can cause console errors.