MichaelFisher1997 edited this page Jan 5, 2026 · 3 revisions

ZigCraft Wiki

Welcome to the ZigCraft documentation wiki - a voxel engine built with Zig and Vulkan.


Overview

ZigCraft is a high-performance voxel engine featuring:

  • Vulkan-based rendering with a clean RHI abstraction
  • Procedural world generation with 21 biomes
  • Dynamic lighting with sky and block light propagation
  • Cascaded shadow maps for realistic shadows
  • Multithreaded chunk processing via job system
  • LOD system for extreme render distances
  • Immediate-mode UI system

Quick Links

Game Content

PageDescription
Block TypesComplete reference of all 40 block types
BiomesAll 21 biomes with climate parameters

Engine Systems

PageDescription
ArchitectureSystem overview and module organization
Engine CoreWindow, time, logging, job system
RenderingRHI, camera, shadows, render graph
World SystemChunks, meshing, LOD
World GenerationTerrain, caves, decorations
Math LibraryVec3, Mat4, AABB, Frustum, Ray
Input SystemKeyboard and mouse handling
UI SystemMenus, fonts, widgets
Game SystemsPlayer, inventory, controls

Development

PageDescription
ContributingCode style and development workflow

Project Structure

src/
├── engine/ # Core engine systems
│ ├── core/ # Window, time, logging, job system
│ ├── graphics/ # RHI, camera, shadows, textures
│ ├── math/ # Vec3, Mat4, AABB, Frustum
│ ├── physics/ # Collision detection
│ ├── input/ # Input handling
│ └── ui/ # Immediate-mode UI
│
├── world/ # Voxel world
│ ├── worldgen/ # Terrain generation
│ ├── chunk.zig # Chunk data structure
│ ├── chunk_mesh.zig # Greedy meshing
│ └── world.zig # World manager
│
└── game/ # Game logic
├── app.zig # Main application
├── player.zig # Player controller
├── inventory.zig # Item storage
└── ui/ # Game UI
libs/ # Local dependencies
├── zig-math/ # Math library
└── zig-noise/ # Noise functions
assets/shaders/vulkan/ # SPIR-V shaders

Getting Started

Prerequisites

The project uses Nix for dependency management. All commands must be wrapped:

nix develop --command <command>

Build Commands

# Build
nix develop --command zig build
# Run
nix develop --command zig build run
# Test
nix develop --command zig build test# Release build
nix develop --command zig build -Doptimize=ReleaseFast
# Format code
nix develop --command zig fmt src/

Features

Rendering

  • Vulkan backend with RHI abstraction
  • Cascaded shadow maps (3 cascades)
  • Procedural sky with day/night cycle
  • Volumetric clouds
  • MSAA anti-aliasing (1x-8x)
  • Anisotropic filtering (up to 16x)

World

  • 16x256x16 chunk size
  • Greedy mesh optimization
  • Multi-level LOD (up to 160 chunks)
  • 40 block types across 21 biomes
  • Worm caves and large caverns
  • Ore generation

Gameplay

  • Physics-based player movement
  • Creative and survival modes
  • 36-slot inventory system
  • Block breaking and placing
  • World map overlay

Controls

KeyAction
W/A/S/DMovement
SPACEJump / Fly up
SHIFTFly down
ESCPause menu
IOpen inventory
MOpen map
1-9Select hotbar slot
Left ClickBreak block
Right ClickPlace block

See Game Systems for full controls reference.


Last updated: January 2026

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
MichaelFisher1997 edited this page Jan 5, 2026 · 3 revisions

ZigCraft Wiki

Welcome to the ZigCraft documentation wiki - a voxel engine built with Zig and Vulkan.


Overview

ZigCraft is a high-performance voxel engine featuring:

  • Vulkan-based rendering with a clean RHI abstraction
  • Procedural world generation with 21 biomes
  • Dynamic lighting with sky and block light propagation
  • Cascaded shadow maps for realistic shadows
  • Multithreaded chunk processing via job system
  • LOD system for extreme render distances
  • Immediate-mode UI system

