← All devlog posts

The Lien

The first thing that worked

Three days in, the card game has a combat loop that draws, queues, resolves and ends. Two decisions from day one shaped all of it, cards that resolve together and music as the magic system.

The game was called Blues Wanderer then, and on April 11 it stopped being a JavaScript prototype. The first version was a vibe-coded Vite scaffold. I audited it against the architecture document, kept the concepts that mapped cleanly onto Godot (the module boundaries and the card schema), and deleted the rest. What replaced it is a Godot 4 project in C#, with three autoloads: GameState, CardDatabase and RunData.

A few blunt rules went in on the first day. Any GDScript file that appears gets deleted, because the project is C# only. Logic does not live in UI node scripts. Nothing reaches across a scene boundary by node path; systems talk through signals.

Two decisions before any cards existed

The first was how combat resolves. The original turn machine resolved each card the moment it was played, and while designing the battle state it became clear that this is hostile to combos. A card resolving alone only sees what the previous card left behind, never the card next to it. I wrote down four options, among them a timer on the player's turn and an active time battle with filling action bars. The timer changed nothing underneath, and the action bars bought interrupts at a large architectural cost. I picked the option built for combos. Cards queue during your turn and resolve together in a new Resolution phase, so every effect handler sees the whole play at once. The accepted cost is that the player commits a queue instead of watching each card fire.

The second was the magic system. Skill cards are music, and each genre is a school with its own look and its own mechanical behavior. There are nine of them, with Blues as the foundation that everything else is measured against. Country does exactly what the card says, with no luck roll. Rock hits hard and does nothing else. Folk leaves effects that last several rounds. Funk bends enemy behavior and is not supposed to deal much direct damage. Designing this before writing a single card was a cost decision. The queue already had to be inspectable, and building school identity into the data layer then was cheaper than retrofitting it after cards were authored.

April 12, nothing on screen

The first working loop had no visuals at all. Three Blues cards existed as Godot resources: Strike for 6 damage, Defend for 5 block, and Grit, which draws 2 and costs nothing. Two copies of each made a six-card deck. The battle scene loaded them from disk, shuffled, started the turn machine and drew five cards, with zero errors and zero warnings.

Later that day the cards showed up on screen, a hand of five at the bottom of a 1920x1080 viewport, tinted Blues indigo. The same session set the release target. Steam on PC came first and mobile was deferred until after launch, on the reasoning that a mechanic-heavy card game has a desktop audience.

Then came card selection, an energy counter, health panels and a four-line battle log, with three bugs fixed along the way (one left the turn machine stuck in Resolution forever). The last session of the day closed the round. Player turn, Resolution, an enemy turn where the attack comes out of your block before your health, round end, a fresh hand.

April 13

Today added status effects (a Strength buff, the Weak debuff, and Linger, which deals damage each round for three rounds), an enemy that cycles through four declared intents (Attack 6, Attack 8, Attack 4, Attack 10), and a battle end. When either side reaches zero the hand locks and a small panel reads "Victory!" or "Defeated." over a Restart button.

The journal for the day calls the game playable end to end within a single battle. It is one fight against a test enemy with no art, and it is the first thing in this project that starts, goes somewhere, and stops.

A later build of the same battle screen. A masked Vagrant in a wide hat and long coat stands on a riverside dock at dusk under an intent that reads Attack 9. Five cards sit along the bottom, among them Tongue Slap, Arpeggio, Defend and Final Verse, beside an End Turn button.

That screenshot comes from months later, once the game had art. The structure underneath it, a queued hand that resolves at once and an enemy that tells you what it plans to do, went in this week.

← All devlog posts