Skip to content

georgejdanforth/polysweeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

225 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Polysweeper

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 disclaimer

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.

Building

Requires Zig 0.15.0-dev or later and slangc (Slang shader compiler) on PATH.

Dynamic linking (development)

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

Static linking

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

Compiling shaders

Shaders are written in Slang and compiled to MSL. Requires slangc on PATH.

zig build compile-shaders

macOS app bundle

Builds a statically linked executable and assembles a .app bundle at zig-out/Polysweeper.app/.

zig build bundle

About

Minesweeper on a globe

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors