QuinnSoftware engineerPhoenix

I build weird stuff
I wish existed.

It usually starts with wanting something that doesn’t exist, and ends with me having built it. This happens more often than it should.

WebNext.js · OpenLayersPrerendered

Post Map

An interactive map of Faerûn for tabletop D&D: 297 places you can search, link to, and measure between, each with its wiki article in the panel beside it. It has the shape of something that needs a tile server, a database, and an account behind it. There is nothing behind it.

A fragment of the Sword Coast, with Waterdeep, Daggerford and Baldur's Gate marked in orange and a dashed measuring line running between them
A fragment of the Sword Coast, the journey from Waterdeep to Baldur's Gate mapped through Daggerford: 357 miles, or kilometres if you prefer them. The 297 places sit in eight layers you can toggle.

WebNext.js · cmdkPrerendered

Archie

Archipelago shuffles items between games, so a single session can span a few hundred of them. Which of those actually work is answered by a community spreadsheet you can read but not really ask questions of. Archie is that list made queryable: 596 games and 52 tools, each carrying the support status you would want before building a session around it.

Six rows of Archie's game table in greyscale, with columns for type, status, platform and emulator; the status column reads Unknown, Unstable, Stable, Stable, Official and Broken on Main
Six rows of 648. Every entry on the list is supported by someone, which is why the status column is the one that matters: across the 596 games, 234 are stable, 236 unstable, and eight are broken on main as of the last build. Greyscale for this page — Archie colours those badges.

DesktopWindowsC# · Avalonia

Serpent’s Eyes

The collection browser Serpent’s Gaze shipped without. It reads your save and lays out everything you’ve unlocked in the game’s own art — and everything you haven’t, greyed out with the hint that gets it.

  save                        shown

  3+2*{l}                     3 + (2 × Lv)
  counter 4                   Obtained ×4
  bosskill_blessed 45         45 boss kills while blessed
A save file stores integers and formula strings. The work is turning those back into sentences: a scaling formula becomes readable at your actual level, and a bare counter becomes the thing it was counting. It opens saves with sharing enabled, so it runs while the game does, and it never writes to them.

AssetsPixel art · 32×32PNG · sprite sheet

Asset Packs

Small pixel icon sets for game developers, sold on itch.io. Every 32×32 iconset ships the swords and the potions and stops there. The first pack is the half they leave out: 64 items covering the whole farm-to-kitchen loop, from the seed packet to the apple pie cooling on the windowsill.

CropsDairy & Preserves

Twenty-four pixel art food icons in three rows of eight — crops along the top, dairy and preserves below — shown in greyscale; the pack itself is in colour
Twenty-four of the sixty-four, in greyscale for this page — the pack itself is in colour. One 65-colour palette runs through every icon, which is the thing that usually goes wrong when a set is assembled from several sources: nothing clashes when they sit together in the same inventory grid.
  cozy-farm-kitchen-icons.zip

  icons/                       64 PNG · 32×32
  spritesheet/
    farm_kitchen_icons_32.png  256×256 · 8×8
    atlas.json                 name → x, y, w, h
  palette.png                  65 colours
  README.txt
  LICENSE.txt
Phaser 3 and PixiJS load the sheet and atlas natively; Godot, Unity and Construct take the loose PNGs, or slice the sheet on a 32×32 grid. Binary alpha throughout — no semi-transparent edge pixels — so it scales 2×, 3× and 4× with nearest-neighbour and stays crisp.