Quick Links

Game Content

PageDescription
Block TypesComplete reference of all 40 block types
BiomesAll 21 biomes with climate parameters

Engine Systems

PageDescription
ArchitectureSystem overview and module organization
Engine CoreWindow, time, logging, job system
RenderingRHI, camera, shadows, render graph
World SystemChunks, meshing, LOD
World GenerationTerrain, caves, decorations
Math LibraryVec3, Mat4, AABB, Frustum, Ray
Input SystemKeyboard and mouse handling
UI SystemMenus, fonts, widgets
Game SystemsPlayer, inventory, controls

Development

PageDescription
ContributingCode style and development workflow

Project Structure

src/
├── engine/ # Core engine systems
│ ├── core/ # Window, time, logging, job system
│ ├── graphics/ # RHI, camera, shadows, textures
│ ├── math/ # Vec3, Mat4, AABB, Frustum
│ ├── physics/ # Collision detection
│ ├── input/ # Input handling
│ └── ui/ # Immediate-mode UI
│
├── world/ # Voxel world
│ ├── worldgen/ # Terrain generation
│ ├── chunk.zig # Chunk data structure
│ ├── chunk_mesh.zig # Greedy meshing
│ └── world.zig # World manager
│
└── game/ # Game logic
├── app.zig # Main application
├── player.zig # Player controller
├── inventory.zig # Item storage
└── ui/ # Game UI
libs/ # Local dependencies
├── zig-math/ # Math library
└── zig-noise/ # Noise functions
assets/shaders/vulkan/ # SPIR-V shaders

Getting Started

Prerequisites

The project uses Nix for dependency management. All commands must be wrapped:

nix develop --command <command>

Build Commands

# Build
nix develop --command zig build
# Run
nix develop --command zig build run
# Test
nix develop --command zig build test# Release build
nix develop --command zig build -Doptimize=ReleaseFast
# Format code
nix develop --command zig fmt src/

Features

Rendering

  • Vulkan backend with RHI abstraction
  • Cascaded shadow maps (3 cascades)
  • Procedural sky with day/night cycle
  • Volumetric clouds
  • MSAA anti-aliasing (1x-8x)
  • Anisotropic filtering (up to 16x)

World

  • 16x256x16 chunk size
  • Greedy mesh optimization
  • Multi-level LOD (up to 160 chunks)
  • 40 block types across 21 biomes
  • Worm caves and large caverns
  • Ore generation

Gameplay

  • Physics-based player movement
  • Creative and survival modes
  • 36-slot inventory system
  • Block breaking and placing
  • World map overlay

Controls

KeyAction
W/A/S/DMovement
SPACEJump / Fly up
SHIFTFly down
ESCPause menu
IOpen inventory
MOpen map
1-9Select hotbar slot
Left ClickBreak block
Right ClickPlace block

See Game Systems for full controls reference.


Last updated: January 2026

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
MichaelFisher1997 edited this page Jan 5, 2026 · 3 revisions

ZigCraft Wiki

Welcome to the ZigCraft documentation wiki - a voxel engine built with Zig and Vulkan.


Overview

ZigCraft is a high-performance voxel engine featuring:

  • Vulkan-based rendering with a clean RHI abstraction
  • Procedural world generation with 21 biomes
  • Dynamic lighting with sky and block light propagation
  • Cascaded shadow maps for realistic shadows
  • Multithreaded chunk processing via job system
  • LOD system for extreme render distances
  • Immediate-mode UI system

Quick Links

Game Content

PageDescription
Block TypesComplete reference of all 40 block types
BiomesAll 21 biomes with climate parameters

Engine Systems

PageDescription
ArchitectureSystem overview and module organization
Engine CoreWindow, time, logging, job system
RenderingRHI, camera, shadows, render graph
World SystemChunks, meshing, LOD
World GenerationTerrain, caves, decorations
Math LibraryVec3, Mat4, AABB, Frustum, Ray
Input SystemKeyboard and mouse handling
UI SystemMenus, fonts, widgets
Game SystemsPlayer, inventory, controls

