DEV Community

dev game
dev game

Posted on

Why Undertale Bet on GameMaker Studio and GML: The Beginner Engine Behind a 5-Million-Copy Morality RPG

Undertale did not need Unity or Unreal. Solo developer Toby Fox built the 2015 morality RPG in GameMaker Studio with GameMaker Language (GML), shipped it for Windows and OS X on September 15, 2015, and sold at least five million copies without ever letting the engine become the story.

That is the short answer to "what engine does Undertale use, and why did it work?" The engine credit is listed directly as GameMaker Studio in the game's infobox data, while the game itself is described as a 2015 role-playing game where you control a child who fell into the Underground and can finish fights without killing anyone (Undertale). If you are an indie developer choosing a 2D engine today, the useful question is not whether GameMaker is prestigious. It is why a beginner-friendly 2D engine was a rational constraint for a dialogue-heavy bullet-hell RPG, what it cost later, and what you can steal from that trade.

Why GameMaker Studio in 2013 was rational, not accidental

In December 2012, while still at Northeastern University, Fox was inspired to build Undertale after reading a Wikipedia article about the array data structure, then used it to program text and battle systems for an RPG (Toby Fox). Development started during a class break in 2013 with the battle system first, not the overworld.

That sequence matters. GameMaker, created by Mark Overmars in 1999 and developed by YoYo Games since 2007, is explicitly built around 2D games using either drag-and-drop actions or GML for more advanced work (GameMaker). GML is described as an imperative, dynamically typed language commonly likened to JavaScript and C-like languages. In other words: you can spawn a bullet object in one line, move it in a Step event, and kill it on collision without a component graph, a prefab pipeline, or a 3D renderer fighting you.

For a developer whose background was EarthBound ROM hacks, RPG Maker 2000 experiments with his brothers, Touhou bullet-hell fandom, and Homestuck music — all documented in his biography (Toby Fox) — GameMaker matched his actual skill shape. He had made the EarthBound Halloween Hack in 2008, joined Homestuck's music team in 2010, and was self-taught in both code and music. He did not need an engine that could do everything. He needed one that let a single programmer iterate on weird battle ideas daily.

The Kickstarter math reinforces this. Fox launched the campaign in June 2013 with a $5,000 goal for a summer 2014 release. The goal was met on launch day, and the campaign closed on July 24 with $51,124 from 2,398 backers (Toby Fox). A $51k budget does not buy a custom engine team. It buys time for one person. GameMaker's IDE — with built-in editors for sprites, rooms, paths, and shaders in GLSL/HLSL (GameMaker) — meant Fox plus lead artist Temmie Chang could cover almost the entire game, which is consistently described as developed almost entirely by Fox himself (Undertale).

Official positioning still says the same thing today: "Make games. No experience required" and "The Friendly Indie Game Engine" (GameMaker). That slogan is easy to mock until you realize Undertale's core promise on its own site is equally humble: an RPG for PC, Mac, Linux, PS4, Vita, Switch and Xbox One where "you don't have to kill anyone," each enemy can be "defeated nonviolently," and average playtime is about six hours (About Undertale). Six hours, 2D, dialogue-driven, 200 MB on disk with 2 GB RAM minimum (Undertale on Steam). GameMaker did not limit this vision. It fit it.

What GML specifically bought Undertale

1. Bullets as objects, dialogue as data

Undertale's combat is turn-based with a twist: on the enemy turn you control a small heart representing your soul and dodge bullet-hell patterns in a box (Undertale). Steam describes it the same way from the player's side: time your attacks for extra damage, then dodge enemy attacks "in a style reminiscent of top-down shooters" (Undertale on Steam).

This maps almost 1:1 to GameMaker's mental model:

  • Room = encounter. Each fight is a contained room with its own creation code.
  • Object = bullet, button, soul. Every projectile is an object with Create, Step, and Collision events. You do not need an entity-component system to make a bone wall slide left.
  • Array / ds_list = dialogue and patterns. Fox starting from an array data structure is telling. Undertale reuses the same encounter framework with different data: enemy feelings, ACT options, spare conditions, and bullet spawner timelines. Newcomers often ask for an "Undertale battle engine tutorial" in GameMaker — and that search demand exists precisely because the pattern is so clonable in GML.

My read, labeled as analysis rather than a quote from Fox: Undertale is less a tech demo than a data-driven content pump. Once the heart-in-a-box loop felt right, the rest was writing, timing, and jokes. GML's loose typing made that content pump cheap to extend. You can add a new ACT verb without refactoring a type hierarchy.

2. A tiny footprint that helped word-of-mouth

Steam lists 200 MB storage and 2 GB RAM minimum, with graphics requirements as low as 128 MB (Undertale on Steam). The official site lists seven platform families on one page (About Undertale), but the original 2015 launch was just OS X and Windows on September 15, 2015, followed by Linux in July 2016, PS4 and Vita in August 2017, Switch in September 2018, and Xbox One in March 2021 (Undertale).

That staggered port history is a GameMaker story. The engine renders with Direct3D on Windows/Xbox, OpenGL on macOS/Linux, OpenGL ES on mobile, and proprietary APIs on consoles (GameMaker). Cross-platform export exists, but console export historically needed paid tiers and later an Enterprise licence for PS5/Xbox Series. For a solo dev, shipping tiny PC-first and porting later via a publisher (8-4 is credited on consoles) was cheaper than delaying the PC moment. Virality in 2015 did not require day-one Switch. It required that any laptop could run it and stream it.

Sales trajectory supports the "small file, big spread" idea without proving causation: over 500,000 copies in three months on Steam, doubling to one million two months later, and at least five million lifetime (Toby Fox) (Undertale). My inference: low spec + short runtime (about six hours) lowered the cost of recommending the game. You could finish it in a weekend and spoil nothing.

