DEV Community

dev game
dev game

Posted on

Why Slay the Spire Bet on LibGDX and Java: The Boring Framework Behind the Deckbuilder Boom

Two developers, no publisher, no Unity, no Unreal. In January 2019 Seattle studio Mega Crit released Slay the Spire — a roguelike deck-builder where you climb a procedurally generated spire as one of four characters, fighting turn-based card battles against telegraphed enemies and bosses — and helped create an entire genre wave that followed it. Slay the Spire - Wikipedia

The twist most engine debates miss: it was built on libGDX, a free and open-source Java framework with some C/C++ performance code that lets you ship desktop and mobile from the same codebase. libGDX - Wikipedia That choice looks unfashionable in 2026, but it explains why the game feels like a spreadsheet that learned to be fun.

The short answer

Mega Crit leads Anthony Giovannetti and Casey Yano wanted to fuse roguelikes with deck-builders like Dominion, with partial inspiration from the Netrunner collectible card game. Slay the Spire - Wikipedia For a two-person team, libGDX offered:

  • Java runtime covering Windows, macOS and Linux from day one without platform-specific code
  • OpenGL (ES)-based 2D rendering that is more than enough for cards, numbers and particles
  • Apache 2.0 licensing with no royalties or editor lock-in
  • Code-centric freedom instead of an editor-first pipeline

libGDX itself describes this pitch directly: a cross-platform Java framework based on OpenGL (ES) for Windows, Linux, macOS, Android, browser and iOS, with no imposed design or coding style and freedom to build the way you prefer. libGDX The GitHub project repeats the same contract: cross-platform Java development with robust rapid prototyping under Apache 2.0. GitHub - libgdx/libgdx

The Steam result is deliberately modest in scope and huge in systems: four characters with unique card pools, 350+ cards, 200+ items, 50+ combat encounters, 50+ mysterious events, plus Daily Climbs and custom modifiers. Slay the Spire on Steam Minimum specs tell the same story — 2.0 GHz, 2 GB RAM, 1 GB video memory with OpenGL 3.0+ support. Slay the Spire on Steam You do not need a modern engine to run that. You need deterministic logic, fast iteration and honest math.

Mega Crit remains a small remote studio focused on design-driven games, now working on the sequel universe. Mega Crit Games The original is widely described as very well received, nominated for multiple 2019–2020 awards and considered the game that popularized roguelike deck-builders, with Slay the Spire II entering early access in March 2026. Slay the Spire - Wikipedia

What libGDX actually gave them

1. One codebase for the three desktop stores that mattered

The Wikipedia development history is explicit: libGDX was originally chosen because its Java runtime allowed it to run on Windows, macOS and Linux. Slay the Spire - Wikipedia

That matches libGDX's feature promise: a single API targeting Windows, Linux, macOS, Android, iOS and Web, with rendering handled through OpenGL ES without writing platform-specific code. Features For Early Access in late 2017 — Windows, macOS, Linux, then full release January 23, 2019, followed by PS4, Switch, Xbox One, iOS and Android through 2019–2021 — that coverage was the whole commercial plan. Slay the Spire - Wikipedia

No console SDK wrangling on day one. No shader-graph rabbit hole. Ship the loop, watch metrics, fix cards.

2. A boring renderer that forced them to compete on numbers

libGDX is batteries-included but intentionally unopinionated: sprite batching, texture atlases, bitmap fonts, 2D particle systems, a 2D scene-graph and UI library, plus Box2D and Bullet wrappers if you want them. Features It does not force a design or coding style on you. libGDX

For a card battler, that is ideal. Combat is turn-based: each turn you draw a fresh hand and get three energy, play attack/skill/power cards, everything unplayed goes to discard, and enemies telegraph their next move — attack value, block, buff or debuff — so you can plan perfect defense. Slay the Spire - Wikipedia Dilution mechanics like Wounds and Curses punish bloated decks, and loot offers gold plus a choice of one of three random cards, relics with permanent buffs, and single-use potions. Slay the Spire - Wikipedia

There is no physics showcase here. The spectacle is combinatorial.

3. Java tooling for rapid balance iteration

Since libGDX uses Java, developers get mature IDEs, debuggers, profilers, Git support and a large library ecosystem. Features The homepage also stresses heavy emphasis on avoiding garbage collection through careful API design and custom collections. libGDX The features page lists those optimised collections with primitive support, JSON/XML serialization and asset management as first-class concerns. Features

That matters more than it sounds when you run hundreds of card-effect simulations per day and log which cards players actually pick.

What it cost them

The same Wikipedia history contains the hangover quote: Yano later expressed frustration with libGDX frequently being broken by operating system updates and its lack of console support. Slay the Spire - Wikipedia

In other words: great for Steam Early Access, painful for the long tail. Console and mobile ports shipped later via publisher Humble Bundle for non-PC platforms — initial PC by Mega Crit, other platforms by Humble Bundle. Slay the Spire - Wikipedia The base framework was started in 2009–2010 as Android-focused AFX, open-sourced in 2010, switched from LGPL to Apache 2.0 in July 2010 to allow closed-source commercial games, and hit 1.0 in April 2014. libGDX - Wikipedia Console was never its home turf.

This is the honest trade: you save months up front, you pay it back in porting and OS-maintenance work.

My analysis: why the unfashionable stack was the genre advantage

Most retrospectives say Slay the Spire succeeded despite Java and libGDX. I think it succeeded because the stack was boring. Here is where I diverge from the usual Unity-vs-custom-engine framing.

1. Constraint created the genre, not just the game.

