Reflecting on a Year of Gamedev in Zig

Zig for Gamedev & Ecosystem

  • Solo gamedev in Zig is seen as viable, especially when leveraging C/C++ libraries via Zig’s strong FFI and ability to compile C/C++/ObjC directly.
  • Native Zig gamedev ecosystem is still thin; many rely on C libraries (e.g., raylib, SDL) and wrappers (e.g., zig-gamedev). Pure Zig alternatives like Mach are emerging but not yet as mature as long‑standing C libs.
  • Some warn that spending too much time on language/engine tinkering vs actually making a game is a risk, similar to what’s happened in Rust gamedev.

Breaking Changes & Pre‑1.0 Status

  • Breaking changes are acknowledged but described by users as manageable: typically renames or small API shifts, documented in release notes.
  • Others consider using a pre‑1.0 language for a shippable game “building on sand” and worry about long‑term maintenance.

Build System & Composability

  • Many praise Zig’s build system as simpler and more coherent than CMake/Maven/Gradle: builds are just Zig programs using stdlib APIs.
  • Critics argue imperative build scripts are hard to compose and extend (coverage, codegen, etc.), preferring more declarative systems (Meson, Ninja, Cargo). Comparisons to Gradle’s “too much freedom” appear.

Learning Support: Discord vs Stack Overflow vs Forums

  • Zig Discord is described as very responsive for beginners, with questions answered in minutes.
  • Strong pushback: Discord is proprietary, poorly searchable from the web, and traps repeated Q&A; some call this a regression from Stack Overflow’s canonical, indexed answers.
  • Others note SO has become hostile and beginner‑unfriendly; chat feels more engaging and faster.
  • Suggested middle grounds: Ziggit (Discourse), AnswerOverflow-style indexing, or exporting Discord threads; debate over whether Discord’s internal search and threading are “good enough.”

Language Features & Bugs

  • A reported atan issue is clarified as a comptime_float vs f32 type quirk in Zig’s type system; considered a stdlib oversight, not absence of atan.
  • comptime is generally viewed as simpler and more pleasant than C++ templates, with better error messages, though low‑level and sometimes bug‑prone.
  • String handling is criticized as too manual (allocators, explicit frees); others show patterns using stack buffers, allocPrint, and arena allocators to keep it reasonable, noting safety tradeoffs around unreachable.
  • SIMD: Zig has first‑class vectors but no built‑in matrices; some see this as fine (“it’s all vectors”), others point out Odin/C3 offer richer SIMD/matrix ergonomics.

Rust vs Zig & “Developer Joy”

  • Several comments frame Zig as “more joyful” or better suited for low‑level OS/gamedev than Rust, citing easier FFI and fewer borrow‑checker contortions.
  • Counterarguments emphasize Rust’s high long‑term satisfaction, stronger safety, and that frustration is often front‑loaded into the learning curve or compile times.
  • Some see Zig’s current honeymoon phase as typical of new languages; Rust’s ergonomic pain is compared to “paying upfront” for safety.