Minesweeper played on a Goldberg polyhedron. Built as a learning project to explore game engine development from scratch.
Uses SDL3 for windowing, input, and GPU rendering via the SDL_gpu API. Shaders are written in Slang and compiled to MSL. Includes a custom ECS (entity component system) built on sparse sets, a scene manager, a runtime GUI layout system, and GPU-based face picking for mouse interaction on the polyhedron surface.
The polyhedron mesh is generated via a Blender Python script and exported in a custom binary format.
AI (Claude) was used as an aid for debugging, refactoring, and writing tests. The architecture, design decisions, and majority of the code were written by a human.
Requires Zig 0.15.0-dev or later and slangc (Slang shader compiler) on PATH.
Expects SDL3, SDL3_ttf, and SDL3_image headers and libraries installed via Homebrew at /opt/homebrew.
brew install sdl3 sdl3_ttf sdl3_image
zig build
Fetches and builds SDL3, SDL3_ttf, and SDL3_image from source via the Zig package manager. No system libraries needed beyond what Zig provides.
zig build -Dstatic=true
Shaders are written in Slang and compiled to MSL. Requires slangc on PATH.
zig build compile-shaders
Builds a statically linked executable and assembles a .app bundle at zig-out/Polysweeper.app/.
zig build bundle