DEV Community

dev game
dev game

Posted on

Why Dead Cells Bet on Haxe and Heaps.io: The French Niche Stack Behind a 10-Million-Copy Roguevania

Dead Cells sold more than 10 million copies by June 2023 on a stack almost no hiring manager has heard of: Haxe plus Heaps.io, a French open-source language and high-performance game framework, built by the same Bordeaux circle that made the game. That is the short answer to why an 8-person worker co-op bet a last-chance project on a niche toolchain instead of Unity or Unreal — they already owned the toolchain, culturally and literally.

This is for indie developers and technical readers asking a concrete question: what did Motion Twin actually gain and lose by shipping a fast, precise roguevania on Haxe/Heaps, and what transfers to a small team in 2026? Scope is the PC/console core release — Windows, Linux, macOS, Switch, PS4, Xbox One on August 7, 2018, plus iOS, Android and later PS5 — and the Haxe/Heaps/HashLink lineage as documented by its maintainers as of October 13, 2026. It is not a Heaps tutorial and not a Dead Cells walkthrough.

What Dead Cells is, in one paragraph

Dead Cells is a 2018 roguelike-Metroidvania — the community shorthand is “roguevania” — developed by French independent developer Motion Twin. You play the Prisoner, an immortal head hopping between corpses, fighting out of a diseased island to slay the King, losing weapons and upgrades on death except for a few permanents, while a currency called Cells buys permanent upgrades if you survive to spend them. The official site describes it the same way: a rogue-lite, Castlevania-inspired action-platformer with sprawling, ever-changing castle, 2D souls-lite combat and no checkpoints — kill, die, learn, repeat. Steam repeats that loop and adds the system footprint that matters for this story: 2 GB RAM minimum, 500 MB storage, DirectX 9.1+ or OpenGL 3.2+. Levels are procedurally generated by merging predesigned sections in random configuration, with mutations, Power Scrolls in Brutality/Tactics/Survival, and Runes that gate traversal.

Sales and reception explain why the stack choice matters. By June 2023 the game had sold over 10 million copies. Motion Twin itself now says Dead Cells brought “joy and tears to more than 11 million players on PC, consoles and mobiles.” Early on the team told GamesIndustry.biz they needed 20,000 copies in three months to survive and did that in the first day; a year after Early Access they were past 1 million, then 2 million by May 2019, 5 million by March 2021, 10 million in 2023. It won Best Action Game at The Game Awards 2018. For context, Motion Twin was founded in 2001 in Bordeaux, spent a decade on browser games, failed at mobile, and called Dead Cells a passion project — “something hardcore, ultra-niche, with pixel art and ridiculous difficulty” — and a last chance before possible disbanding.

What Haxe and Heaps.io actually are

Haxe is a high-level, open-source programming language and compiler that compiles one codebase to many targets from an ECMAScript-oriented syntax, with strong typing, compile-time error detection and dead-code elimination. The manual lists the current targets plainly: JavaScript, Neko, HashLink, PHP, Python, Lua, C++, Flash, Java, JVM and C#. The Haxe Foundation presents it for games specifically because it is fast, has game libraries, and targets iOS, Android, Web and Desktop from one codebase.

Heaps.io is the high-performance piece inside that world. Its homepage calls it a mature cross-platform graphics engine designed for high-performance games that leverages modern GPUs on desktop and mobile, with 2D and 3D acceleration, a cross-platform GPU shader system, fast compile-and-run cycle, controller support and no revenue share. Its GitHub title is even blunter: “Heaps : Haxe Game Framework,” supporting HTML5/WebGL, mobile iOS/Android, desktop OpenGL or DirectX, and consoles including Switch, PS4 and Xbox One for registered developers. You start with Haxe 3.4+ and haxelib install heaps. It is free and open source.

The lineage is unusually tight. Heaps is built by Nicolas Cannasse, original creator of the Haxe compiler and designer of the Haxe language. Cannasse was a Motion Twin co-founder-era developer; Motion Twin is listed by the Haxe Foundation among companies using Haxe, and the Foundation’s games showcase lists Dead Cells as built by Motion Twin alongside Northgard, Papers, Please, Evoland and others, with Heaps.io listed on the same page as a popular library. Haxe itself is described as the successor to MTASC, the open-source ActionScript 2 compiler also built by Cannasse at Motion Twin. In other words: the language, the engine and the studio grew up in the same room.

