---
title: A 3D Voxel Game in C, Built While Learning Pointers
description: My Basics of Programming project. 3D platformer in C with SDL 1.2, destructible terrain, time-slowdown powerups, and a great many segmentation faults.
date: 2026-04-28
period: 'Autumn 2017'
thumbnail:
  src: ./_assets/platform-game.jpg
  alt: Screenshot from a 3D platform game written in C.
article:
  tags: ['games', 'systems']
  stack: ['C', 'SDL 1.2', 'Voxel terrain']
  outcome: A playable course project, and the moment programming clicked
project:
  title: Platform Game
---

Autumn 2017, first semester, a course called Basics of Programming, and a free-choice project I aimed far too high on: a 3D voxel platformer in pure C with SDL 1.2. No engine, no scripting layer, no one to tell me that "3D in software, in C, in your first semester" was an unusual reading of the assignment.

The maps were randomly generated and destructible voxel by voxel, so you could dig your way out of trouble or wall yourself off from the flying enemies, which merged into bigger ones as they closed in, a mechanic I'd love to claim was designed rather than discovered. Powerups let you shoot, or slow down time at the cost of points.

What the project actually taught me was pointers, the honest way, through an adequate number of segmentation faults. Somewhere in those weeks programming stopped feeling like a list of facts to memorise and started feeling like a material you could build with, and I never quite went back. The next time I wrote C it was for hardware that punished every wasted byte: [Ad Astra](/articles/ad-astra-attiny85-game-engine/), three years later.

I'd write almost none of it the same way today, and I'd still defend every choice in it. First projects get that privilege exactly once.