If Mega Crit had picked Unity in 2015–2017, the temptation would have been visual: particles, lighting, asset-store heroes, 3D spire flythroughs. libGDX cannot bribe you that way. Its 2D APIs are sprite batches, atlases and fonts. Features So the team spent its creativity where roguelike deck-builders actually live: card costs, relic interactions, branching map risk, Ascension modifiers, and the optional Act IV key/Heart endgame. That Ascension system — up to 20 cumulative difficulty levels — plus metaprogression unlocks and daily seeded runs are described as core to the loop. Slay the Spire - Wikipedia

My claim: technical humility is a design filter. When you cannot win on fidelity, you are forced to win on fairness and surprise.

2. Enemy intent was a patch for permadeath, not just good UX.

Originally enemies did not show their next action, like most turn-based RPGs, but that did not mesh with permadeath roguelike structure and playtesters were confused about when to use card abilities. Slay the Spire - Wikipedia The now-famous intent icons — you see attack damage, block or spell before you commit — solved it.

Everyone praises this as elegance. I read it as compensation: Java + libGDX gave them cheap iteration, so they could afford to discover through Netrunner-expert playtesters and client telemetry that hidden information plus permadeath feels unfair. They tracked which cards were never picked when offered and which appeared too often in winning decks, and cut or rebalanced accordingly. Slay the Spire - Wikipedia An editor-heavy engine would have made each balance patch heavier. A code-centric framework made the game a living spreadsheet.

If you want to feel that same read-and-commit muscle in a browser, try a few slow games of Master Chess. It is classical chess with full rules including castling, en passant and promotion, against AI or a local friend, and its guide is blunt about the skill: think multiple moves ahead, control the center, protect the king early. Master Chess | Easyhub.games Slay the Spire is chess with card draw — you are not reacting, you are pre-solving the enemy's declared move.

3. Java moddability became the second product.

The sources above do not hype mods, but the stack choice predicts them: a Java libGDX jar with JSON serialization and file-system abstraction is far easier for players to inspect and extend than an IL2CPP Unity build. Features That openness, plus Steam Workshop culture, helped the game survive content droughts. Single-player design also meant the team did not fear overpowered synergies — there is no opponent to feel overwhelmed, unlike competitive card games. Slay the Spire - Wikipedia

My contrarian take: Mega Crit did not just ship a game, they shipped a balance API. The community became an unpaid design team, and Java made that hiring possible.

4. Unity would have made Slay the Spire worse.

This is deliberately provocative, but hear me out. Unity's strength — rapid 3D prototyping, store assets, visual editors — optimizes for vertical-slice impressiveness. Slay the Spire needed the opposite: hundreds of unglamorous iterations on numbers, plus custom GC-aware collections to keep card churn smooth. libGDX explicitly optimizes for that with primitive-friendly collections and GC avoidance. libGDX Unity's Mono/GC history and editor overhead would have added noise, not signal, for a 2D card game in 2017.

The niche stack acted as a scope guard. That is underrated indie strategy.

What indie developers can steal

  • Pick the boring framework that matches your verb. If your verb is choose cards, manage energy, read intent, you need fast 2D UI and deterministic logic, not a lighting engine. libGDX's scene2d UI, input abstractions for mouse/keyboard/touch and sprite batching cover that directly. Features
  • Instrument picks, not just wins. Copy Mega Crit's method: log which cards are skipped when offered and which dominate winning decks, then cut the low-value outliers. Slay the Spire - Wikipedia Balance is measured, not debated.
  • Telegraph to earn permadeath. If failure resets progress, show the enemy's next move. Hidden info + permadeath reads as unfair; declared info turns loss into a puzzle you mis-solved. Slay the Spire - Wikipedia
  • Budget for ports on day one. Java got them to Steam fast, but OS breakage and missing console support hurt later. Slay the Spire - Wikipedia If you follow this path, reserve publisher help or middleware budget for Switch/PlayStation/Xbox and mobile.
  • Leave the jar open. JSON-driven cards, clear file layout and Apache 2.0-friendly modding extend lifespan more cheaply than DLC. libGDX's JSON/XML serialization and asset management make that natural. Features

For a faster, noisier version of turn-based card thinking, Boom Slingers ReBoom is a useful palate cleanser: 1v1 turn-based battles where you select a card with the left mouse button and sling shots with lasers, grenades and bats across a physics arena. Boom Slingers ReBoom | Easyhub.games It is not a deck-builder, but it trains the same snap evaluation — what does this card do right now, against this board state — without a 40-minute climb.

FAQ

Was Slay the Spire really made with libGDX and Java?
Yes. Its infobox lists libGDX as engine, and development history says it was built on the libGDX framework, chosen for Java runtime coverage on Windows, macOS and Linux. Slay the Spire - Wikipedia libGDX itself is a Java framework with some C/C++ performance code. libGDX - Wikipedia

Why not Unity or GameMaker?
For two developers making a 2D systems game in 2015–2017, libGDX gave same-codebase desktop shipping, no royalties, and code-first control. The cost was weaker console support and OS-update fragility. Slay the Spire - Wikipedia

What should I learn if I want to clone the feel?
Start with libGDX's cross-platform setup, scene2d UI, input handling and JSON card definitions. The official site points to setup tooling, wiki and showcase for that path. GitHub - libgdx/libgdx Then study intent display, three-energy economy and relic synergies on Steam's feature list. Slay the Spire on Steam

Bottom line: Slay the Spire did not win by out-rendering anyone. It won by iterating on cards faster than players could solve them — and picking a Java framework boring enough to let balance be the graphics.

Top comments (0)