FTLG
FTLG Studios emblem

FTLG Studios

For the Love of Gaming

One studio, two disciplines. We build worlds worth losing time in — and the tools that buy that time back.

05
Projects in flight
03
Games in development
02
Systems running daily
Division One

Gaming

Three worlds in development. Systems-first design — combat models, moral ledgers, and economies that hold up when you push on them.

01

Aetherverse

Every Aether you kill first asked to be your friend.

Creature-collection RPGGodot 4.6 · C#Playable slice

Two universes collided, and human weapons stopped working — only an Aether can meaningfully hurt another Aether. Aetherverse is a pixel-art creature-collection RPG with FF6-style wait-mode ATB battles fought over hand-painted backdrops, where a defeated Aether normally snaps home through its own seam and the only ones you can ever reach are the ones that resisted that pull to offer you a bond. A playable slice runs today: 23 species across eight advancement lines, 43 abilities, twelve painted regions, and an in-engine editor suite for authoring all of it.

Playable vertical slice, versioned v0.11 alpha in-build — battle, exploration, bonding, gear, storage and save/load all run in engine across a connected farm-to-mountain region chain with one raidable stronghold. The written six-region story spine and the morality system are designed but not implemented.

  • The warp-vulnerability moment — A defeated Aether is dragged back through its home seam faster than you can react — gear and all. The single exception is one that wants to bond and briefly resists its own warp. Only then does the Accept / Spare / Kill prompt appear, which means every kill in the game is a betrayal of a creature that had already extended trust.
  • Four archetypes, one resource — Seam Energy is a single pool per Aether that behaves four different ways. Rage has no regen, feeds on damage taken, and scales its own hits up to +30% as the pool fills. Mana ticks up slowly for heavy single casts. Energy opens the battle at a full pool and lets you stack up to three presses of the same move into one turn. Combo has no pool at all — a fixed chain that resets the moment a strike misses.
  • Rows are a tempo-versus-safety bet — Physical attacks against the back row roll 20% miss / 30% intercept — the nearest living front-liner physically crosses over to eat the hit — / 50% connect, and back-row physical output is cut to 70%. Meanwhile every living front-liner grants the whole party +10% ATB fill rate, to a +30% cap. Turtling is self-punishing, and magic ignores all of it.
  • Skills advance at 40 and 50 — All eight species lines permanently upgrade two of their equipped skills in-slot. The badger's bash gains a guaranteed stun and a haste surge below half HP; the wyrm's Gorge becomes an execute that swallows prey under 25% whole; the hedgehog's chant lays a Dawnthread that catches the first ally who would otherwise unravel and holds it at 1 HP. Every upgrade ships with its own effects sequence, not a recoloured base one.
  • Strongholds you can see coming — A stronghold's fights are a finite set of hand-placed defenders standing on the map, not random steps — walk into one and it fights. Each notices you independently, so there is no shared alarm to trip. Elites carry a custom name and a flat stat bonus, glow on the field, and are the only enemies that can roll the 1-in-256 offer to join you with those enhanced stats intact.
  • Content is data, tools are in-engine — 23 species, 43 abilities and every item live in JSON, edited through an in-engine Data Editor. Hotkeys open a chest placer, a garrison editor, an NPC placer and a collision painter over the live region, and collision/occlusion masks are generated from the painting itself by a segmentation tool. Adding an Aether, a fight or a treasure chest touches no C# at all.