The runtime bridge is HashLink. HashLink is the Haxe virtual machine with dual compilation: use HL/JIT for daily development for fast compilation, use HL/C — bytecode converted to C and compiled with gcc -O3 — for final release for best performance, sharing the same runtime and semantics. That single sentence explains a lot of Dead Cells’ feel.

Why Motion Twin did not pick Unity

Three conditions pushed them away from the default.

First, Flash trauma. Motion Twin made more than 150 web games over 10+ years, then watched browser and mobile economics collapse. When you have survived MTASC, NekoVM, the death of Flash Player and a failed mobile pivot, “free engine with asset store” sounds less like safety and more like another landlord. Owning compiler plus engine plus tools felt like survival, not vanity.

Second, team shape. Motion Twin is a worker cooperative with equal pay and equal say, deliberately kept around eight people — “if we get to ten that’s pushing it.” A cooperative that decides everything as a team cannot absorb a 30-person content pipeline or a black-box upgrade that breaks combat feel a month before launch. Haxe/Heaps rewards a team where programmers also build tools, and punishes a team that wants to hire five Unity generalists next week. The constraint fit.

Third, genre fit. Dead Cells started as a follow-up to the cooperative tower-defense browser game Die2Nite, with traps plus positioning. The team prototyped, playtested with the community, found solo play was not fun, stripped multiplayer and free-to-play cruft from late 2014 to late 2015, then kept only the action part. PC Gamer’s history has producer Steve Filby saying the Early Access build in May 2017 was only 30–40% finished but movement and fighting already had to feel tight. A 60fps dodge-roll with i-frames, panic roll, slam, and pattern-based bosses is an input-latency and iteration problem before it is a content problem. Fast compile-and-run in seconds, GPU-accelerated 2D, and HL/JIT during the day plus HL/C for ship fit that problem better than a heavyweight 3D editor for this specific game.

What the niche stack bought them

1. Iteration speed as a design tool. Heaps advertises never waiting more than a few seconds to build. Combined with HL/JIT for daily work, that means balancing Brutality/Tactics/Survival, reforging, the Forge, mutations and elemental damage could be reworked across many Early Access updates — more than 30 free updates plus four paid expansions — without the edit-compile-wait tax that kills game feel. Filby credits community essays and balance complaints for reshaping core progression; you can only listen that fast if rebuilding is cheap.

2. One codebase, many sharp edges. Haxe compiles to C++, HashLink bytecode, JavaScript and others with conditional compilation for platform-specific code. Heaps then targets OpenGL/DirectX, mobile and consoles. Dead Cells shipped on nine platform families with a 500 MB footprint and 2 GB RAM floor. A small team does not do that with per-platform rewrites; they do it with a thin abstraction they control and a shader language that stays globally compatible.

3. Performance headroom for 2D density. Dead Cells is not “retro” in cost: layered parallax, particles, lighting on traps and spells, and seamless biome streaming while procedurally stitching hand-made chunks. Heaps’ pitch — modern GPUs, custom rendering pipelines, minimal overhead, native access — plus compiler inlining, tail-recursion elimination, constant folding and dead-code elimination, plus HL/C -O3 for release, is exactly how you keep a pixel-art game at a locked, responsive framerate on Switch and old PCs without asking players for 8 GB RAM.

4. Toolmaker culture. The same designer who led Dead Cells, Sébastien Bénard, later built LDtk, a modern level editor for platformers and top-downs with super-simple JSON export, auto-rendering rules, world layouts including “Grid-vania,” and direct Unity/Haxe/Playdate import paths. LDtk’s tagline — “By game devs, for game devs” — is also Motion Twin’s history: MTASC, Haxe, Neko, Heaps, then LDtk. When your lead designer builds editors for fun, picking an engine you can fork is rational.

What it cost them

Niche is not free. Hiring is harder: far fewer Haxe/Heaps programmers than Unity/C# or Unreal/C++ developers, almost no plug-and-play asset store for roguevania systems, and documentation that assumes you read source. Console support requires registered-developer access and direct contact, not a checkbox. Bus factor is real: when language, engine and VM orbit one creator, roadmap risk concentrates. And discoverability suffers — press and publishers default to “Unity or Unreal?” and misread custom tech as risk.

