Skip to content

Latest commit

 

History

History
136 lines (93 loc) · 11.2 KB

README.md

File metadata and controls

136 lines (93 loc) · 11.2 KB

Libraries - Getting Started - Sample applications - Others using zig-gamedev

We build game development ecosystem for Zig programming language, every day since July 2021. Please consider supporting the project. We create:

Vision

  • Very modular "toolbox of libraries", user can use only the components she needs
  • Just Zig is required to build on Windows, macOS and Linux - no Visual Studio, Build Tools, Windows SDK, gcc, dev packages, system headers/libs, cmake, ninja, etc. is needed
  • Building is as easy as zig build
  • Libraries are written from scratch in Zig or provide Ziggified bindings for carefully selected C/C++ libraries
  • Uses native wgpu implementation (Dawn) or OpenGL for cross-platform graphics and DirectX 12 for low-level graphics on Windows

Getting Started

Download the latest archive or clone/submodule with Git.

Note: If using Git then you will need Git LFS to be installed.

Get Zig

Our main branch is currenly tracking Zig 0.13.0-dev.351+64ef45eb0. Or you can use the unstable zig-0.14.0 branch.

zigup is recommended for managing compiler versions. To switch to the compiler version after branch checkout:

zigup $(< .zigversion)

Alternatively, you can download and install manually using the links below:

OS/Arch Download link
Windows x86_64 zig-windows-x86_64-0.13.0-dev.351+64ef45eb0.zip
Linux x86_64 zig-linux-x86_64-0.13.0-dev.351+64ef45eb0.tar.xz
macOS x86_64 zig-macos-x86_64-0.13.0-dev.351+64ef45eb0.tar.xz
macOS aarch64 zig-macos-aarch64-0.13.0-dev.351+64ef45eb0.tar.xz

Build and run the Samples

To get started on Windows/Linux/macOS try out physically based rendering (wgpu) sample:

zig build physically_based_rendering_wgpu-run

To get a list of all available build steps:

zig build -l

Libraries

Note: Libs are being migrated from libs/ folder in this repo to each their own repository under the zig-gamedev GitHub organisation. See migration tracking PR.

Library Description
zaudio Cross-platform audio using miniaudio
zbullet Build package, C API and bindings for Bullet physics
zd3d12 Helper library for DirectX 12
zflecs Build package and bindings for flecs ECS
zemscripten Build package and shims for Emscripten emsdk
zglfw Build package & bindings for GLFW
zgpu Small helper library built on top of Dawn native WebGPU implementation
zgui Build package and bindings for Dear Imgui, Test engine, ImPlot, ImGuizmo and imgui-node-editor
zjobs Generic job queue implementation
zmath SIMD math library for game developers
zmesh Loading, generating, processing and optimizing triangle meshes
znoise Build package & bindings for FastNoiseLite
zopengl OpenGL loader (supports 4.2 Core Profile and ES 2.0 Profile)
zopenvr Bindings for OpenVR
zphysics Build package, C API and bindings for Jolt Physics
zpix Support for GPU profiling with PIX for Windows
zpool Generic pool & handle implementation
zsdl Bindings for SDL2 and SDL3
zstbi Image reading, writing and resizing with stb libraries
ztracy Support for CPU profiling with Tracy
zwindows Windows development SDK for Zig game developers

Sample applications (native wgpu)

Some of the sample applications are listed below. More can be found in samples directory.

  1. physically based rendering (wgpu): This sample implements physically-based rendering (PBR) and image-based lighting (IBL) to achive realistic looking rendering results.
    zig build physically_based_rendering_wgpu-run

    physically based rendering (wgpu)

  2. audio experiments (wgpu): This sample lets the user experiment with audio and observe data that feeds the hardware.
    zig build audio_experiments_wgpu-run

    audio experiments (wgpu)

  3. bullet physics test (wgpu): This sample application demonstrates how to use full 3D physics engine in your Zig programs.
    zig build bullet_physics_test_wgpu-run

    bullet physics test (wgpu)

  4. procedural mesh (wgpu): This sample shows how to efficiently draw several procedurally generated meshes.
    zig build procedural_mesh_wgpu-run

    procedural mesh (wgpu)

  5. gui test (wgpu): This sample shows how to use our zgui library.
    zig build gui_test_wgpu-run

    gui test (wgpu)

Sample applications (DirectX 12)

Some of the sample applications are listed below. More can be found in samples directory. They can be built and run on Windows and Linux (Wine + VKD3D-Proton 2.8+):

  1. bindless: This sample implements physically based shading and image based lighting to achieve realistic looking rendering results. It uses bindless textures and HLSL 6.6 dynamic resources.
    zig build bindless-run

    bindless

  2. rasterization: This sample application shows how GPU rasterizes triangles in slow motion.
    zig build rasterization-run

    rasterization

  3. simple raytracer: This sample implements basic hybrid renderer. It uses rasterization to resolve primary rays and raytracing (DXR) for shadow rays.
    zig build simple_raytracer-run

    simple raytracer

  4. mesh shader test: This sample shows how to use DirectX 12 Mesh Shader.
    zig build mesh_shader_test-run

    mesh shader test

Others using zig-gamedev

  • Tides of Revival - First-person, open-world, fantasy RPG being developed in the open
  • Markets - Visually simulate markets of basic consumers and producers
  • krateroid - 3D strategy game
  • blokens - Voxel game
  • Delve Framework - Simple game framework for making games with Lua
  • jok - A minimal 2D/3D game framework for Zig
  • Aftersun - Top-down 2D RPG
  • Pixi - Pixel art editor made with Zig