A seam tears open over a city and the street empties (5s, silent).
The prelude montage that plays before you get control (57s, silent).
Key art
Key art
Live wait-mode ATB: the turn-order rail up top, TEMPO +30% earned by a full front row.
Live wait-mode ATB: the turn-order rail up top, TEMPO +30% earned by a full front row.
Badger Champion commits to Raging Blows; damage lands as a floating pixel popup.
Badger Champion commits to Raging Blows; damage lands as a floating pixel popup.
Key art: an Aether steps through a seam, and the trainers below are the only answer.
Key art: an Aether steps through a seam, and the trainers below are the only answer.
The build's own title screen, v0.11 alpha.
The build's own title screen, v0.11 alpha.
Prelude frame: a seam tears open over a city and the street empties.
Prelude frame: a seam tears open over a city and the street empties.
The woodland fort-church — the slice's raidable stronghold.
The woodland fort-church — the slice's raidable stronghold.
All 23 authored Aethers: eight lines, three forms each, XS to L.
All 23 authored Aethers: eight lines, three forms each, XS to L.
The village — first town services, first NPCs who notice you.
The village — first town services, first NPCs who notice you.
Mountain road, painted end to end and walked at 2x pixel scale.
Mountain road, painted end to end and walked at 2x pixel scale.
Cave system where a minor seam has gone unstable.
Cave system where a minor seam has gone unstable.
The farm you wake up on, and the last quiet place in the game.
The farm you wake up on, and the last quiet place in the game.
Save select: every slot previews its five-Aether party.
Save select: every slot previews its five-Aether party.
Battle backdrop: the fort-church grounds at dawn.
Battle backdrop: the fort-church grounds at dawn.
The road out of the village, where wild gates open.
The road out of the village, where wild gates open.
Western spires above the treeline.
Western spires above the treeline.
Inside the fort-church — the stronghold's inner chamber.
Inside the fort-church — the stronghold's inner chamber.
Battle backdrop: forest floor.
Battle backdrop: forest floor.
Battle backdrop: crystal cave.
Battle backdrop: crystal cave.
Battle backdrop: open field.
Battle backdrop: open field.
The well clearing, a waypoint between farm and village.
The well clearing, a waypoint between farm and village.
North field — where the first Aether wanders in.
North field — where the first Aether wanders in.
The farmhouse interior, opening scene of the game.
The farmhouse interior, opening scene of the game.
Game icon: a seam torn open.
Game icon: a seam torn open.
Celestial Wolf — final form of the dawnwolf line.
Celestial Wolf — final form of the dawnwolf line.
Wyvern — the wyrmling grown into an execute predator.
Wyvern — the wyrmling grown into an execute predator.
Badger Champion — Rage archetype, front row by design.
Badger Champion — Rage archetype, front row by design.
Dillo Guardian — the only Aether that can reach a fourth defence stage.
Dillo Guardian — the only Aether that can reach a fourth defence stage.
Vixen Mage — Mana archetype, channels fire and ice in alternation.
Vixen Mage — Mana archetype, channels fire and ice in alternation.
Mouse Lord — Combo archetype, a dance chain that breaks on a miss.
Mouse Lord — Combo archetype, a dance chain that breaks on a miss.
Hedgehog Bishop — healer, cleanser, and the game's only death-prevention.
Hedgehog Bishop — healer, cleanser, and the game's only death-prevention.
Squirrel Warden — marks a target that its shots can never miss.
Squirrel Warden — marks a target that its shots can never miss.
Civica key art
02

Civica

Five people, one hearth, and a continent that will not wait.

RTS · civilization builderGodot 4.6 · C#Playable slice

Civica runs a whole civilization and its wars on one continuous 3D world — no battle screens, no abstracted combat. A procedurally generated 368 x 184 km planet with tectonic continents, flow-accumulated rivers and roughly 5.3 million individually simulated trees hosts a founding band of five true-scale humans who must clear ground, haul water, raise huts and research their way out of the Ancient age. The current build plays that settlement half from first hearth to bronze smelter; the Total Annihilation-scale warfare it is aimed at is still ahead.

Playable vertical slice — the settlement, survival and research loops run end to end; large-scale war is designed but not built

  • A world grown from geology, not from noise alone — A tectonic terrane field breaks the land budget into a supercontinent, a second major mass and an island tail, then rivers are carved by rain-on-every-cell flow accumulation over a priority-flood drainage surface — so wet mountains sprout headwaters, deserts only get crossed, and trunk rivers grow wide enough to be uncrossable strategic barriers.
  • Nothing is built by spending a number — Designating farmland only draws a plan. A worker then walks out, fells the standing trees, tills each 32 m cell, sows one seed per trip and carries water back from the river six plants at a time. A field left dry at sunrise loses its crop, and a granary preserves food three times longer than an open hearth.
  • People who eat, sleep, age and die — Every human takes one food at the sunset meal from her nearest store, walks to a lit fire to sleep, wakes fatigued at half speed if she was still up past 1 AM, gains a year each dawn and dies near thirty unless the medicine ladder pushes that out. Population grows by births and by wanderers drawn to open homes and a full larder.
  • Value runs opposite to fertility — Six minerals are placed by their real settings — stone in exposed bedrock, copper in active continental-margin belts, tin in the granites of old interior massifs — and the richest ore sits in the most infertile ground. Copper and tin are anti-correlated by construction, so no single region can arm itself with bronze alone.
  • A tech tree with three roots — Grow, Build and Know each unlock a verb rather than a stat: Agriculture opens farmland, Pottery the granary, Masonry a 2,400 m watchtower, Construction a palisade that makes anyone inside it safe from the wilds. The four-rung irrigation ladder self-waters a field only where water can genuinely run downhill to it — a waterwheel lifts ten metres, and only from a flowing river.
  • Scale is the point — One world unit is one metre and the human is 1.8 m, so trees, huts and doorways are true to each other. The map starts entirely black: a person sees 300 m, a building 700 m, a watchtower 2,400 m. Chunked MultiMeshes with per-instance LOD hold roughly 200 FPS at ground level with 16,000 units and 5.3M trees on the map.
