CORKEDFEVER

CORKEDFEVER

MADE FOR FUN. ALL OF IT.

I'm CorkedFever, and this is where my hobby projects live. Mostly plugins for Final Fantasy XIV, plus emulators, games, and whatever else seemed like a good idea at two in the morning.

NOW SHOWING

Out in the world and installable today.

CH 1 ● ON AIR · BETA

Aetherstream

FFXIV Dalamud plugin

A television in Eorzea.

A real, working TV inside Final Fantasy XIV. The picture is painted onto an actual in-game furnishing, so the room lights it and people walk in front of it. Live TV, YouTube, Twitch, Plex, a pile of free services, and a station of its own that draws shows from the game's data. Friends join a watch party with a six-character code.

  • Video decoded with libvlc and written into the game's own textures
  • Watch-party backend: Python API, MediaMTX and Caddy in Docker on a small VPS
  • Procedurally drawn channels, scheduled so every viewer sees the same episode
C#.NETDalamudlibvlcDockerPython
CH 2 ● ON AIR · ALPHA

Blitzball Companion

FFXIV Dalamud plugin

A referee's second pair of eyes.

Follows a live match of Blitzball, the roleplay sport the Eorzean Blitzball League plays with emotes and dice rolls, by reading it out of Yell chat. It tracks phases, score, possession and where every player is standing, and shows the match on a field view in game. A fan project, not affiliated with the League.

  • A rules engine, not a log viewer: it flags calls that break the rules and says why
  • Joins a match already under way by reading positions off the arena's waymarks
  • A seeded match generator plays whole games through the real parser for testing
C#.NETDalamudParsingRules engine

IN PRODUCTION

Being built right now. Playable on my machine, not yet on yours.

CH 3 IN PRODUCTION

Memoria

FFXIV Dalamud plugin

A place built from memories.

Retro consoles running in a window inside FFXIV, styled after a Final Fantasy menu. NES and Game Boy play today, with Super Nintendo underway. Every emulator core is written from scratch and shares one shell for display, sound, input and saves.

  • 6502 core passes nestest instruction- and cycle-exact; Game Boy is pixel-exact on dmg-acid2
  • Lock-free frame handoff to the game's renderer, paced by the audio device
  • Save states verified by replay divergence, and a working local link cable
C#.NETEmulationDalamudWASAPI
CH 4 IN PRODUCTION

Tavern Games

FFXIV Dalamud plugin

Pull up a chair.

Mini-games to play with other people in game, starting with Liar's Dice. Players never talk to each other directly: each plugin connects to a small relay server that matches them into rooms by a short code.

  • The server is the authoritative host. It rolls the dice, so a tampered client can't cheat
  • ASP.NET Core WebSockets, with the game engine as a pure library shared by both sides
  • End-to-end tests run whole games through the real server
C#ASP.NET CoreWebSocketsDalamudDocker

COMING SOON

On the list. No promises about when.

CH 5 COMING SOON

Breakout

Mobile game

An old favourite, rebuilt for the phone.

Years ago I wrote a breakout clone in C# and XNA. The plan is to rebuild it as a proper game I can play on my phone.

Game devMobile

HOW I BUILD THINGS

Tested against the real thing

The emulator cores pass the community's cycle-exact test ROMs. The multiplayer server is tested by playing whole games through it. If there's a known-good reference, the code answers to it.

The engine is a library

Game rules and emulation live in plain .NET libraries with no UI and no game attached, so they can be tested, replayed and reused. The plugin is a thin layer on top.

Shipped and looked after

Released projects have versioned releases, a scripted release process, and where they need one, a server I run myself: Docker, Caddy and a small VPS.

Written down

Each repository has a plain README for people who use it and engineering notes for people who work on it, including the list of things that broke and why.