Key takeaways

  • GameMaker is free for non-commercial use, but you need the one-time Professional license (or Enterprise) before you make money from a game.
  • Mobile ads and in-app purchases come from official open-source extensions on YoYo Games' GitHub: AdMob, LevelPlay, Google Play Billing and Apple IAP.
  • An offerwall needs no GameMaker SDK: your server signs the link, the game opens it in a WebView or browser, and your server credits currency from postbacks, in every build except Steam.

How do you monetize a GameMaker game?

You monetize a GameMaker game with a premium price, in-app purchases, ads, or a rewarded offerwall, and which ones you can use depends on where you ship. Mobile builds use GameMaker’s official extensions: AdMob or LevelPlay for ads, Google Play Billing and Apple IAP for purchases. Desktop builds usually sell on Steam or itch.io, and GX.games offers one-time purchases and tips to games it selects. An offerwall needs no extension at all: your server signs a link and the game opens it.

Before any of that, check your license. GameMaker is free to use, but not to sell with.

Step zero: the commercial license

GameMaker’s pricing page says the engine is “absolutely free to download and keep forever for non-commercial use”, and that “if you want to make money from your game, you need to buy a Commercial License for $99.99”. That Professional license is a one-time purchase and covers GX.games, desktop, web and mobile exports. Console exports need the Enterprise subscription. No tier forces a watermark or splash screen. Prices checked on October 29, 2026.

The upcoming GMRT runtime follows the same rule, so budget the license before your first ad impression or sale.

GameMaker monetization options by build target

One GameMaker project can export to Android, iOS, Windows, macOS, Linux, the web and GX.games. Each target allows a different mix. Policy facts in this table were checked on October 29, 2026.

TargetAdsIn-app purchasesPremium saleOfferwall
Android (Google Play)AdMob or LevelPlay extensionGoogle Play Billing extension, required for digital goodsPossible, less commonYes, within Google Play rules
iOS (App Store)AdMob or LevelPlay extension, plus the ATT promptApple IAP extension, required for currency and premium contentPossible, less commonYes, within Apple rules
Windows, macOS, Linux on SteamNo, Valve does not support ad modelsSteam Wallet only, through SteamworksThe main modelNo
Desktop on itch.io or your own siteRareYour own checkoutYes, with the revenue share you set on itch.ioYes, in the system browser
HTML5 on your own site or a portalWeb or portal ad SDKsDepends on the hostRareYes on your own site; ask a portal first
GX.gamesNot offered by GX.gamesGX.games paywall and tips, for selected gamesOne-time purchase, for selected gamesAsk GX.games first

A common setup is a free mobile build with ads and purchases, and a premium Steam build with neither. GameMaker handles this with separate configurations and a check on os_type, so one project serves both.

How this compares with Construct 3

Construct 3, the other popular 2D engine, builds these pieces into the editor instead of separate extensions. Its Mobile Advert plugin shows AdMob banners, interstitials, rewarded and rewarded interstitial ads on Android and iOS, and its Mobile IAP plugin handles consumable and non-consumable purchases on both stores. The store rules below are the same whichever engine you use. If you are still choosing an engine, How to monetize a Godot game covers the open-source alternative.

GameMaker ads: AdMob and LevelPlay extensions

YoYo Games publishes its official extensions as open source on GitHub, with releases that often arrive before the Marketplace listing is updated. Two are for ads:

ExtensionLatest release (checked October 29, 2026)What it does
GMEXT-AdMobv2.0.2, August 2026Wraps Google’s Mobile Ads SDK for Android and iOS: banner, interstitial, rewarded, rewarded interstitial and app open ads, plus GDPR consent. Bundles mediation sub-extensions for AppLovin, ironSource, Meta, Pangle and Unity Ads.
GMEXT-LevelPlayv1.0.2, August 2026Wraps Unity’s LevelPlay (ironSource) mediation SDK for Android and iOS. You need a LevelPlay AppKey per platform.

Two things to know before you upgrade. AdMob version 2.0.0 was a breaking rewrite: the old AdMob_* functions and their async social events were replaced by snake_case admob_* functions that take a callback, so older tutorials no longer match. Google’s AdMob page for other platforms lists GMEXT-AdMob as the GameMaker library, but says these libraries are “not official Google Mobile Ads SDKs” and that AdMob support does not cover them. Bugs go to the GitHub issue tracker.

Which ad formats fit

  • Rewarded video is the format players accept most, because they choose to watch. Use it for a revive, a second chest or a daily bonus. What are rewarded ads? covers the mechanics.
  • Interstitials belong between runs or levels, never mid-play, and with a frequency cap.
  • Banners earn little and cover pixel art, so many GameMaker games skip them.

Short-session arcade games lean on ads more than anything else; How to monetize a hyper-casual game goes deeper on placement and frequency. For HTML5 builds, YoYo Games also has extensions for Google’s H5 Games Ads and for CrazyGames, and How to monetize an HTML5 web game covers portals and web ads.

