MacOS

Shipping CaveRace 1.5

There is something strangely satisfying about opening source code that is almost three decades old.

Not because it is beautiful. It isn’t. Not because you remember how everything works. You definitely don’t. But because every line tells a story about a younger version of yourself who somehow thought “future me will understand this.” Spoiler: future me did not.

https://caverace.com/assets/images/caverace-key-art.jpg

Back in 1997 I wrote CaveRace, a small DOS arcade game about collecting treasure, avoiding monsters, blowing up rocks, and trying not to blow yourself up in the process. Nothing revolutionary, just a fun little game made with the tools we had at the time. Over the years it lived on different computers, went through a DirectX rewrite, eventually made its way to Windows Phone, and then quietly disappeared. I never really forgot about it, though, and this year I sat down to answer a simple question: could I rebuild CaveRace today as if starting from scratch, while keeping the original gameplay completely intact? The answer became CaveRace 1.5.

Fixing Odin and Raylib on macOS: The Git LFS Problem

I recently started rewriting CaveRace, a game I originally built in C in 1997. The old version was written for MS-DOS using Borland C, VGA Mode 13h graphics, and a little x86 assembly. Rewriting it is a good excuse to revisit the game and experiment with a modern systems programming language.

For this version, I chose Odin together with Raylib. Odin feels familiar when coming from C, and its official vendor collection already includes Raylib bindings and native libraries. In theory, getting a window on the screen should be as simple as importing Raylib: