Aaron Leonard #
A software Developer based out of Newcastle Upon Tyne. I make a lot of software in my free time.
Portfolio #
The Grail Perilous #
The Grail Perilous is a game set in an alternate Arthurian Legend, where the quest for the Holy Grail has been failed by the greatest of Arthurs Knights... Lancelot, Galahad, Sir Percival and the rest. As a result, King Arthur lays wasting away in the same state as his Country, wasting away to a terrible wasteland that followed from a centuries long conflict between King Arthur and Morgrim the child of Mordred and all that is terrible. This game takes design cues from the games of From Soft: Dark Souls and King's Field, and also takes design cues from more modern games such as Cruelty Squad, particularly in the level design and the nature of the game where you can collect a lot of different weapons, armours, rings and amulets that change how you play the game, and affect how you prepare to go into levels and give you a reason to return to past levels.






ctag #
ctag is an ncurses based project that allows to me to tag large amounts of music files in various formats(mp3s, ogg vorbis etc) with the correct Artists, Album, Name and Index informations. This was made because a lot of my music has this meta data either badly formatted or not done at all, and the alternatives are either exceptionally clunky GUIs where bulk editing is not easy or another ncurses based tool called stag that often crashes. You select a bunch of music files in an order and it indexes them accordingly automatically. As the listing is usually alphanumerically by file name, you can usually just select all of them in order and tag them correctly this way. You can also assign artist names recursively to all files in a folder, and apply album names recursively to all files in a folder, with modal popups to allow for slightly more precise names- all with UTF-8 support.
I found AI to be an interesting tool to work with on this, but it confirmed to me that vibe coding is NOT the future. I wrote further about my experiences on this on my blog. Instead it must be finely aimed and used as to not allow technical standards to drop.


Mirrormind #
Mirrormind is a lo-fi perspective-switching puzzle game where you control multiple characters and explore the surprising interactions that happen when their perspectives, movement, and gravity are separated. It asks a number of interesting game design questions following a similar style to Portal where ideas are introduced one by one, and a style similar to Braid where you can try different puzzles at different times. These interesting game design questions include: What happens when players are on different gravitational axes? What happens when you're in looping non-euclidean geometry? What happens when you can change who you look from, but not who you control? What happens when you can change who you control and not who you look from?



Blackwind Books #
Blackwind Books is a project inspired by Lindypress.net. The premise is simple. There are books I would like to read, but are almost impossible to get a copy of OR, they are in the public domain and the copies that exist are so poorly typeset and produced as to be insulting to the original work. It was a project written with NextJS which allows for server-side and client-side work to be done. It was also an experiment to learn how to make payment procedures for websites which mostly comes down to gluing the Lulu API together with the Stripe API and handling it in the backend.
One point of testing that had to be done is that Stripe accepts payments from a lot more locations than Lulu supports shipping to. As a result, some locations had to be stripped from this. This project has been used by others and has shipped books internationally.



Werc #
Werc is a minimalist web anti-framework, built using Plan 9 tools and a Unix methodology. This is what this portfolio website, my personal website, image listing website, a zine archive I host and a few other miscellaneous websites I run all use. The appeal to me is how extraordinarily simple it is, as well as how I can plug in software written in any language in it. It is wholly unsuited for large scale software, but as my websites do not have Google-level scales, it is fine.
I have written a number of tools for Werc, my own personal build of werc with some modifications is used as a base, bridge is a tool allowing for comments to be made by people on pages, goralog is a tool allowing me to easily make and maintain RSS feeds and blog posts, gallery is a tool for large image listings, search being a tool for large searching of a website using ripgrep, better-navbar being a tool for a better navbar for searching a site, and dirdir being a tool for maintaining a website much like it is a wiki. I have also written a bible tool for werc as most websites providing bibles are pretty poor and are not minimal.
I have also previously been commissioned to make a set of bootstrapping scripts for werc which can be seen here.



Godot, contributions, tools and toolmaking #
Godot is a games engine I have contributed code to, for runtime lightmap baking as well as runtime particle spawn point baking. Both of these contributions were motivated by my use of func_godot, a tool I have contributed time towards in PR Reviews, reporting bugs, and contributing code to cull interior faces of brushes as well as code for programmatically generating entity properties, so you can connect resources to them, and code for overriding the generation of brush vertices so cave generation is easier. I have also contributed to documentation for it, writing several pages for the documentation, from how to use the brush metadata of textures it uses, to how to do runtime map building.
I have also written several standalone Godot tools of my own. There is RT-mesh_screenshotter for generating lots of images from 3D scenes, ideal for making inventory item images, func_godot_model_pointclass which eventually was merged upstream to the main repo, func_godot_scene_import for importing .map files as a scene for automatic reloading of maps when changes are made, my fork of cog for large lots of boilerplate menu and settings configurations for games, RT-Texture2DArrayCreator for making 2D Texture Arrays which are commonly used in shaders for swapping between texture sets on 3D models. I have also made gd_planar_reflection which provides an implementation of planar reflections for Godot, and GDSpatialAudio which provides an implementation of spatial audio where sound occlusion, reflection and per-material settings are a thing.
Finally, I have also made tools with Godot Podcast-Renderer-Project a tool for recording talking head style videos, rex-is-godot a tool for importing the Rexpain .xp binary file format, which is listed in the official documentation and finally JackerChan, a tool using 4chan's public API to provide a text-only interface to view posts.

Garry's Mod modding #
During Covid I made a selection of Garry's Mod mods and helped contribute to some of my friends Garry's mod mods. The Monster Energy Drink, The DOOM Weapons, The abandoned warehouse map and the Wand of Universal Wishing.
In total, some 15,000 users have downloaded and enjoyed my garry's mod mods. I have also provided Lua mentoring and testing feedback for the following mods: Death Star, Star Wars Blasters, Tantive IV and Un Clasico which themselves have a large audience.




Agora Runes #
During Christmas of 2023, I participated in a 1 month game jam. Agora Runes was a testing ground for using Terrain3D and for my Planar Reflections tool.





500ml of Violence #
As part of my Computer Science Degree, I had to make a short arcade game. I chose to go a lot more ambitious than the requirements actually were, and made a game heavily inspired by Devil Daggers.





Quiver #
My first proper large and fully fleshed out game. A 2D procedurally generated exploration into a random military base. I also wrote a deathmatch gamemode for this, which was surprisingly fun to play, but netcode is pretty non-trivial to pull off.




More projects #
These are mainly the flashiest and most interest and also recent projects I have worked on. There is a more complete list of all my old projects on my personal site which is also a good place to learn more about myself.
Further Information and Contacts #
For job related things, please use my gmail or linkedin. For anything else please use my @risingthumb.xyz email addresses. To learn more about myself see my personal site and my github. I can also be contacted on Discord with the username risingthumb.