Development

PageDescription
ContributingCode style and development workflow

Project Structure

src/
├── engine/ # Core engine systems
│ ├── core/ # Window, time, logging, job system
│ ├── graphics/ # RHI, camera, shadows, textures
│ ├── math/ # Vec3, Mat4, AABB, Frustum
│ ├── physics/ # Collision detection
│ ├── input/ # Input handling
│ └── ui/ # Immediate-mode UI
│
├── world/ # Voxel world
│ ├── worldgen/ # Terrain generation
│ ├── chunk.zig # Chunk data structure
│ ├── chunk_mesh.zig # Greedy meshing
│ └── world.zig # World manager
│
└── game/ # Game logic
├── app.zig # Main application
├── player.zig # Player controller
├── inventory.zig # Item storage
└── ui/ # Game UI
libs/ # Local dependencies
├── zig-math/ # Math library
└── zig-noise/ # Noise functions
assets/shaders/vulkan/ # SPIR-V shaders

Getting Started

Prerequisites

The project uses Nix for dependency management. All commands must be wrapped:

nix develop --command <command>

Build Commands

# Build
nix develop --command zig build
# Run
nix develop --command zig build run
# Test
nix develop --command zig build test# Release build
nix develop --command zig build -Doptimize=ReleaseFast
# Format code
nix develop --command zig fmt src/

Features

Rendering

  • Vulkan backend with RHI abstraction
  • Cascaded shadow maps (3 cascades)
  • Procedural sky with day/night cycle
  • Volumetric clouds
  • MSAA anti-aliasing (1x-8x)
  • Anisotropic filtering (up to 16x)

World

  • 16x256x16 chunk size
  • Greedy mesh optimization
  • Multi-level LOD (up to 160 chunks)
  • 40 block types across 21 biomes
  • Worm caves and large caverns
  • Ore generation

Gameplay

  • Physics-based player movement
  • Creative and survival modes
  • 36-slot inventory system
  • Block breaking and placing
  • World map overlay

Controls

KeyAction
W/A/S/DMovement
SPACEJump / Fly up
SHIFTFly down
ESCPause menu
IOpen inventory
MOpen map
1-9Select hotbar slot
Left ClickBreak block
Right ClickPlace block

See Game Systems for full controls reference.


Last updated: January 2026

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
MichaelFisher1997 edited this page Jan 5, 2026 · 3 revisions

ZigCraft Wiki

Welcome to the ZigCraft documentation wiki - a voxel engine built with Zig and Vulkan.


Overview

ZigCraft is a high-performance voxel engine featuring:

  • Vulkan-based rendering with a clean RHI abstraction
  • Procedural world generation with 21 biomes
  • Dynamic lighting with sky and block light propagation
  • Cascaded shadow maps for realistic shadows
  • Multithreaded chunk processing via job system
  • LOD system for extreme render distances
  • Immediate-mode UI system

Quick Links

Game Content

PageDescription
Block TypesComplete reference of all 40 block types
BiomesAll 21 biomes with climate parameters

Engine Systems

PageDescription
ArchitectureSystem overview and module organization
Engine CoreWindow, time, logging, job system
RenderingRHI, camera, shadows, render graph
World SystemChunks, meshing, LOD
World GenerationTerrain, caves, decorations
Math LibraryVec3, Mat4, AABB, Frustum, Ray
Input SystemKeyboard and mouse handling
UI SystemMenus, fonts, widgets
Game SystemsPlayer, inventory, controls

Development

PageDescription
ContributingCode style and development workflow

Project Structure

