My projects

Dragon's Gems Swipe - 2026

Developer · Ludiven Studio
Unity 6
C#
TypeScript
Parity tests
Procedural audio
Android
iOS

A gem puzzle you slide, born as a mini-game on this website and then brought to iPhone, iPad and Android. A rules engine written once in TypeScript, copied line by line into C# and kept identical by parity tests; sounds synthesised without a single audio file; screenshots and videos shot by a bot.

Dragon's Gems Swipe — Bijou, the baby dragon, on his pile of gold, in front of a board of gems

This page tells how Dragon's Gems Swipe is made. For the game itself — what it offers, what it costs, where to get it — the app page is the place, and the web version plays right away (in French).

A mini-game first

The game was born on this website, among its mini-games. One swipe slides the whole board to the edge, as in 2048; three gems of the same color that touch explode, and the board slides again. Every rule was kept or dropped on a measurement: a bot plays thousands of games to tell whether a variant makes more chains, whether a level can be won, in how many moves. The bot also picks the map's 250 levels and their move limits: enough for an average player to win four in five, a little less one level in ten.

One engine, two platforms

The rules live in a pure engine written in TypeScript for the website. The app does not rewrite them: it copies them line by line into C#, in an assembly that knows nothing of Unity, with the same pseudo-random generator. A script replays the TypeScript engine on reference games and writes a parity file; the app's tests replay the same games and compare every state, move by move.

The rule between the two: when a parity test fails, the port is wrong, never the file. That is what lets the daily challenge be the same board on the website and in the app, with a single world leaderboard for both.

Tests that play

The website's bot exists in C# too. In the app's tests it plays every level to the end: an impossible level, or a rule broken by a change, shows up before it reaches a phone.

Sounds without files

None of the game's sounds is a recording. The website synthesises its effects live (WebAudio); the app ports that code to C# and builds each sound the first time it plays, with a Freeverb-style room and a compressor modelled on WebAudio's. The web game and the app sound the same, without one audio file in the package.

A generated interface

The app is built with Unity 6 (URP), on the studio's app template. Its screens are never edited by hand: editor scripts generate them, with Prefab Fusion, the studio's tool to build and change prefabs from a description. A screen is rebuilt by running its script again, in the game's five languages.

Screenshots shot by a bot

The store screenshots and the promo videos come out of play-mode tests: the bot plays at 30 frames per second of game time, every frame is saved, and the sounds played are logged and remixed onto the video. Redoing every image after a screen changes, for iPhone, iPad and Android and in each language, takes one command.

The app in pictures

A level: slide the gems, set off the explosionsBijou's story, the first time you playThe map of the five landsThe little dragon's breathThe daily challenge