Motion Twin paid those costs with advantages most teams do not have: a decade of Haxe in-house, a co-founder who wrote the compiler, and a co-op structure that prefers eight seniors over thirty juniors. Copying the stack without copying the context is the classic mistake.

What to steal even if you never touch Haxe

  • Prototype the dodge before the dungeon. Dead Cells locked movement and hit response at 30–40% complete, then let Early Access reshape balance, Forge and mutations. If your core loop is not fun with gray boxes at 60fps, no biome count saves it.
  • Merge hand-made chunks, don’t pure-randomize. Dead Cells’ procedural generation merges predesigned sections in random configuration. That preserves authored combat arenas and readable traversal while keeping runs fresh — a middle path between roguelike noise and Metroidvania rigidity.
  • Design economy around loss. Cells are only spendable at section ends and lost on death; blueprints must be carried out. Permadeath plus a leaky bank creates tension without grinding, and gives permanent upgrades meaning.
  • Ship a tiny, fast client. 500 MB and 2 GB RAM in 2018 was a feature: more laptops, more Switch handheld sessions, fewer support tickets. Performance is accessibility.

My own take — labeled as analysis, not fact

Here is where I depart from the sources and offer a personal read. Take it as provocation, not proof.

I think Dead Cells is best understood as a compiler company accidentally making a game. Most indies ask “which engine should we use?” Motion Twin asked “which iteration loop lets eight equals argue and still ship?” Haxe/Heaps answered: a loop measured in seconds, a language that catches nulls and dead code at compile time, and a VM that lets you debug fast and ship fast without changing semantics. That is a governance technology as much as a graphics technology. A co-op needs fast, legible builds the way a hierarchical studio needs Jira.

That leads to a stranger idea: owning the stack made the game more conservative in a good way. Because Heaps gave them total control over 2D rendering but almost nothing for free — no quest system, no behavior trees, no marketplace boss AI — they were forced to make depth from combinations of simple verbs: slash, dodge-through, slam, trap, roll. Dead Cells’ celebrated build variety is, in this reading, scarcity turned into design. Unity might have tempted them toward more systems; Heaps tempted them toward tighter verbs. Constraints did not limit creativity; they edited it.

A second hunch: the Flash ghost still haunts the design. Motion Twin learned on browser games where load time, small downloads and instant restart mattered. Dead Cells restarts in seconds, runs anywhere, and treats death as a refresh, not a punishment screen. Permadeath here feels like the old web-game loop — “one more run” — transplanted to PC/console with souls-like combat. The niche stack preserved a dying platform’s virtues after the platform died.

And a worry: would Heaps exist at this quality without Dead Cells as a forcing function? Probably not. Engines need a flagship that pays for edge cases: console TRCs, controller quirks, GPU driver bugs, save-corruption on crash. Dead Cells was Heaps’ 10-million-copy test suite. That is glorious and fragile. If your engine’s best QA is one hit game, your next game inherits both the fixes and the assumptions. Windblown, Motion Twin’s fast-paced isometric action follow-up announced at The Game Awards 2023, will be the test of whether the stack generalizes or whether Dead Cells overfitted Heaps to roguevania.

Three open questions I would love readers to argue about:

  1. In 2026, with Godot mature and Unity pricing and trust in flux, does owning a tiny stack still pay, or does Godot now give you 80% of Heaps’ iteration speed with 10x the hiring pool?
  2. If procedural generation is really “authored chunks + random merge,” should we stop calling it procedural and start crediting level designers the way we credit seed programmers?
  3. Is permadeath a mechanic or a business model? Dead Cells turns loss into retention — fast restarts, leaky bank, visible permanent growth. When does that cross from respect for the player’s time into compulsion?

If you build on Heaps today, go in with eyes open: read the GitHub platform matrix, test HL/JIT versus HL/C early, budget for console-developer access, and assume you will read engine source. The reward is a client your players can run on a potato, a build loop your designers will actually use, and no revenue share. For a certain kind of team — small, senior, tool-literate, allergic to landlords — that is still a radical deal.

Verification note: engine facts above were checked against Heaps.io, the Heaps GitHub, Haxe manuals, the Haxe Foundation games showcase, Motion Twin’s site, Dead Cells’ official site and Steam page, and contemporary reporting, all retrieved October 13, 2026. Interpretive claims in “My own take” and the open questions are the author’s analysis and are labeled as such.

Top comments (0)