Gem Runners
Gem Runners is an asteroid-mining game built in C# with MonoGame, a lightweight framework for cross-platform games. You explore asteroids for gems and have to get out before time runs out.
Beyond MonoGame, I tried to avoid other libraries and frameworks as a learning exercise. I built the engine alongside the game, including movement, collisions, lighting, and a custom tiling system.
The tiles are drawn in quarters, choosing each piece based on its neighbours so the edges join up as you mine. Lighting and fog of war reveal the tunnels as you explore. Driving and drilling can also weaken the ground, causing it to collapse into lava.

The asteroids are procedurally generated using perlin noise, with different materials and hazards in the crust, mantle, and core. I built a separate viewer to generate asteroids and inspect their layers without playing through them:

For the menus and inventory, I built a UI system inspired by React and flexbox: a tree of elements with rows, columns, padding, and alignment. That also meant handling text measurement and wrapping, including manually recording the coordinates and width of each character in a font PNG. Useful to learn, though fairly tedious!
I also learned pixel art and made the artwork in Aseprite, from the terrain tiles to the character and mining vehicle.

As much as I enjoyed building the game, I ultimately struggled to make the core loop fun, and didn't pursue releasing it. I'm grateful for the technical lessons and now have a lot more respect for game designers!