3. No 3D temptation

GameMaker is "primarily intended for making games with 2D graphics," with only limited vertex-buffer/matrix 3D for advanced users (GameMaker). That limitation is a feature for a morality RPG. There was no lighting pipeline to fiddle with, no asset-store realism to chase. Art direction stayed readable: top-down overworld, black battle box, white bullet contrast. Mixed reaction to the art style is even noted in reception (Undertale), but readability never broke.

What it cost

GameMaker did not give Fox a free pass.

First, console latency. Four years from PC to Xbox One is slow by modern simultaneous-ship standards. If Undertale had started in Unity in 2013, day-one console might have been easier — but at the cost of a heavier editor, a larger install, and a battle system that would have needed custom 2D tooling Unity only matured later. Trade, not win.

Second, solo-stack ceiling. Fox describes himself as partially a "control freak" who wanted to do everything without relying on others (Toby Fox). That works for a six-hour game. It breaks for a larger one. The parallel-story follow-up Deltarune is listed as using GameMaker Studio 2 (Deltarune), but unlike Undertale's Chapter 1 which was programmed solely by Fox, the team was expanded from Chapter 2 onward to speed production and because of Fox's wrist issues. Staying in the same engine family preserved knowledge, but scaling still required people. Engine familiarity does not cure RSI or scope growth.

Third, stigma and hiring. "Beginner engine" helps you start and hurts you when you need specialists. GML likened to JavaScript means fast hiring from hobbyists, but fewer senior engine programmers than C# or C++. For Deltarune's episodic run — Chapter 1 in October 2018, Chapter 2 in September 2021, Chapters 3+4 in June 2025, Chapter 5 in June 2026 (Deltarune) — continuity mattered more than prestige. Switching mid-saga would have been riskier than tolerating GML quirks.

What indie devs can steal (practical)

  1. Prototype the uncomfortable verb first. Fox built the battle system before the overworld. If your game has one weird interaction — mercy, grazing, dating a skeleton — build that in GML objects in week one. If the heart-in-a-box is not fun, no overworld saves you.

  2. Treat dialogue as data, not code branches. Store ACT checks, spare thresholds, and bullet timelines in arrays/structs/JSON, not nested ifs. Fox's array-structure origin suggests why Undertale scales content without scaling code.

  3. Scope to your exporter. If you are solo with $50k, ship PC-first where GameMaker export is frictionless, then port. Do not promise seven platforms on Kickstarter. Undertale promised summer 2014, shipped September 2015, and still won — because the PC build was undeniable.

  4. Keep the install under 500 MB if your hook is story. Every extra gigabyte taxes streamers, laptop players, and impulse buyers. Undertale's 200 MB is part of its distribution strategy, intentional or not.

  5. Plan the sequel's engine on day one. If you succeed, you will want to reuse tools. Deltarune staying on GameMaker Studio 2 saved relearning. Ask now: could a second person read my GML in six months? If not, comment your state machines.

My divergent takes — to argue with, not to quote

These are my interpretations, not Fox quotes. Take them as prompts.

Take 1: GameMaker is a morality engine in disguise. Unity asks "what can you simulate?" GameMaker asks "what happens when two 2D things touch?" That collision-first worldview fits a game about touching vs. sparing. KILL vs. ACT vs. SPARE are just different collision responses. Would a physics-rich 3D engine have nudged Fox toward combat spectacle instead of ethical text? Constraints shape themes more than we admit.

Take 2: The "ugly art" debate misses the point. Critics split on visuals while praising systems, music, story, and dialogue (Undertale). I think the roughness is load-bearing. A heart, a box, and white pellets read instantly at 30 fps on integrated graphics. If Undertale had shipped with smooth HD skeletons, the bullet readability tax would have risen. Is there an uncanny valley for bullet-hell clarity?

Take 3: Undertale taught its own cloning, and that is marketing. The flood of "Undertale battle engine GameMaker tutorial" searches is not piracy. It is a tutorial funnel that keeps the original canonical. Every fan remake in GML advertises the design grammar only the original resolves emotionally. Did choosing a learnable engine accidentally create a decade of free game-design schools? Deltarune's free Chapters 1-2 as demos extend the same logic: teach the system, charge for the later payoff.

Take 4: What if Fox had picked RPG Maker instead? He knew RPG Maker 2000 from childhood. RPG Maker would have made overworld and dialogue faster, but bullet-hell dodging would have fought the engine. GameMaker was the middle path between RPG Maker's opinions and Unity's blank slate. How many indie failures are just picking an engine one notch too opinionated or too blank for their one weird verb?

Open questions for you

  • If you started an Undertale-like today, would you still pick GameMaker, or Godot 4 with GDScript for open-source portability? What changes about console export and tutorial abundance?
  • Could Deltarune's multi-party bullet-hell with TP/grazing have been built in the original Undertale codebase, or did it require Studio 2's improvements? Where is your "we need Studio 2" line?
  • How do you version dialogue + bullet data when writers are not programmers? GML structs? External JSON? Google Sheets?
  • What is your game's equivalent of "average playtime: 6 hours"? Can you state it on your about page as plainly as Undertale does?

Bottom line

Undertale bet on GameMaker Studio because a solo dev with $51k, a battle-system-first plan, and a 2D morality RPG did not need power. He needed speed, 2D clarity, and a language where a bullet is three events and a joke is one array entry. It worked to at least five million copies and a parallel saga still on GameMaker Studio 2. The cost — delayed consoles and a solo stack that had to grow a team — is visible in the port dates and Deltarune's expanded crew.

If your game can be described in one sentence without mentioning graphics, GameMaker-class tools deserve a serious look. If it cannot, that sentence is your real blocker, not the engine.

Top comments (0)