PROJECTS/

  • DURAK screenshot

    Keyboard-first browser game for Durak.

    1v1 or FFA up to 6, vs bots or humans. Server-authoritative engine over websockets, PixiJS client hosted on Cloudflare Pages and engine on a Worker. Inspired by TETR.IO and dedicated to my friend Kate who taught me this game (and many others) and definitely isn't annoying.

    YEAR
    2025
    KIND
    GAME
    PLATFORM
    DESKTOP
    STACK
    TypeScript / Pixi.js / Zustand / Cloudflare Workers
    STATUS
    LIVE
    [ ↵ OPEN durak.icfred.co.uk ]
  • CARD_SANDBOX screenshot

    Cosmetics-as-code system for card skins.

    Skins are composed of 5 axes: pattern, body colour, accent palette, tint and finish. Each has variables like offset, scale, depth, strength, wear. The information is packed into an 18-character code, with every texture baked at runtime — no atlas, no sprites — every card is a shader plus code. Inspired by skins from CS:GO and the quality-naming system in Dwarf Fortress. Originally intended to be part of the Durak game but outgrew it. Click a card to view it, hit R to roll a new card.

    YEAR
    2025
    KIND
    TOOL
    PLATFORM
    DESKTOP
    STACK
    TypeScript / Pixi.js / GLSL
    STATUS
    LIVE
    [ ↵ OPEN cardsandbox.icfred.co.uk ]
  • HEX6 screenshot

    An experiment into agentic loop workflows.

    Whilst the output is a game, the real subject was the process. I created a series of LLM-powered loops to build the product end-to-end with minimal human intervention. The only input I had was in the form of non-technical feedback in playtesting on semi-regular intervals. I transcribed a video I took for a module in my MA where I presented a roguelite, endless game concept. The concept was a physical card game. I presented the transcription to an agent and asked it to create a spec, looping with an adversarial agent until the spec was agreed. Once the spec landed, I created a loop where one agent would operate as the Product Manager; they would manage Linear tickets, identify parallelisable work streams, and delegate work to other agents via a handoff-handback loop. Whilst the technical side is impressive — particularly the world generation and biome system (Voronoi biomes over a Markov layer, with a connectivity invariant to ensure the world is endless and traversable) — the game itself feels lacklustre. I think this is more to do with an AI not being suited to creating something as subjective as fun; despite persistent feedback from my playtesting that the game was boring, AI simply can't comprehend fun, as it's such an ambiguous human quality. Had I pointed this loop at a prompt to build a SaaS product, I'm sure the results would have been far more impressive — but that's been done many a time before. I eventually stopped the loop because it was spending a lot of tokens in exchange for very few fruits. Whilst the game isn't impressive, I am impressed that the loop took a very weak input on a loose game idea, created a spec, and developed it with really minimal human interaction. I let it run whilst I was at work, tested the game after work, and replied to the agent very unassertively — "yeah, combat feels a little boring and slow", "character progression feels non-existent" — and the loop would propose and implement features. That's pretty neat.

    YEAR
    2026
    KIND
    EXPERIMENT
    PLATFORM
    DESKTOP
    STACK
    TypeScript / Pixi.js / SQLite (WASM) / Cloudflare Pages
    METHOD
    Agentic loops w/ Linear MCP, git worktrees, automation
    STATUS
    LIVE
    [ ↵ OPEN hex6.icfred.co.uk ]
DURAK screenshot

Keyboard-first browser game for Durak.

1v1 or FFA up to 6, vs bots or humans. Server-authoritative engine over websockets, PixiJS client hosted on Cloudflare Pages and engine on a Worker. Inspired by TETR.IO and dedicated to my friend Kate who taught me this game (and many others) and definitely isn't annoying.

YEAR
2025
KIND
GAME
PLATFORM
DESKTOP
STACK
TypeScript / Pixi.js / Zustand / Cloudflare Workers
STATUS
LIVE
[ ↵ OPEN durak.icfred.co.uk ]
CARD_SANDBOX screenshot

Cosmetics-as-code system for card skins.

Skins are composed of 5 axes: pattern, body colour, accent palette, tint and finish. Each has variables like offset, scale, depth, strength, wear. The information is packed into an 18-character code, with every texture baked at runtime — no atlas, no sprites — every card is a shader plus code. Inspired by skins from CS:GO and the quality-naming system in Dwarf Fortress. Originally intended to be part of the Durak game but outgrew it. Click a card to view it, hit R to roll a new card.

YEAR
2025
KIND
TOOL
PLATFORM
DESKTOP
STACK
TypeScript / Pixi.js / GLSL
STATUS
LIVE
[ ↵ OPEN cardsandbox.icfred.co.uk ]
HEX6 screenshot

An experiment into agentic loop workflows.

Whilst the output is a game, the real subject was the process. I created a series of LLM-powered loops to build the product end-to-end with minimal human intervention. The only input I had was in the form of non-technical feedback in playtesting on semi-regular intervals. I transcribed a video I took for a module in my MA where I presented a roguelite, endless game concept. The concept was a physical card game. I presented the transcription to an agent and asked it to create a spec, looping with an adversarial agent until the spec was agreed. Once the spec landed, I created a loop where one agent would operate as the Product Manager; they would manage Linear tickets, identify parallelisable work streams, and delegate work to other agents via a handoff-handback loop. Whilst the technical side is impressive — particularly the world generation and biome system (Voronoi biomes over a Markov layer, with a connectivity invariant to ensure the world is endless and traversable) — the game itself feels lacklustre. I think this is more to do with an AI not being suited to creating something as subjective as fun; despite persistent feedback from my playtesting that the game was boring, AI simply can't comprehend fun, as it's such an ambiguous human quality. Had I pointed this loop at a prompt to build a SaaS product, I'm sure the results would have been far more impressive — but that's been done many a time before. I eventually stopped the loop because it was spending a lot of tokens in exchange for very few fruits. Whilst the game isn't impressive, I am impressed that the loop took a very weak input on a loose game idea, created a spec, and developed it with really minimal human interaction. I let it run whilst I was at work, tested the game after work, and replied to the agent very unassertively — "yeah, combat feels a little boring and slow", "character progression feels non-existent" — and the loop would propose and implement features. That's pretty neat.

YEAR
2026
KIND
EXPERIMENT
PLATFORM
DESKTOP
STACK
TypeScript / Pixi.js / SQLite (WASM) / Cloudflare Pages
METHOD
Agentic loops w/ Linear MCP, git worktrees, automation
STATUS
LIVE
[ ↵ OPEN hex6.icfred.co.uk ]
[ icfred.co.uk ]