src/
├── engine/ # Core engine systems
│ ├── core/ # Window, time, logging, job system
│ ├── graphics/ # RHI, camera, shadows, textures
│ ├── math/ # Vec3, Mat4, AABB, Frustum
│ ├── physics/ # Collision detection
│ ├── input/ # Input handling
│ └── ui/ # Immediate-mode UI
│
├── world/ # Voxel world
│ ├── worldgen/ # Terrain generation
│ ├── chunk.zig # Chunk data structure
│ ├── chunk_mesh.zig # Greedy meshing
│ └── world.zig # World manager
│
└── game/ # Game logic
├── app.zig # Main application
├── player.zig # Player controller
├── inventory.zig # Item storage
└── ui/ # Game UI
libs/ # Local dependencies
├── zig-math/ # Math library
└── zig-noise/ # Noise functions
assets/shaders/vulkan/ # SPIR-V shaders

Getting Started

Prerequisites

The project uses Nix for dependency management. All commands must be wrapped:

nix develop --command <command>

Build Commands

# Build
nix develop --command zig build
# Run
nix develop --command zig build run
# Test
nix develop --command zig build test# Release build
nix develop --command zig build -Doptimize=ReleaseFast
# Format code
nix develop --command zig fmt src/

Features

Rendering

  • Vulkan backend with RHI abstraction
  • Cascaded shadow maps (3 cascades)
  • Procedural sky with day/night cycle
  • Volumetric clouds
  • MSAA anti-aliasing (1x-8x)
  • Anisotropic filtering (up to 16x)

World

  • 16x256x16 chunk size
  • Greedy mesh optimization
  • Multi-level LOD (up to 160 chunks)
  • 40 block types across 21 biomes
  • Worm caves and large caverns
  • Ore generation

Gameplay

  • Physics-based player movement
  • Creative and survival modes
  • 36-slot inventory system
  • Block breaking and placing
  • World map overlay

Controls

KeyAction
W/A/S/DMovement
SPACEJump / Fly up
SHIFTFly down
ESCPause menu
IOpen inventory
MOpen map
1-9Select hotbar slot
Left ClickBreak block
Right ClickPlace block

See Game Systems for full controls reference.


Last updated: January 2026

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
MichaelFisher1997 edited this page Jan 5, 2026 · 3 revisions

ZigCraft Wiki

Welcome to the ZigCraft documentation wiki - a voxel engine built with Zig and Vulkan.


Overview

ZigCraft is a high-performance voxel engine featuring:

  • Vulkan-based rendering with a clean RHI abstraction
  • Procedural world generation with 21 biomes
  • Dynamic lighting with sky and block light propagation
  • Cascaded shadow maps for realistic shadows
  • Multithreaded chunk processing via job system
  • LOD system for extreme render distances
  • Immediate-mode UI system

Quick Links

Game Content

PageDescription
Block TypesComplete reference of all 40 block types
BiomesAll 21 biomes with climate parameters

Engine Systems

PageDescription
ArchitectureSystem overview and module organization
Engine CoreWindow, time, logging, job system
RenderingRHI, camera, shadows, render graph
World SystemChunks, meshing, LOD
World GenerationTerrain, caves, decorations
Math LibraryVec3, Mat4, AABB, Frustum, Ray
Input SystemKeyboard and mouse handling
UI SystemMenus, fonts, widgets
Game SystemsPlayer, inventory, controls

Development

PageDescription
ContributingCode style and development workflow

Project Structure

src/
├── engine/ # Core engine systems
│ ├── core/ # Window, time, logging, job system
│ ├── graphics/ # RHI, camera, shadows, textures
│ ├── math/ # Vec3, Mat4, AABB, Frustum
│ ├── physics/ # Collision detection
│ ├── input/ # Input handling
│ └── ui/ # Immediate-mode UI
│
├── world/ # Voxel world
│ ├── worldgen/ # Terrain generation
│ ├── chunk.zig # Chunk data structure
│ ├── chunk_mesh.zig # Greedy meshing
│ └── world.zig # World manager
│
└── game/ # Game logic
├── app.zig # Main application
├── player.zig # Player controller
├── inventory.zig # Item storage
└── ui/ # Game UI
libs/ # Local dependencies
├── zig-math/ # Math library
└── zig-noise/ # Noise functions
assets/shaders/vulkan/ # SPIR-V shaders