In-app purchases in GameMaker

If a mobile game sells currency, levels or other digital content, the stores require their own billing. Google’s Payments policy says such apps “must use Google Play’s billing system” and lists virtual currencies as an example, with exceptions only through its alternative billing programs in eligible regions. Apple’s App Review Guidelines section 3.1.1 names “in-game currencies, game levels, access to premium content, or unlocking a full version” as things that must use in-app purchase, although apps on the United States storefront may now link to other ways to pay. Both rules were checked on October 29, 2026.

Android: GMEXT-GooglePlayBilling

The official Google Play Billing extension (v2.0.3, August 2026) wraps Google Play Billing Library 9.1.0. It queries products and subscriptions, launches the purchase flow, and acknowledges or consumes purchases, and it supports Google’s alternative billing and external offers programs. Version 2.0.0 replaced the old GPBilling_* functions with play_billing_* functions, so check which version a tutorial was written for.

iOS and macOS: GMEXT-AppleIAP

The Apple IAP extension (v2.0.3, January 2025) covers iOS, tvOS and macOS, with consumables, non-consumables and subscriptions. Its release notes say local receipt validation was removed and “purchases should be validated using your own server”, using GameMaker’s normal HTTP functions to talk to it. The repository includes an example validation server in Node.js.

Purchase mistakes that cost GameMaker developers money

  • Granting gems in GML as soon as the purchase callback fires. Verify the purchase on your server first, then grant.
  • Keeping the wallet only in a local save file. A player who reinstalls loses what they paid for, and a player who edits the file gets everything free.
  • Forgetting a Restore purchases button for one-time purchases on iOS, which guideline 3.1.1 asks for.

A server-side wallet also makes everything else easier, including the offerwall below. If you design currencies for the first time, read Virtual economy design before you set prices.

Selling a GameMaker game on Steam and itch.io

On desktop the usual model is a premium price, sometimes with DLC or a soundtrack.

Steam

The official Steamworks extension (v3.0.0, released October 27, 2026) brings achievements, the overlay, leaderboards and the rest of the Steamworks SDK to GML. Two Valve rules shape what a Steam build can contain. Valve’s Advertising on Steam page says “advertising models” are not supported in games on Steam, and that developers should not give players “a reward for watching or engaging with advertising”. In-game purchases must go through the Steam Wallet. That rules out AdMob-style ads and offerwalls in the Steam build. The full rule set is in Can you put ads in a Steam game?

itch.io

itch.io uses open revenue sharing. Its payments guide says you decide what percentage of sales goes to itch.io, “from 0% to 100%”, uses 10% as the default in its example, and says payment processing (generally $0.30 plus 2.9%) comes on top.

Is GX.games still an option?

Yes. GX.games is Opera’s game platform inside the Opera GX browser, and every GameMaker tier, including Free, includes the GX.games export. GameMaker’s help article on uploading games to GX Games is still maintained in October 2026.

Monetization there is selective. The GX Games monetization guide (last updated July 29, 2025) says the team is “currently being very selective”, that you apply through a form, and that selected creators onboard with Stripe, which is only available in a listed set of countries. The tools it describes are a one-time purchase, a demo plus paywall (the one it recommends most), tipping, and custom promotion. Publishing is free, and if you monetize, GX.games says it takes 10% of your earnings.

Treat GX.games as a discovery channel first, and ask GX.games before adding outside monetization such as an earn screen to a game published there.

Adding an offerwall to a GameMaker game

An offerwall lists offers from advertisers, such as trying an app or finishing a survey. Players who complete one earn your in-game currency, and you earn per completed offer. It reaches the same non-paying players as rewarded video, and a completed offer usually pays more than a single ad view. Offerwall vs rewarded video compares the two, and Hybrid monetization for games shows how to run ads, purchases and an offerwall side by side without one eating the others.

There is no Sharklio SDK for GameMaker. You do not need one: the offerwall is a web page, and GameMaker can make HTTPS requests and open URLs on every target. The pattern is:

  1. The player signs in to your game’s account system, so you have a stable player ID on your server.
  2. Your server builds and signs the offerwall link for that player. The signing secret never goes into the game.
  3. GML requests the link with http_request and opens it: in the official WebView extension on mobile, or in the system browser with url_open.
  4. The offerwall sends a server-to-server postback for every credit and every reversal, and your server updates the wallet.
  5. When the player returns, the game reloads the balance from your server.

Following the Offerwall link docs, your endpoint checks the player’s session, then signs the player ID with HMAC-SHA256 and returns the finished link. In Node.js:

const crypto = require('crypto');
const hash = crypto.createHmac('sha256', linkHashSalt).update(String(userId)).digest('hex');
const url = `https://wall.sharklio.com/${appId}?user_id=${encodeURIComponent(userId)}&hash=${hash}`;
res.json({ url });

Use your database ID for the player, not a username or email. You can add sub1=android or sub1=itch to the link to see which build earns, since sub IDs come back in every postback.

The GameMaker side