Night is ten percent of the day: moon over snow peaks while the camp sleeps.
Night is ten percent of the day: moon over snow peaks while the camp sleeps.
A trunk river cuts the forest in half — wide enough that nothing walks across it.
A trunk river cuts the forest in half — wide enough that nothing walks across it.
The whole 368 x 184 km map, curving away under a real horizon.
The whole 368 x 184 km map, curving away under a real horizon.
The founding five, axes up — 1.8 m people on a world measured in metres.
The founding five, axes up — 1.8 m people on a world measured in metres.
Three lineages grow from the first fire: Grow, Build, Know.
Three lineages grow from the first fire: Grow, Build, Know.
Every building names its cost and, if it is locked, the reason.
Every building names its cost and, if it is locked, the reason.
The first tilled field, cut out of the treeline beside fresh water.
The first tilled field, cut out of the treeline beside fresh water.
Pre-dawn in the valley — crops keep growing while the crew rests.
Pre-dawn in the valley — crops keep growing while the crew rests.
Mixed stands run to the mountains: every tree is a real simulated tree.
Mixed stands run to the mountains: every tree is a real simulated tree.
Felling a trunk takes ten stints of work — and a crew on one tree fells it faster.
Felling a trunk takes ten stints of work — and a crew on one tree fells it faster.
What you have walked is remembered in grey; the rest of the planet is black.
What you have walked is remembered in grey; the rest of the planet is black.
Application icon (transparent PNG).
Application icon (transparent PNG).
03

Mists of Destiny

The other players are not players. Nothing on the wire says so.

Multiplayer text MUDNode.js · zero depsPlayable alpha · live
Mists of Destiny — Miradon
Mists of Destiny interface

Mists of Destiny is a ROM 2.4b6 MUD rebuilt from scratch in dependency-free modern JavaScript and played in a browser over a hand-rolled WebSocket protocol. The world is 32 areas and 1,140 rooms of Miradon and the country around it, carrying 739 mobiles, 1,278 objects, 220 quests and 171 skills, all authored as JSON against a published area format. Living in it is a cast of eleven artificial players with persistent memory, goals and opinions about you — they act only by typing the same commands you can type, every one re-validated by the same parser, and nothing the server sends ever marks which name on the list is a person.

Playable alpha, hosted and running — character creation, quests, combat, levelling, cooking, saving and multiplayer sessions all work end to end across the live world; the setting rewrite and the later roadmap systems (mist fronts, clans, housing) are still ahead

  • Artificial players, not NPCs — Eleven authored personas — drives, quirks, likes, dislikes, voice, backstory — who wander, chat, fight, group, level and hold grudges whether or not anyone is logged in. They can only emit MUD commands, and the interpreter re-validates every one, so an artificial player can do exactly what you can do and no more. Their frames on the wire project as ordinary players; the protocol has no field that would give them away.
  • A cognition ladder, priced per moment — A salience scorer decides what a moment is worth. Ordinary behaviour runs on a utility engine scored against each persona's needs — offline, no key, no network. Only when a moment clears a threshold does it escalate to a language model for conversation, and higher still for consequential choices, under call-per-hour and spend-per-hour rails. A character keeps the brain it escalated to for a warm window, so nobody changes mind mid-sentence.
  • Everything in the world carries a program — Rooms, mobiles and objects hold declarative triggers authored in the area JSON — greet, speech (regex-matched), give, bribe, random, fight, death, entry, exit, get, drop, wear, sleep, rest — running prog-only commands like mpforce, mptransfer and mpquest, capped at 8 commands per firing and recursion depth 3. Substantial NPCs also carry ask-about topic trees with unlock chaining. The content gate is 70% of mobiles and 40% of rooms in every area file.
  • A hot bun will hurt your mouth — Food is scored for savour against heat bands, freshness, monotony and a rotating craving. Scalding food is worth more savour than merely hot — and it burns you, dulling your taste for several ticks until the roof of your mouth stops complaining. Cooking rolls against skill and recipe difficulty, and the smell wafts into the next room, where something hungry may come and look.
  • A world that restocks like a world — ROM repops a whole district at once; here every creature has a respawn band read off its flags — vermin return in 4 to 16 game-minutes, authored 'brisk' spawners in about half a game-hour, everything else on the district clock. Bands are drawn per creature through the seeded RNG, so five rats come back as a trickle rather than as an event, and a beginner's hunting cellar stops being a queue for eleven residents.
  • A colour engine with a readability floor — Every colour in the game is a position on one of 15 eight-stop ramps, addressed through 56 semantic keys and a {tag} markup language with gradients, styles and exact hex. It degrades cleanly through 256-colour, 16-colour and plain text, and colours are clamped above a readability floor so nothing renders dark-on-dark. All player-visible text goes through it — which is also why an artificial player reads exactly the bytes a human does.