Getting Started

Prerequisites

The project uses Nix for dependency management. All commands must be wrapped:

nix develop --command <command>

Build Commands

# Build
nix develop --command zig build
# Run
nix develop --command zig build run
# Test
nix develop --command zig build test# Release build
nix develop --command zig build -Doptimize=ReleaseFast
# Format code
nix develop --command zig fmt src/

Features

Rendering

  • Vulkan backend with RHI abstraction
  • Cascaded shadow maps (3 cascades)
  • Procedural sky with day/night cycle
  • Volumetric clouds
  • MSAA anti-aliasing (1x-8x)
  • Anisotropic filtering (up to 16x)

World

  • 16x256x16 chunk size
  • Greedy mesh optimization
  • Multi-level LOD (up to 160 chunks)
  • 40 block types across 21 biomes
  • Worm caves and large caverns
  • Ore generation

Gameplay

  • Physics-based player movement
  • Creative and survival modes
  • 36-slot inventory system
  • Block breaking and placing
  • World map overlay

Controls

KeyAction
W/A/S/DMovement
SPACEJump / Fly up
SHIFTFly down
ESCPause menu
IOpen inventory
MOpen map
1-9Select hotbar slot
Left ClickBreak block
Right ClickPlace block

See Game Systems for full controls reference.


Last updated: January 2026

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
MichaelFisher1997 edited this page Jan 5, 2026 · 3 revisions

ZigCraft Wiki

Welcome to the ZigCraft documentation wiki - a voxel engine built with Zig and Vulkan.


Overview

ZigCraft is a high-performance voxel engine featuring:

  • Vulkan-based rendering with a clean RHI abstraction
  • Procedural world generation with 21 biomes
  • Dynamic lighting with sky and block light propagation
  • Cascaded shadow maps for realistic shadows
  • Multithreaded chunk processing via job system
  • LOD system for extreme render distances
  • Immediate-mode UI system

Quick Links

Game Content

PageDescription
Block TypesComplete reference of all 40 block types
BiomesAll 21 biomes with climate parameters

Engine Systems

PageDescription
ArchitectureSystem overview and module organization
Engine CoreWindow, time, logging, job system
RenderingRHI, camera, shadows, render graph
World SystemChunks, meshing, LOD
World GenerationTerrain, caves, decorations
Math LibraryVec3, Mat4, AABB, Frustum, Ray
Input SystemKeyboard and mouse handling
UI SystemMenus, fonts, widgets
Game SystemsPlayer, inventory, controls

Development

PageDescription
ContributingCode style and development workflow

Project Structure

src/
├── engine/ # Core engine systems
│ ├── core/ # Window, time, logging, job system
│ ├── graphics/ # RHI, camera, shadows, textures
│ ├── math/ # Vec3, Mat4, AABB, Frustum
│ ├── physics/ # Collision detection
│ ├── input/ # Input handling
│ └── ui/ # Immediate-mode UI
│
├── world/ # Voxel world
│ ├── worldgen/ # Terrain generation
│ ├── chunk.zig # Chunk data structure
│ ├── chunk_mesh.zig # Greedy meshing
│ └── world.zig # World manager
│
└── game/ # Game logic
├── app.zig # Main application
├── player.zig # Player controller
├── inventory.zig # Item storage
└── ui/ # Game UI
libs/ # Local dependencies
├── zig-math/ # Math library
└── zig-noise/ # Noise functions
assets/shaders/vulkan/ # SPIR-V shaders

Getting Started

Prerequisites

The project uses Nix for dependency management. All commands must be wrapped:

nix develop --command <command>

Build Commands

# Build
nix develop --command zig build
# Run
nix develop --command zig build run
# Test
nix develop --command zig build test# Release build
nix develop --command zig build -Doptimize=ReleaseFast
# Format code
nix develop --command zig fmt src/

