<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/how-is-zig-working-out-after-3-years-and-100k-lines-of-game-code--b61guw8wt" -->

---
title: How is Zig working out after 3 years and 100k lines of...
description: A game developer shares 3 years of experience writing over 100,000 lines of Zig for a game called Traction Point, covering the everyday development experience,...
canonical: https://daily.dev/posts/how-is-zig-working-out-after-3-years-and-100k-lines-of-game-code--b61guw8wt
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: How is Zig working out after 3 years and 100k lines of game code? | daily.dev
og:description: A game developer shares 3 years of experience writing over 100,000 lines of Zig for a game called Traction Point, covering the everyday development experience,...
og:url: https://daily.dev/posts/how-is-zig-working-out-after-3-years-and-100k-lines-of-game-code--b61guw8wt
og:image: https://api.daily.dev/og/posts/b61Guw8Wt.png
og:image:alt: How is Zig working out after 3 years and 100k lines of game code?
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# How is Zig working out after 3 years and 100k lines of game code?

**[YouTube](https://daily.dev/sources/youtube)** · 85 min read · 1 upvotes · 0 comments

## Summary

A game developer shares 3 years of experience writing over 100,000 lines of Zig for a game called Traction Point, covering the everyday development experience, Windows support issues, LLVM-dependent compilation speed, debugging challenges, hot reloading implementation, Zig's explicit allocator model, error handling fit for game dev, WebAssembly-based mod support, and the ZLS language server. Key takeaways include: language changes have been mostly positive, standard library breakages (alloc gate, IO gate) require occasional fixes, Windows is now tier-2 support with slower compile times, debugger reliability on Windows is inconsistent, and Zig's comptime system enables powerful patterns like automatic pointer fix-up after hot reloads. Error handling with try/catch is seen as a mixed fit for gameplay code where panicking on OOM is often more practical.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.youtube.com/watch?v=HXpUShkr2VQ>

## Questions this post answers

### How does Zig's explicit allocator requirement help implement hot reloading in a game's gameplay code?

Zig requires every dynamic data structure, like array lists, to receive an allocator explicitly at initialization, so a developer can pass in an allocator managed by the persistent game engine rather than the reloadable gameplay library. Since only the Zig gameplay DLL gets unloaded and reloaded, memory allocated through the engine-controlled allocator survives the reload, avoiding the loss of game object state that would otherwise occur.

_Developers building hot-reload workflows in Zig can find similar allocator patterns and pitfalls curated on daily.dev._

### Why did Windows support get downgraded from tier one to tier two in Zig 0.16?

Windows support was downgraded because tier one status now requires the compiler to generate machine code without relying on LLVM, and Zig still depends on LLVM for Windows compilation. Only x86-64 Linux remains tier one. This means Windows builds inherit LLVM's slower compile times, roughly five to ten seconds even for a single value change in debug mode.

_Anyone weighing Zig for Windows game development can track platform tier changes like this through daily.dev._

### Is Zig's error handling with try and error unions a good fit for gameplay programming?

It is a mixed fit: errors work well for cases like failed network connections or missing save files where showing a user message makes sense, but in most gameplay code, unrecoverable situations like running out of memory are better handled by panicking immediately rather than propagating an error union upward, since errors can't carry a payload describing where the failure happened, making bugs harder to trace once bubbled through multiple call layers.

_Developers deciding how to structure error handling in Zig game code can compare real-world trade-offs like these on daily.dev._

## Similar posts on daily.dev

- [How Our Rust-to-Zig Rewrite is Going](https://daily.dev/posts/how-our-rust-to-zig-rewrite-is-going-kvdc7iim2) · Lobsters · 5 upvotes · 1 comments
- [Devlog ⚡ Zig Programming Language](https://daily.dev/posts/devlog-zig-programming-language-erdncfswa) · Zig · 0 upvotes · 0 comments
- [Returning to Zig](https://daily.dev/posts/returning-to-zig-c4quzonya) · Lobsters · 23 upvotes · 4 comments

---

Tags: [#game-development](https://daily.dev/tags/game-development), [#webassembly](https://daily.dev/tags/webassembly), [#zig](https://daily.dev/tags/zig)

[View this post on daily.dev](https://daily.dev/posts/how-is-zig-working-out-after-3-years-and-100k-lines-of-game-code--b61guw8wt)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"How is Zig working out after 3 years and 100k lines of game code?","url":"https://daily.dev/posts/how-is-zig-working-out-after-3-years-and-100k-lines-of-game-code--b61guw8wt","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/how-is-zig-working-out-after-3-years-and-100k-lines-of-game-code--b61guw8wt"},"datePublished":"2026-07-09T16:07:47.475Z","dateModified":"2026-09-14T07:36:36.146Z","description":"A game developer shares 3 years of experience writing over 100,000 lines of Zig for a game called Traction Point, covering the everyday development experience,...","image":"https://i.ytimg.com/vi/HXpUShkr2VQ/sddefault.jpg","thumbnailUrl":"https://i.ytimg.com/vi/HXpUShkr2VQ/sddefault.jpg","isAccessibleForFree":true,"articleSection":"YouTube","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"YouTube","logo":"https://media.daily.dev/image/upload/s--W5zMumpP--/f_auto/v1725350181/logos/youtube","url":"https://daily.dev/sources/youtube"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/how-is-zig-working-out-after-3-years-and-100k-lines-of-game-code--b61guw8wt","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":"game-development,webassembly,zig","timeRequired":"PT85M","video":{"@type":"VideoObject","name":"How is Zig working out after 3 years and 100k lines of game code?","description":"A game developer shares 3 years of experience writing over 100,000 lines of Zig for a game called Traction Point, covering the everyday development experience,...","thumbnailUrl":"https://i.ytimg.com/vi/HXpUShkr2VQ/sddefault.jpg","uploadDate":"2026-07-09T16:07:47.475Z","duration":"PT85M","url":"https://api.daily.dev/r/b61Guw8Wt","embedUrl":"https://www.youtube.com/embed/HXpUShkr2VQ"}}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"YouTube","item":"https://daily.dev/sources/youtube"},{"@type":"ListItem","position":3,"name":"How is Zig working out after 3 years and 100k lines of game code?"}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/how-is-zig-working-out-after-3-years-and-100k-lines-of-game-code--b61guw8wt#faq","mainEntity":[{"@type":"Question","name":"How does Zig's explicit allocator requirement help implement hot reloading in a game's gameplay code?","acceptedAnswer":{"@type":"Answer","text":"Zig requires every dynamic data structure, like array lists, to receive an allocator explicitly at initialization, so a developer can pass in an allocator managed by the persistent game engine rather than the reloadable gameplay library. Since only the Zig gameplay DLL gets unloaded and reloaded, memory allocated through the engine-controlled allocator survives the reload, avoiding the loss of game object state that would otherwise occur. Developers building hot-reload workflows in Zig can find similar allocator patterns and pitfalls curated on daily.dev."}},{"@type":"Question","name":"Why did Windows support get downgraded from tier one to tier two in Zig 0.16?","acceptedAnswer":{"@type":"Answer","text":"Windows support was downgraded because tier one status now requires the compiler to generate machine code without relying on LLVM, and Zig still depends on LLVM for Windows compilation. Only x86-64 Linux remains tier one. This means Windows builds inherit LLVM's slower compile times, roughly five to ten seconds even for a single value change in debug mode. Anyone weighing Zig for Windows game development can track platform tier changes like this through daily.dev."}},{"@type":"Question","name":"Is Zig's error handling with try and error unions a good fit for gameplay programming?","acceptedAnswer":{"@type":"Answer","text":"It is a mixed fit: errors work well for cases like failed network connections or missing save files where showing a user message makes sense, but in most gameplay code, unrecoverable situations like running out of memory are better handled by panicking immediately rather than propagating an error union upward, since errors can't carry a payload describing where the failure happened, making bugs harder to trace once bubbled through multiple call layers. Developers deciding how to structure error handling in Zig game code can compare real-world trade-offs like these on daily.dev."}}]}
```