When the player taps your Earn button, request the link with the player’s session token. The http_request page in the GameMaker manual covers the headers map:

var _headers = ds_map_create();
ds_map_add(_headers, "Authorization", "Bearer " + global.session_token);
wall_request = http_request("https://api.yourgame.com/offerwall-link", "GET", _headers, "");
ds_map_destroy(_headers);

Then open it in the Async HTTP event. On Android and iOS this uses the WebView extension with a close button; elsewhere it uses url_open, which the manual says opens the URL “on the default browser of the chosen target device”:

if (async_load[? "id"] == wall_request && async_load[? "status"] == 0 && async_load[? "http_status"] == 200) {
    var _data = json_parse(async_load[? "result"]);
    if (os_type == os_android || os_type == os_ios) {
        webview_open_url(_data.url);
        var _close = webview_button_create(48, WebViewButtonGravity.Top | WebViewButtonGravity.Right);
        webview_button_set_auto_close(_close, true);
    } else {
        url_open(_data.url);
    }
}

The WebView extension’s 2.0.0 release redesigned its API, so use the function names from its current wiki, not older forum posts. On an HTML5 build hosted on your own domain, url_open_ext with "_blank" opens the wall in a new tab so the game keeps running. How to open an offerwall in a WebView safely covers WebView settings.

Rules for each build

  • Never in the Steam build. Valve does not allow rewards for engaging with advertising, so hide the Earn button when you build for Steam.
  • Read the store rules on mobile. Apple’s guideline 3.2.2(x) lets apps incentivize actions such as watching an ad, but not forcing users to rate, review or download other apps to use the app. Can you put an offerwall in an iOS app? and Incentivized installs: Google Play policy cover the details.
  • Check your audience’s age. Many GameMaker games are played by children. Offerwall users must be at least 16, so skip the wall in games made for kids; Offerwall COPPA rules for kids’ apps explains why.
  • Credit only on the server. Never add currency in GML because the wall closed.

Illustrative example: pricing earned crystals against a crystal pack

Sample figures only. Say your smallest Google Play pack is 300 crystals for $2.99, about 100 crystals per dollar the player pays. If you set the offerwall so each dollar you earn gives the player 80 to 120 crystals, an offer that earns you $1.50 gives 120 to 180 crystals. Earners get a fair deal, and buying stays faster. Try your own numbers in the virtual currency calculator.

How to add Sharklio to a GameMaker game

Sharklio has no GameMaker SDK, so the setup is a signed link from your server, an Earn button in your game and a postback handler.

  1. Apply as a publisher at sharklio.com. Every application is reviewed by hand, and once you are approved, apps you add are live right away.
  2. Add your game in the dashboard and set the currency name, icon, conversion rate, user split, rounding and wall design, with a live preview. Price it against your smallest store pack.
  3. Sign the offerwall link on your server for the signed-in player, as the Offerwall link docs show, and open it with the WebView extension or url_open as above. Ship the Earn button in Android, iOS, itch.io and your own web builds only, never in the Steam build.
  4. Credit currency only on your server from the signed postback, once per transaction, and take it back on a reversal. Offerwall postback in Node.js has a complete handler, and Offerwall postback with Firebase Cloud Functions fits games that already use the GameMaker Firebase extension.
  5. Test with Open as a test user and Send a test postback in Integration status, from a normal home or mobile connection, following Test your app before launch.

Where Sharklio fits in a GameMaker game

Sharklio is a pay-per-result affiliate network whose signed offerwall link works in Android, iOS, itch.io and web builds of a GameMaker game, with offers that depend on the player’s country and device. Players on VPNs, proxies, Tor or data center networks are blocked, and end users must be at least 16. See how the wall works, or get in touch.

Frequently asked questions

Can you make money with the free version of GameMaker?

No. GameMaker’s free tier is a non-commercial license. To sell a game or earn from ads or purchases, you need the Professional license, a one-time $99.99 purchase as of October 2026, or the Enterprise subscription for consoles.

Does GameMaker support AdMob?

Yes, through YoYo Games’ official GMEXT-AdMob extension for Android and iOS. Google lists it on its AdMob page for other platforms but notes it is not an official Google Mobile Ads SDK, so support comes through the extension’s GitHub.

How do I add in-app purchases to a GameMaker game?

Use the official Google Play Billing extension on Android and the Apple IAP extension on iOS and macOS. Verify each purchase on your own server before you grant the item.

Can I put ads in a GameMaker game on Steam?

No. Valve does not support advertising models in Steam games and asks developers not to reward players for engaging with ads, so ads and offerwalls stay out of the Steam build.

Can you make money on GX.games?

Only if GX.games selects your game for monetization. Selected creators can sell a one-time purchase, a demo with a paywall, or accept tips, with GX.games taking 10% and payments running through Stripe in supported countries.

Is there an offerwall SDK for GameMaker?

Not from Sharklio. Your server signs the offerwall link, the game opens it with the WebView extension or url_open, and your server credits currency from postbacks.