Features

Rendering

  • Vulkan backend with RHI abstraction
  • Cascaded shadow maps (3 cascades)
  • Procedural sky with day/night cycle
  • Volumetric clouds
  • MSAA anti-aliasing (1x-8x)
  • Anisotropic filtering (up to 16x)

World

  • 16x256x16 chunk size
  • Greedy mesh optimization
  • Multi-level LOD (up to 160 chunks)
  • 40 block types across 21 biomes
  • Worm caves and large caverns
  • Ore generation

Gameplay

  • Physics-based player movement
  • Creative and survival modes
  • 36-slot inventory system
  • Block breaking and placing
  • World map overlay

Controls

KeyAction
W/A/S/DMovement
SPACEJump / Fly up
SHIFTFly down
ESCPause menu
IOpen inventory
MOpen map
1-9Select hotbar slot
Left ClickBreak block
Right ClickPlace block

See Game Systems for full controls reference.


Last updated: January 2026

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
MichaelFisher1997 edited this page Jan 5, 2026 · 3 revisions

ZigCraft Wiki

Welcome to the ZigCraft documentation wiki - a voxel engine built with Zig and Vulkan.


Overview

ZigCraft is a high-performance voxel engine featuring:

  • Vulkan-based rendering with a clean RHI abstraction
  • Procedural world generation with 21 biomes
  • Dynamic lighting with sky and block light propagation
  • Cascaded shadow maps for realistic shadows
  • Multithreaded chunk processing via job system
  • LOD system for extreme render distances
  • Immediate-mode UI system

Quick Links

Game Content

PageDescription
Block TypesComplete reference of all 40 block types
BiomesAll 21 biomes with climate parameters

Engine Systems

PageDescription
ArchitectureSystem overview and module organization
Engine CoreWindow, time, logging, job system
RenderingRHI, camera, shadows, render graph
World SystemChunks, meshing, LOD
World GenerationTerrain, caves, decorations
Math LibraryVec3, Mat4, AABB, Frustum, Ray
Input SystemKeyboard and mouse handling
UI SystemMenus, fonts, widgets
Game SystemsPlayer, inventory, controls

Development

PageDescription
ContributingCode style and development workflow

Project Structure

src/
├── engine/ # Core engine systems
│ ├── core/ # Window, time, logging, job system
│ ├── graphics/ # RHI, camera, shadows, textures
│ ├── math/ # Vec3, Mat4, AABB, Frustum
│ ├── physics/ # Collision detection
│ ├── input/ # Input handling
│ └── ui/ # Immediate-mode UI
│
├── world/ # Voxel world
│ ├── worldgen/ # Terrain generation
│ ├── chunk.zig # Chunk data structure
│ ├── chunk_mesh.zig # Greedy meshing
│ └── world.zig # World manager
│
└── game/ # Game logic
├── app.zig # Main application
├── player.zig # Player controller
├── inventory.zig # Item storage
└── ui/ # Game UI
libs/ # Local dependencies
├── zig-math/ # Math library
└── zig-noise/ # Noise functions
assets/shaders/vulkan/ # SPIR-V shaders

Getting Started

Prerequisites

The project uses Nix for dependency management. All commands must be wrapped:

nix develop --command <command>

Build Commands

# Build
nix develop --command zig build
# Run
nix develop --command zig build run
# Test
nix develop --command zig build test# Release build
nix develop --command zig build -Doptimize=ReleaseFast
# Format code
nix develop --command zig fmt src/

Features

Rendering

  • Vulkan backend with RHI abstraction
  • Cascaded shadow maps (3 cascades)
  • Procedural sky with day/night cycle
  • Volumetric clouds
  • MSAA anti-aliasing (1x-8x)
  • Anisotropic filtering (up to 16x)

World

  • 16x256x16 chunk size
  • Greedy mesh optimization
  • Multi-level LOD (up to 160 chunks)
  • 40 block types across 21 biomes
  • Worm caves and large caverns
  • Ore generation

