A tactics game wrapped around a visual novel. Twenty-one painted characters who plot, plead, fall in love, and betray each other across a thirty-battle campaign with seven endings — every one of which you can still lose.
Play Ravage →
Amar and Selene — the night the war stopped being someone else's.
Every choice in battle is a posture. A ready stance counters a charge. A brace soaks the inevitable hit. A sword cuts a shieldbearer down — but a spear behind that shield gets you first. Then the swords sheathe and a full visual novel unfolds: twenty-one painted characters, branching dialog, romance, humor, and the kind of plot twist you'll text your friend about.
Ravage isn't combat with cutscenes wedged in. It's a hand-painted visual novel that happens to have one of the meanest tactics engines we could build — twenty-one named characters who plot, plead, fall in love, and betray each other across hundreds of expressions. The campaign turns on whether you trust the wrong person at the wrong moment.
Halfway through the campaign, three days out on open water, Amar finally learns whose son he is — and chooses what that man does about it. Five of the seven paths fight on to the end of the world, each with its own climaxes and its own finale. Two walk away from the war entirely, and the game lets them.
No gacha, no menus inside menus. Each system is small enough to teach in a sentence and deep enough to argue about for an hour.
Sword beats spear, spear beats shield, shield beats sword. Bows ignore the dance — and pay for it up close. And one late ally's lens ignores everything, answering armor with light.
Ready a counter-zone; brace defensively; or stay neutral and swing first. Your stance changes every adjacent fight.
Move, strike, or take a stance — two to four AP a turn, and a promotion raises the tempo for good. Turns are short. Decisions aren't.
Forest, rubble, and obstacles change defence and line-of-sight. The map is half your strategy.
At the campaign's hinge, Amar chooses one of seven answers to his own name. Five fight through to divergent finales; two walk away from the war — and the game honors the walking.
Every commit is on GitHub. Every system is small TypeScript. Procedural fallbacks for every asset.
Each battle has its own map, its own mood, and its own music.
Palace Coup
Mountain Pass
The Final Stand
Orinhal
Cliffs of Grude
The MonasteryWhat's live today is the whole game: thirty battles, seven paths, seven endings, an eight-strong endgame company, promotions into every Tier 2 class, and a soundtrack where every track earns its place. From here it's polish, not promises.
Every battle, every path, every ending. Suspend a fight mid-turn and resume it later. A guided first battle. Hand-painted portraits with living expressions for the principal cast.
Difficulty modes at New Game, balance tuning from real runs, and bespoke sprites for the newest classes — the lenscaster and the cavalry deserve their own silhouettes.
An itch.io release, then Steam. Animated sprite strips for every class, and the HD-2D presentation experiments if the appetite holds.
No paywall, no ads, no account required — thirty battles and seven endings, start to finish. If it was worth a few hours of your evening, you can put something toward the next one.
☕ Buy me a coffee