About Me
I’m a software developer currently focused on using .NET to build tools like desktop and web apps that support internal teams at an electronics manufacturer. Additionally, I help customers access valuable information by building automated reports and websites.
In my personal projects, I typically work with C++ and explore 3D graphics APIs, binary file formats, and game development. A good chunk of my side projects involve creating modding tools for the 2018 remaster of Red Faction Guerrilla, dealing with its many custom file formats. This was sparked by seeing what modders achieved in other games when equipped with the right tools. I want to see the same transformation in one of my childhood favorites.
Projects
A map editor and file format viewer for the 2018 game Red Faction Guerrilla Re-Mars-tered. Originally developed with C++, DirectX 11, CMake, and Ghidra. The master branch is a rewrite using the Beef programming language with the initial focus being on multiplayer map editing.
A community patch in the 2018 game Red Faction Guerrilla Re-Mars-tered. The game has many hardcoded limits that restrict what players can modify. This project aims to bypass those restrictions, fix bugs, and eventually add a lua scripting system to support more dynamic mods. It uses code injection, function hooking, and binary patches to modify the game at runtime.
Cubic destruction system
A simulation with fully dynamic object destruction based on splitting cubes in half on impact. Developed with C++, CMake, Bullet Physics Engine, OpenGL 3.3.
Mars terrain mesh
A 3D map of Mars’ Mariner Valley. Generated from real elevation data from the Mars Global Surveyor Spacecraft. The elevations were extracted from the geotiff with QGIS and the mesh was generated from those with C++.
Space mining game
A simple 2D game with editor UIs auto generated via reflection. Logic written in the Beef programming language. Rendered with OpenGL 3.0. It uses an ECS to represent entities. The editor UI is generated by reflecting the fields of the components that make up each entity.
Procedural map generator
Generates a map using continuous noise and simulating plate tectonics and rainfall. One of my first big personal projects was a procedural map generator (back in the 2010s). This one was a second attempt years later. I was inspired by the detailed world generation of the indie game Dwarf Fortress.
My original generator determined water and mountain tiles by a simple elevation check, and spread moisture from water to nearby regions.
In the new one I instead tried to generate mountains by simulating tectonic plates moving around and pressing the land up, and simulated weather systems moving around the map due to wind and dropping moisture on land it hit.
Both designs are very finicky with lots of tweaking needed to get realistic looking maps. You can see some of this in the video.
AT Robots is a program used in the Computer Organization course at SUNY Polytechnic Institute to give students experience with writing assembly. It uses a simplified assembly language to control tanks in a virtual arena which are then pitted against each other in a tournament.
Unfortunately the software is written in Turbo Pascal and must be run inside DOSBox. For my Capstone project I made a C++ rewrite of AT Robots. It takes assembly text files as input, compiles them to bytecode, and executes the program inside a bytecode VM.
Due to the scale of the project it didn’t reach feature parity by the end of the semester. Though in some ways it was better, such as the improved UI and debugging tools.