Lamplight Square, the First Lantern, and the map drawn as you walk it
Lamplight Square, the First Lantern, and the map drawn as you walk it
A quest ticks over, a shopkeeper looks up, and the street keeps talking
A quest ticks over, a shopkeeper looks up, and the street keeps talking
Who is online. Most of them have never been anybody
Who is online. Most of them have never been anybody
Fifteen ramps, fifty-six semantic keys: every colour in the game
Fifteen ramps, fifty-six semantic keys: every colour in the game
One framed sheet: vigour, will, stride, and what you are carrying it all in
One framed sheet: vigour, will, stride, and what you are carrying it all in
The first ten minutes, in the world's own voice
The first ten minutes, in the world's own voice
The front door of the live server: Miradon keeps its lanterns lit
The front door of the live server: Miradon keeps its lanterns lit
The lantern — the game's own icon, on transparency
The lantern — the game's own icon, on transparency
Division Two

Productivity

The tools that run the studio. Both of these are in daily production use across a four-machine fleet — not demos.

04

Lumina

Light on what's next.

Personal hubNext.js · Prisma · ClaudeLive daily
Lumina — News
Lumina interface

A private hub that reads your calendar, mail, texts and files overnight, then tells you what actually matters before you walk into the room. Briefs are synthesized from real correspondence — not templates — and the recommended actions are mined from the same pass.

  • A curator that runs while you sleep — one nightly pass over calendar, mail, news and files produces the briefs, the attendee research, and the actions worth taking.
  • Lumina Listens — an AI notetaker that announces itself to the other side, then distills the call to notes. The transcript is never written to disk.
  • Two messaging channels, one thread list — iMessage and WhatsApp on your own personal number, always labelled, replies never jumping channels.
  • Cost that does not scale with your inbox — content is distilled once per version and cached; the expensive synthesis call only ever reads distillates.
  • It proposes its own upgrades — a self-review reads the codebase and files concrete improvements — each one implementable with a button.
Overview — briefs and actions (personal data blurred)
Overview — briefs and actions (personal data blurred)
Upgrades — the app reviewing itself
Upgrades — the app reviewing itself
Lumina Listens — notes only, never transcripts (names blurred)
Lumina Listens — notes only, never transcripts (names blurred)
05

Nova Fleet

Every machine, every session, one pane of glass.

Fleet controlNext.js · self-updating agent4 machines live
Nova Fleet — Machines
Nova Fleet interface

The control plane for a fleet of coding agents running across every machine in the studio. Live transcripts, model routing, hardware telemetry and spend — with a kill switch that stops the fleet without killing the daemons that would let you start it again.

  • A real session cockpit — live transcript, the question a blocked session is parked on, prompt sends, model routing and kill — for every machine at once.
  • One command to induct a machine — an enroll code mints a per-OS bootstrap script that installs the agent, registers autostart, and reports in.
  • Telemetry on every heartbeat — CPU, GPU and memory per machine — with memory read the way the OS actually means it, not the number that is wrong on macOS.
  • A kill switch you can undo — stopping the fleet terminates every session but leaves the daemons alive and reporting, so the one job they keep is noticing the switch flip back.
  • Usage by computer, folder, then session — tokens as the honest unit for subscription work, dollars only where calls are really priced — and the two are never summed.
  • An auditor that cannot edit — the on-demand security review runs with an exclusive three-tool whitelist, so it can read the trust boundary it is judging and nothing else.
Usage — computer, then folder, then session
Usage — computer, then folder, then session
Sign-in is the perimeter — no LAN bypass, ever
Sign-in is the perimeter — no LAN bypass, ever