Projects

Here's where I keep track of all the projects I'm working on and ones I've worked on. Clicking a project will reveal a bit of details about it, plus some links.

Active/finished projects

Games
cmdjewel github itch

cmdjewel is a match-3 game written for the terminal in Rust.

I wrote it to not only learn Rust by writing an actual project, but also because I was fed up with how EA's versions of Bejeweled for mobile were riddled with ads while Bejeweled 2 for Android was a buggy mess. I'm mostly just driven by the fact that I don't see much (foss for that matter) Bejeweled remakes. I initially wrote it in Python, but decided to expand on it and rewrite it in Rust.

Green Armageddon github itch

Made for a club's Arcade Game Jam, and made to run on a Raspberry Pi 4B 4GB. It's a Doom-themed shooter written in Godot where you have to score as much points as possible before time runs out.

I initially wanted it to have more art, more enemies, and custom textures but ran out of time. You can quite tell that I needed to make more maps with TrenchBroom--and that I made this before I played Quake! I actually bought Quake just to have TrenchBroom stop giving errors about textures or some color palette. It was also a struggle trying to get the game to perform well enough on a Raspberry Pi. That thing could barely run Doom, and I was trying to get it to run OpenGL!

Fun fact; the images used for the viewmodel is actually pre-transition me! My arms have like, no hair on them now. And they're smaller. And really, really shiny.

Min Space github itch

Min Space was a game made for a hackathon (that I now help run; check out their website! i made that!). It initially featured one circuit, but I expanded on it by writing a map editor (the music for the map editor is the only music I wrote, excluding the title screen where i just paulstretched the main theme. credits for that go to the very talented Zirconova!!).

InfiniteShooter github itch

InfiniteShooter was the game I spent the most effort on. It's a rougelike vertical shooter written in Godot--and it's got its own Flatpak!

I didn't really know anything about Godot when I started it, or game design. Over the years it's picked up technical debt and design flaws that made it really hard to update it without doing a proper rewrite. It just wasn't fun, and something was visually lacking. That's what I get for jumping into a project without planning it first, though...

It started life as a HTML game... back when that was all I knew. It was a bunch of concepts at that point that I was slowly putting together... but I lost all the source code and didn't touch it for years. When I was supposed to make a Python game in grade 10, I chose to remake InfiniteShooter. I wrote my own engine on top of PyGame for it that featured animated sprites, shadows, polygons, animations, and multithreading (with... my own implementation of setInterval, of all things). I decided to learn Godot by rewriting InfiniteShooter in it, in 3D, and it just kept going from there.

Programs
FreePaint github f-droid

FreePaint is a free, open source vector graphics drawing application for Android. It aims to be intuitive, ad-free and powerful--probably one of the only drawing applications for Android of its kind. And if it's the first, it should do it well.

This started as a final project for my grade 12 high school computer science class--you had to learn Android development, and make an Android app, then justify why you made it. I took that opportunity to make an application for something I've wanted for a long time. When I decided to post it on F-Droid, I didn't actually expect as much people to notice it as there were!

Scripts/libraries
The Renderer codeberg

The Renderer is a library, similar to OpenGL, for using software rendering to render things to a buffer. It has abstractions so it's really easy to load meshes, or make a game with it.

I initially wrote it in Python in first year, after I realised during a linear algebra class that 3D objects are just 3D graphs, and you could orthographically project each point and reconstruct a projected object. From there, I went to model loading, perspective cameras, lighting, depth buffers--and later, rewriting everything in Rust, shaders, textures, remaking the whole OpenGL pipeline in software (almost, since some things would be slow), screen space shaders, optimizations, and more.

softbuffer-quickstart github crates.io

softbuffer-quickstart is a tool I created to make working with Softbuffer stupid simple (instead of the mess working with it and winit is). With a few lines, it's easy to start messing with a framebuffer, or make a more complex window with softbuffer-quickstart's helper functions.

chordguesser9000 github

This is a script I made to quiz people on how fast they can spell various chords, when given a name and quality. It was mostly done to prepare for quizzes/tests for my music theory class, but I found it was just fun in general (when your marks don't rely on it).

lmms-midi github

Fed up with how LMMS's MIDI export didn't account for instruments in the SF2 player, I created lmms-midi to be able to account for that. It's a small (janky, but it works) script to export uncompressed .mmp files to .mid files.

Inactive/unfinished/abandoned projects

Watch out! Some of these range from janky to straight up unfinished, or even abandoned.

Games
Scripts/libraries