Portfolio

A collection of my projects in game development, software engineering, painting, and commercial work.

Tombfall

JavaScript WebGL

A old school 3D raycast first-person dungeon crawler built from scratch with pure browser-based JavaScript. Features procedural level generation, turn-based combat, a dynamic lighting engine, procedurally generated soundtrack with synthesized speech, and a persistent server side highscore database.

A portrait view of game GUI and environment. Combat with a Orc enemy Landscape view of GUI and environment. Party combat with magic spellcasting and visible party HUD.

Grid Seeker

JavaScript WebGL

A 3D browser flying-vehicle game set in a neon wireframe cityscape, built with Three.js, Rapier3D physics, and Tone.js audio as a zero-build vanilla ES-module application. Features a procedurally generated elevated road network with ramps and overpasses, custom navigation-mesh A* pathfinding for patrolling hover tanks, and a retro 1980s vector-graphics aesthetic.

Gameplay view of the flying vehicle over a neon wireframe cityscape with flight controls overlay. Elevated road network and neon architecture in the retro vector-graphics city.

GIMP 3 webp export plug-in

Python Plug-in

A GIMP 3 plug-in with a graphical user interface (GUI), built using Python, for exporting image layers as a single animated WebP file. Leverages the Gtk and Gimp libraries to offer per-frame controls for delay and transformations, enabling the creation of customized animations.

Place in "C:\Users\{your user name}\AppData\Roaming\GIMP\3.0\plug-ins\animated_webp_exporter\animated_webp_exporter.py"

Plug-in file menu location Plug-in GUI

Sprite Sheet Animator

Python

A standalone sprite animation application with a graphical user interface (GUI), built using Python, for creating complex animations from sprite sheets. It leverages the Tkinter (ttk), Pillow (PIL), and rembg libraries to offer sprite grid definition, a suite of image editing tools (pencil, wand, background removal), and robust animation sequence management with per-frame controls for duration and flips, enabling the export of customized, game-ready animated files (GIF, WebP, PNG) or new sprite sheets.

GUI image Animation sequence preview Grid guides Rembg preview

Sprite Shop

Python

A web-based sprite sheet assembler with a graphical user interface (GUI), built using Python and Gradio, for turning machine-learning-generated image strips into game-ready pixel-art assets. It leverages the Pillow (PIL), NumPy, and OpenCV libraries to offer automatic sprite extraction with connected-component detection, LAB color space background and border removal, pixel-art post-processing, and a drag-and-drop animation timeline with per-frame duration controls, enabling the export of PNG sprite sheets, animated WebP files, and JSON manifests compatible with a game engine.

Timeline sequencer with frame palette and animation cards. Auto sprite extraction from a machine-learning-generated image strip. Metadata editor and JSON manifest export panel.

Audio Midi extract

Python JavaScript Machine Learning

A browser-based audio-to-MIDI workstation with a graphical user interface (GUI), built using Python and JavaScript, for turning finished songs into editable multi-track arrangements. It leverages Demucs stem separation, transformer chord recognition, and neural pitch transcription behind a Tone.js piano-roll editor to offer drum slicing, sample mapping, and theme building, enabling the export of MIDI, sample packs, and game-ready music bundles.

Piano-roll editor with drum, bass, and vocal lanes transcribed over the source audio waveforms. Analysis bar, transport, and drum sample mapping controls above the multi-lane editor.