Hello! Welcome to my portfolio. I'm a programmer with interest in embedded systems, compilers, game development, and more.
You can see a couple of my projects below. You can sort the projects based on topic using the tags along the top of each one, or follow the links along the bottom to learn more.
Filter projects by tag:
PonieScript is a custom game scripting language I am working on. It is statically typed and AOT compiled, using C as a backend. The type system and semantics are currently something like Java crossed with Rust. It is garbage collected (using a concurrent garbage collector) and supports type-safe optionals (e.g. ClassName?) and value types (e.g. (int, int)).
The compiler, language server, and garbage collector are all written in Rust.
ben's beams is a short puzzle game made for the JamFest game jam at GMU.
I used it as a prototype for the Rust game development technologies I am working on. The game involves a WebGPU renderer that supports 3D meshes with PBR lighting (and IBL).
ben's bales is a short platformer game made for the Virginia Collegiate Game Jam.
The goal with this game was to implement 3D skinned armature animation in a C game engine, targetting WebGL 1. The idea was that WebGL 1 should make a good target for certain games as it is very widely available.
There, Again is a platformer game I made for Ludum Dare 48. It is a "kaizo" platforming game inspired by my time with Mario Maker, which I played a lot at the time.
It goes through a series of screens, where you play each screen twice with small modifications, but the second time through you have a double jump.
poni-cc is my custom C compiler, following Nora Sandler's "Writing a C Compiler" as well as my own whims.
The main goal of the project is to write a C compiler that is about as fast (or ideally faster) than tcc / TinyCC. To this end, it has a single-pass frontend (no AST), as well as an internal assembler (intermediate assembly is not necessary).
In the screenshot, you can see it compiling directly to a .o file without an
intermediate files.
This is a short platformer game exploring a couple of niche and bizarre level designs, inspired by my time playing Mario Maker. It is meant to explore certain "flavors" of bad levels, including tedium, extreme precision, terribly unfair design, and so on.
Glassbox is a little music player that supports one unique feature: Rendering the waveform and spectrogram of your music overlaid on top of your screen.
The overlay does not block mouse events, and it will hide itself if you mouse over it, allowing you to still see your entire screen if necessary.
It also supports Discord Rich Presence.
It does exactly what I want and I usually use it when listening to music.
Cardwork Cycle is a deck-building farming game created for Ludum Dare 52. It is pretty derivative of Slay the Spire mechanically (energy system + card rewards), but it ended up being decently enjoyed by the Ludum Dare crowd and by some other folks who I watched play it.
This game scored 25th overall and 9th for fun in the Jam (72hour team) category in Ludum Dare despite being a solo project.
"Far." is a somewhat bizarre incremental game I made for Ludum Dare 51. It was largely a "for fun" project, specifically a kind of project I hadn't done for a while: Writing a game in a bespoke engine in C.
Far used a custom build system that included some C code generation, to support an engine architecture vaguely along the lines of Godot.
The engine was built on top of SDL2 and OpenGL, as was my style for a long time.
Ultimately Far was in a lot of ways a return to my roots in writing engine code for games, something that I'm doing more often and better today. But the technologies I am working on right now (specifically PonieScript) trace back in some ways to this game.
Impish Descent is a roguelite game where you build a formation of imps, similar to a deck-builder. Each imp has certain combat or support abilities, and you navigate your formation throughout a few levels, defeating ghosts along the way.
I originally created this game for Ludum Dare 56. I later built an updated version to present at GAMEmason.
bens.games is this very website!
It is built using a custom static site generator written in Rust, and deployed through GitHub using GitHub Actions. The frontend is manually written HTML and CSS, using reasonably modern features to keep things straightforward.
Haley Heartbeat is a (sort of) "bullet hell" game, designed along the lines of a sort of puzzle game. In particular, each encounter with enemies can be "defused" by fighting them in a certain order.
The game is also a rhythm game: tapping the fire button in a heartbeat pattern gives you successively more powerful shots. The music is designed around this rhythm and so has a sort of jaunty vibe.