Gameplay

  • Physics-based player movement
  • Creative and survival modes
  • 36-slot inventory system
  • Block breaking and placing
  • World map overlay

Controls

KeyAction
W/A/S/DMovement
SPACEJump / Fly up
SHIFTFly down
ESCPause menu
IOpen inventory
MOpen map
1-9Select hotbar slot
Left ClickBreak block
Right ClickPlace block

See Game Systems for full controls reference.


Last updated: January 2026

Clone this wiki locally

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
MichaelFisher1997 edited this page Jan 5, 2026 · 3 revisions

ZigCraft Wiki

Welcome to the ZigCraft documentation wiki - a voxel engine built with Zig and Vulkan.


Overview

ZigCraft is a high-performance voxel engine featuring:

  • Vulkan-based rendering with a clean RHI abstraction
  • Procedural world generation with 21 biomes
  • Dynamic lighting with sky and block light propagation
  • Cascaded shadow maps for realistic shadows
  • Multithreaded chunk processing via job system
  • LOD system for extreme render distances
  • Immediate-mode UI system

Quick Links

Game Content

PageDescription
Block TypesComplete reference of all 40 block types
BiomesAll 21 biomes with climate parameters

Engine Systems

PageDescription
ArchitectureSystem overview and module organization
Engine CoreWindow, time, logging, job system
RenderingRHI, camera, shadows, render graph
World SystemChunks, meshing, LOD
World GenerationTerrain, caves, decorations
Math LibraryVec3, Mat4, AABB, Frustum, Ray
Input SystemKeyboard and mouse handling
UI SystemMenus, fonts, widgets
Game SystemsPlayer, inventory, controls

Development

PageDescription
ContributingCode style and development workflow

Project Structure

src/
├── engine/ # Core engine systems
│ ├── core/ # Window, time, logging, job system
│ ├── graphics/ # RHI, camera, shadows, textures
│ ├── math/ # Vec3, Mat4, AABB, Frustum
│ ├── physics/ # Collision detection
│ ├── input/ # Input handling
│ └── ui/ # Immediate-mode UI
│
├── world/ # Voxel world
│ ├── worldgen/ # Terrain generation
│ ├── chunk.zig # Chunk data structure
│ ├── chunk_mesh.zig # Greedy meshing
│ └── world.zig # World manager
│
└── game/ # Game logic
├── app.zig # Main application
├── player.zig # Player controller
├── inventory.zig # Item storage
└── ui/ # Game UI
libs/ # Local dependencies
├── zig-math/ # Math library
└── zig-noise/ # Noise functions
assets/shaders/vulkan/ # SPIR-V shaders

Getting Started

Prerequisites

The project uses Nix for dependency management. All commands must be wrapped:

nix develop --command <command>

Build Commands

# Build
nix develop --command zig build
# Run
nix develop --command zig build run
# Test
nix develop --command zig build test# Release build
nix develop --command zig build -Doptimize=ReleaseFast
# Format code
nix develop --command zig fmt src/

Features

Rendering

  • Vulkan backend with RHI abstraction
  • Cascaded shadow maps (3 cascades)
  • Procedural sky with day/night cycle
  • Volumetric clouds
  • MSAA anti-aliasing (1x-8x)
  • Anisotropic filtering (up to 16x)

World

  • 16x256x16 chunk size
  • Greedy mesh optimization
  • Multi-level LOD (up to 160 chunks)
  • 40 block types across 21 biomes
  • Worm caves and large caverns
  • Ore generation

Gameplay

  • Physics-based player movement
  • Creative and survival modes
  • 36-slot inventory system
  • Block breaking and placing
  • World map overlay

Controls

KeyAction
W/A/S/DMovement
SPACEJump / Fly up
SHIFTFly down
ESCPause menu
IOpen inventory
MOpen map
1-9Select hotbar slot
Left ClickBreak block
Right ClickPlace block

See Game Systems for full controls reference.


Last updated: January 2026

Clone this wiki locally