Braeden Hintze, Programming Magician

I started programming when I was 12, when my dad showed me a thick tome called The Black Art of Macintosh Game Programming. It's only been downhill since then!


BlackGL 3D Rendering Engine

Inspired by World of Warcraft, Marathon Infinity, Summoner, and other games, I spent my youth chasing the dream of making a Skyrim-esque blockbuster game on my own. Oblivious to existing engines like OpenGL, I learned and implemented my own 3D engine.

I started by reading the book The Black Art of Macintosh Game Programming and copying the code found there. It was a simple rendering engine written in C for Macintosh OS 9. My own efforts to improve it included migrating to C++, giving it a scene-graph feel, and implementing z-buffering, texture-mapping, perspective projection, and diffusion lighting.

It was slow. It did all the calculation on the processor, ignoring the graphics card. Nearly all of the arrays were actually linked lists under the hood. It was also buggy. Drawing textures on surface respecting perspective had some math errors. And despite years of work, it was never totally free of memory leaks and crashes.

Eventually I moved on from OS 9 to OS X (now known as macOS), and BlackGL was laid to rest. I never got very far in my open-world fantasy game The Quest for Averock. Maybe someday I'll pick it up again.

  • Tic Tac Toe

    Few games are more well-known or more often cloned. In my version, the whole game table is a tic-tac-toe board. As players claimed a space, their symbol would rise out of the woodwork, literally!

  • Model Editor

    With my own engine, I also used my own 3D object format. Most of the models I created, I had to do it in a text-based resource editor, vertex by vertex. This editor was my attempt to alleviate that restriction. It evolved as the engine did. Notice the material painting options at the bottom of the tool pallette, as well as the grassy triangle that's been selected on the model.

  • Robotics Maze

    There's not much to see here, but this was my first attempt to make a scripting language. The game had a maze, generated from a small black-and-white image file. The player, a robot, would be controlled by a small code file that might look something like this:

    void main() {
    	go(2);
    	turnRight();
    	go(1);
    	turnLeft(1);
    	go(2);
    }

    This code looks simple, but since each of those commands takes several frames to complete, it was a prime candidate for concurrency. I didn't know about concurrency. I had to wrap up the rendering and event loop into each of those functions. Those were dark times.