Building game development ecosystem for @ziglang!

Overview

If you are new to low-level graphics programming or you would like to learn about some zig-gamedev libraries I recommend starting with intro applications.

zig-gamedev project

This repository contains a collection of sample applications and cross-platform, standalone, composable libraries written in Zig programming language. Project is under active development, see Roadmap and Progress Reports for the details.

To get started on Windows/Linux/Mac try out procedural mesh (wgpu) sample:

(git with Git LFS extension and Zig 0.10.0-dev.2017 (master) or newer is required)

git clone https://github.com/michal-z/zig-gamedev.git
cd zig-gamedev
zig build procedural_mesh_wgpu-run

Some features:

  • Works on Windows, Linux and Mac (sample applications are WIP on Linux and Mac)
  • Zero dependency except Zig compiler (master), git with Git LFS and curl - no Visual Studio, Build Tools, Windows SDK, gcc, dev packages, system headers/libs, cmake, ninja, etc. is needed
  • Building is as easy as running zig build (see: Building)
  • Uses native version of WebGPU API (mach/gpu) for cross-platfrom graphics and DirectX 12 for low-level graphics on Windows
  • Uses some great, carefully selected C/C++ libraries which are seamlessly built by zig cc compiler

Libraries we develop/maintain:

  • zmath - SIMD math library for game developers [cross-platform and standalone]
  • zbullet - Zig bindings and C API for Bullet physics library [cross-platform and standalone]
  • zmesh - loading, generating, processing and optimizing triangle meshes [cross-platform and standalone]
  • znoise - Zig bindings for FastNoiseLite [cross-platform and standalone]
  • zenet - Zig bindings for ENet [cross-platform and standalone]
  • ztracy - support for CPU profiling with Tracy [cross-platform and standalone]

Additionally for Windows applications we provide:

  • zwin32 - Zig bindings for Win32 API [standalone]
  • zd3d12 - helper library for working with DirectX 12 [depends only on zwin32]
  • zxaudio2 - helper library for working with XAudio2 [depends only on zwin32]
  • zpix - support for GPU profiling with PIX [depends only on zwin32]
  • Interop with Direct2D and DirectWrite for high-quality vector graphics and text rendering (optional)

Project vision:

  • Collection of cross-platform, standalone and composable libraries for game developers
  • Written from scratch in Zig or bindings to carefully selected C/C++ code
  • Non-allocating or taking Zig allocator
  • Tested (tests, samples, mini-games)
  • Well maintained

If you like it, please consider supporting me. Thanks!

Sample applications

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

  1. rasterization: This sample application shows how GPU rasterizes triangles in slow motion.

    rasterization

  2. physically based rendering: This sample implements physically based shading and image based lighting to achive realistic looking rendering results.

    physically based rendering

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

    simple raytracer

  4. mesh shader test: This sample shows how to use DirectX 12 Mesh Shader.

    mesh shader test

  5. virtual physics lab: This sample application demonstrates how to use full 3D physics engine in your Zig programs.

    virtual physics lab

  6. audio playback test: This sample demonstrates how to decode .mp3 file using Microsoft Media Foundation and play it back using Windows Audio Session API (WASAPI).

    audio playback test

  7. DirectML convolution test: This sample demonstrates how to perform GPU-accelerated convolution operation using DirectML.

    directml convolution test

Building sample applications

To build all sample applications (assuming zig is in the PATH and Git LFS is installed):

  1. git clone https://github.com/michal-z/zig-gamedev.git
  2. cd zig-gamedev
  3. zig build

Build artifacts will show up in zig-out/bin folder.

zig build <sample_name> will build sample application named <sample_name>.

zig build <sample_name>-run will build and run sample application named <sample_name>.

To list all available sample names run zig build --help and navigate to Steps section.

Zig compiler consists of a single ~60MB .zip file that needs to be downloaded separately. Latest development build of the compiler must be used (master) you can download prebuilt binaries here.

Build options

All sample applications support the following build options:

  • -Drelease-safe=[bool] - Optimizations on and safety on
  • -Drelease-fast=[bool] - Optimizations on and safety off
  • -Denable-tracy=[bool] - Tracy profiler zones enabled
  • -Ddawn-from-source=[bool] - Build Dawn (WebGPU implementation) from source

Addidtional options for Windows applications:

  • -Denable-dx-debug=[bool] - Direct3D 12, Direct2D, DXGI debug layers enabled
  • -Denable-dx-gpu-debug=[bool] - Direct3D 12 GPU-Based Validation enabled (requires -Denable-dx-debug=true)
  • -Denable-pix=[bool] - PIX markers and events enabled

Examples

zig build triangle_wgpu-run -Drelease-fast=true

Requirements

On Windows, project uses DirectX 12 Agility SDK which allows to always use latest DirectX 12 features regardless of Windows version installed (this works from Windows 10 November 2019). In particular, following Windows versions are supported:

  • Windows 10 May 2021 (Build 19043) or newer
  • Windows 10 October 2020 (Build 19042.789+)
  • Windows 10 May 2020 (Build 19041.789+)
  • Windows 10 November 2019 (Build 18363.1350+)

GitHub Sponsors

Thanks to all people who sponsor zig-gamedev project! In particular, these fine folks sponsor zig-gamedev for $25/month or more:

  • mzet (mzet-)
  • Zig Software Foundation (ziglang)
  • Ian (LinuXY)
  • Simon A. Nielsen Knights (tauoverpi)
  • shintales (shintales)
  • Chris Heyes (hazeycode)
Comments
  • MacOS doesn't show imgui interface

    MacOS doesn't show imgui interface

    Hello again Michal,

    I just pulled down zig-gamedev (version 2684288794864ab1f59acd40db576b02b00764c4) on Win10 (with a Vega64 card, bottom left), Arch Linux (R9 380 card, bottom right) and an M1 Mac (Big Sur, top right). Everything seemed to build and run fine at first glance (except the error with tests previously mentioned in https://github.com/michal-z/zig-gamedev/issues/51), but then I clued in to the fact that the MacOS version doesn't have any imgui interface for the wgpu examples. Here is a pic of all three running the triangle example: Zig-GameDev-MacOS-Linux-Win10

    Perhaps the MacOS version shouldn't have the interface and I just missed it in the docs? Or is this a bug on my machine?

    P.S. Also, one small difference I noticed between these three programs is that the Win10 spinning triangles actually stop spinning when I drag the window around...then the spinning starts again after I stop dragging the window around (or even if I just right click on the window header! ). The Arch/Mac triangles continue to spin if I drag the window around. A Win10 quirk with the driver? Not sure...and not a big deal, I am just mentioning it as a curiosity.

    opened by wilsonk 100
  • Samples do not compile

    Samples do not compile

    I have tried using zig 0.9.0 from master but that gave me an error. So I tried zig 0.8.1 and it gave me another error, this one:

    .\build.zig:11:55: error: no member named 'custom' in union 'std.build.InstallDir'
            .{ .source_dir = "content", .install_dir = .{ .custom = "" }, .install_subdir = "bin/content" },
                                                          ^
    
    opened by gonutz 57
  • Can't build `physically_based_rendering_wgpu` on macOS aarch64 with latest zig

    Can't build `physically_based_rendering_wgpu` on macOS aarch64 with latest zig

    I'm not sure what to make of this. Perhaps there are breaking changes between zig 0.10.0-dev.2412 and 0.10.0-dev.2432?

    I'm running this on an M1 MacBook Pro:

    $ which zig
    /opt/homebrew/bin/zig
    
    $ zig version
    0.10.0-dev.2432+22cb69388
    
    $ zig build physically_based_rendering_wgpu-run -Dzgpu-dawn-from-source=true
    physically_based_rendering_wgpu...The following command terminated unexpectedly:
    /opt/homebrew/Cellar/zig/HEAD-22cb693/bin/zig build-exe /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/samples/physically_based_rendering_wgpu/src/physically_based_rendering_wgpu.zig /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/o/a0c8aa40f2e181dae0eeb5eb755e6c16/libglfw.a -lc -lobjc /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/o/21728128ca4896a8d9f2b9fe46c6bd76/libdawn.a /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/o/2b87efb10438e9ae9b25a6dc94173d96/libzgpu.a /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/o/f9eea545a46bb68b7cf9b59731e0da3f/libzmesh.a -lc -lobjc -lc++ -lc -lobjc -lobjc -lc -lobjc -lc -lobjc -lc -lobjc -lc -lobjc -lc++ -lc -lobjc -lobjc -lc -lobjc -lc -lobjc -lc -lc++ --cache-dir /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache --global-cache-dir /Users/garett/.cache/zig --name physically_based_rendering_wgpu --pkg-begin build_options /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/options/KimUQtjc7RFpo30ttlCeCnEVoKTO4Fp3KObMkkFf-lXXItBkl11o3Of7QhylyeSP --pkg-end --pkg-begin zmesh /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/zmesh/src/main.zig --pkg-begin zmesh_options /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/options/WxkzBf3w9kJGY9q5y7SiPj0jvFY2DjkNCi-Ovg_84iimoERP7gmh4g7gb2By0gxe --pkg-end --pkg-end --pkg-begin glfw /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/mach-glfw/src/main.zig --pkg-end --pkg-begin zgpu /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/zgpu/src/zgpu.zig --pkg-begin zgpu_options /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/options/YlIhfB2NyOIjaFu_elfbPcNHrz1bry-eT_AAiCBXWsahD6UwUcWXZUFIetT057fK --pkg-end --pkg-begin glfw /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/mach-glfw/src/main.zig --pkg-end --pkg-end --pkg-begin zmath /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/zmath/src/zmath.zig --pkg-end --pkg-begin zgpu_options /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/options/YlIhfB2NyOIjaFu_elfbPcNHrz1bry-eT_AAiCBXWsahD6UwUcWXZUFIetT057fK --pkg-end --pkg-begin zmesh_options /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/options/WxkzBf3w9kJGY9q5y7SiPj0jvFY2DjkNCi-Ovg_84iimoERP7gmh4g7gb2By0gxe --pkg-end -isystem /Users/garett/Library/Application Support/hexops/sdk-macos-12.0/root/usr/include -I /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/mach-glfw/upstream/glfw/include -I /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/mach-glfw/upstream/vulkan_headers/include -isystem /Users/garett/Library/Application Support/hexops/sdk-macos-12.0/root/usr/include -I /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/mach-gpu-dawn/libs/dawn/out/Debug/gen/include -I /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/mach-gpu-dawn/libs/dawn/include -I /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/mach-gpu-dawn/src/dawn -I /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/zgpu/libs -I /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/libs/zmesh/libs/cgltf -L /Users/garett/Library/Application Support/hexops/sdk-macos-12.0/root/usr/lib -L /Users/garett/Library/Application Support/hexops/sdk-macos-12.0/root/usr/lib -iframework /Users/garett/Library/Application Support/hexops/sdk-macos-12.0/root/System/Library/Frameworks -F /Users/garett/Library/Application Support/hexops/sdk-macos-12.0/root/System/Library/Frameworks -iframework /Users/garett/Library/Application Support/hexops/sdk-macos-12.0/root/System/Library/Frameworks -F /Users/garett/Library/Application Support/hexops/sdk-macos-12.0/root/System/Library/Frameworks -framework CoreFoundation -framework Foundation -framework CoreGraphics -framework QuartzCore -framework Metal -framework IOSurface -framework IOKit -framework CoreServices -framework AppKit --enable-cache 
    error: the following build command failed with exit code 11:
    /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache/o/e8d626cab16e47049ee12462c311d972/build /opt/homebrew/Cellar/zig/HEAD-22cb693/bin/zig /Users/garett/Dropbox/Garett/GitHub/zig-gamedev /Users/garett/Dropbox/Garett/GitHub/zig-gamedev/zig-cache /Users/garett/.cache/zig physically_based_rendering_wgpu-run -Dzgpu-dawn-from-source=true
    
    opened by garettbass 21
  • Undefined symbol _sincosf on an M1 Mac mini with Big Sur installed

    Undefined symbol _sincosf on an M1 Mac mini with Big Sur installed

    Hello Michal,

    Just opening a separate issue from https://github.com/michal-z/zig-gamedev/issues/50, as suggested.

    I am getting the error below when trying to run the tests on my M1 Mac mini (Big Sur) with zig master branch built today (0.10.0-dev.1860+7b090df66):

     wilsonk  ~  zig-gamedev   main  zig build test -Drelease-fast -Ddawn-from-source=true
    All 9 tests passed.
    All 4 tests passed.
    LLVM Emit Object... error(link): undefined reference to symbol '_sincosf'
    error(link):   first referenced in '/Users/wilsonk/zig-gamedev/zig-cache/o/bede7d83f1692d97996a78a4dce04395/test.o'
    thread 2335881 panic: attempt to unwrap error: UndefinedSymbolReference
    /Users/wilsonk/Downloads/zig/src/link/tapi/yaml.zig:59:28: 0x10337fa83 in link.tapi.yaml.Value.asList (zig1)
            if (self != .list) return error.TypeMismatch;
    .
    .
    .
    

    I get the error with or without -Dtarget=aarch64-macos-gnu and in Debug or Release. This seems to be a problem with zig/macos, as per this thread: https://github.com/ziglang/zig/issues/10318

    opened by wilsonk 19
  • cbullet compile failed on linux

    cbullet compile failed on linux

    Hi @michal-z, I'm trying to compile cbullet on linux/x64, got following error:

    cbullet.cpp:628:1: error: static_assert failed due to requirement '(sizeof(btTriangleIndexVertexArray) % 16) == 0' "sizeof(btTriangleIndexVertexArray) is not multiple of 16"
    cbullet.cpp:814:1: error: static_assert failed due to requirement '(sizeof(btRigidBody) % 16) == 0' "sizeof(btRigidBody) is not multiple of 16"
    cbullet.cpp:816:1: error: static_assert failed due to requirement '((sizeof(btRigidBody) + sizeof(btDefaultMotionState)) % 16) == 0' "sizeof(btRigidBody) + sizeof(btDefaultMotionState) is not multiple of 16"
    

    My zig version is latest release 0.9.0.

    opened by Jack-Ji 16
  • Is there currently a way to define how images are presented in zgui?

    Is there currently a way to define how images are presented in zgui?

    Hi!

    Currently I am trying to implement zooming into a project that draws textures using zgui.

    However, when zooming, textures become very blurry. Screen Shot 2022-10-27 at 10 02 45 PM

    Is there a way to, either when drawing using zgui.image() or draw_list.addImage(), use point scaling when drawing the images to keep crisp pixels?

    Thanks for any info!

    opened by foxnne 15
  • executables can't be launched from explorer

    executables can't be launched from explorer

    Looks like the resulting executables can't be launched from Windows explorer. My guess is because they can't find the corresponding assets which live relative to the sample directory.

    I suggest that the samples instead use the executable directory to find the assets. You can use std.fs.selfExePath for this.

    opened by marler8997 14
  • zmath: Make all fns pub for using zmath as a math backend

    zmath: Make all fns pub for using zmath as a math backend

    I'm creating a simple game framework for 2D mobile game. But I found that zmath does not support @Vector2(2, f32).

    There is a solution for fast implemenetation is cos32xN (and friends), but theses fns are private. Can you make its pub?

    Below code encounter error: 'cos32xN' is not marked 'pub':

    pub fn cos(v: anytype) @TypeOf(v) {
        const T = @TypeOf(v);
        return switch (T) {
            f32, types.f32x4, types.f32x4x4 => zmath.cos(v),
            types.f32x2, types.f32x3 => zmath.cos32xN(v),
            else => @compileError("gamefx.math.sin() not implemented for " ++ @typeName(T)),
        };
    }
    
    opened by maihd 13
  • Error when trying to run the example

    Error when trying to run the example

    My current operational system: Windows 10 10.0.22000.1098

    What i tried to run:

    $ git clone https://github.com/michal-z/zig-gamedev.git
    $ cd zig-gamedev
    $ zig build physically_based_rendering_wgpu-run
    

    So then it gives me a error:

    Illegal instruction at address 0x7ff76cfd1010
    0x7ff73157a106 in OpenFile (build.exe.obj)
            .OBJECT_PATH_NOT_FOUND => return error.FileNotFound
    

    Maybe i miss some step to run this example?

    opened by n4skx 13
  • Bindless textures sample

    Bindless textures sample

    Hello there, I've finally understood how to work with bindless textures (or any shader visible descriptor for that matter) and I've put together a small sample to illustrate how it could work in the context of zig-gamedev.

    I've had to make 2 main changes to graphics.zig, both non-breaking hopefully.

    515e43f adds another createGraphicsShaderPipeline* variation that takes in a Root Signature as input. 36994cd adds a PersistentDescriptorHeap that can be reserved upon initialization and that I'm using in the provided sample for all bindless resources.

    I think that the PersistentDescriptorHeap should be more integrated into GraphicsContext or maybe even collapsed into DescriptorHeap.

    I've used Matt Pettineo's chapter and code from Ray Tracing Gems 2 as a guide for this implementation. The DescriptorHeap struct in particular (and associated operations) were really insightful. https://github.com/TheRealMJP/DXRPathTracer/blob/master/SampleFramework12/v1.02/Graphics/GraphicsTypes.h#L38

    I consider this PR an MVP or proof of concept. The API's I've added are not really ergonomic, "bindless mipmaps" are broken and the PersistentDescriptorHeap is not thread-safe.

    Before I go ahead, I'd like to have your thoughts and feedback since I feel like the changes I'm proposing are more "architectural" than a simple API usage sample :)

    Have a great day!

    opened by gmodarelli 13
  • Add zgpu dependency on zpool

    Add zgpu dependency on zpool

    • Set -Dzgpu-dawn-from-source=true on macOS
    • Change obsolete Pkg.path to new Pkg.source in zpool/build.zig
    • First naive attempt to add zgpu dependency on zpool. This does not work, but I don't understand how it should work. Please advise.
    opened by garettbass 12
  • feat(zstbi): add image resizing

    feat(zstbi): add image resizing

    This adds image resizing using the stbi_image_resize library to the zstbi package. I'm not sure if the STBIR_MALLOC and STBIR_FREE implementations are correct since I have no idea what context is supposed to be so I just delegated to zstbiMalloc and zstbiFree respectively. It seems to work fine in my application however, with no issues. I'm not sure either if this is the API wanted for something like this, so it's fine if it's not accepted in this state, just opening so something can get in zstbi since resizing is a quite common operation in my experience...

    opened by yusdacra 0
  • fix(zmath): fix usages of thisDir for relative @src.file

    fix(zmath): fix usages of thisDir for relative @src.file

    At least on NixOS x86_64, thisDir() will return relative paths when invoked from ZLS due to @src().file no longer consistently being an absolute path (likely due to Zig stage1 relying on WASI). This actually leads to ZLS crashing entirely, so zig-gamedev needs to be updated to resolve project-relative paths with cwd().

    Although this solution seems a bit fragile and will be annoying to implement across the whole of zig-gamedev, it seems to work consistently and successfully allows ZLS to read build configuration properly again.

    Note that for general usage of zig build, paths will be generated at comptime as before since @src.file appears to be absolute in those situations.

    Also note that currently I have only fixed the issue for zmath, which is why I have created this PR as a draft.

    opened by Luexa 2
  • zjobs: high cpu usage

    zjobs: high cpu usage

    I'm trying to parallel frontend of my software rasterizer using zjobs. The JobQueue with default configuration occupied at least 80% cpu, even when I'm not scheduling any jobs.

    OS: windows 11 x64 zig: latest master

    opened by Jack-Ji 9
  • Wayland support (via Xwayland)

    Wayland support (via Xwayland)

    Hi there,

    I came across your repo by chance. I love the idea of using zig for games!

    Unfortunately zig build fails for me with the following error:

    ./build.zig:149:60: error: expected type 'std.mem.Allocator', found 'std.zig.CrossTarget'
        const target = (std.zig.system.NativeTargetInfo.detect(cross) catch unreachable).target;
                                                               ^
    /usr/lib/zig/std/mem/Allocator.zig:1:1: note: std.mem.Allocator declared here
    //! The standard memory allocation interface.
    ^
    /usr/lib/zig/std/zig/CrossTarget.zig:1:1: note: std.zig.CrossTarget declared here
    //! Contains all the same data as `Target`, additionally introducing the concept of "the native target".
    ^
    

    Is there a specific zig version I should be using? Or a dependency I may be missing?

    I'm on Arch Linux with a wayland compositor.

    opened by cmvanb 9
  • Implement fast quaternion operations

    Implement fast quaternion operations

    Don't have time to write a proper issue but this seemed interesting :)

    https://twitter.com/FreyaHolmer/status/1596157832688279552

    https://twitter.com/FreyaHolmer/status/1596286428920836096

    Cool stuff by Freya!

    opened by Srekel 0
Releases(v0.5.0)
Owner
Michal Ziulek
Independent gfx programmer. Builds game dev ecosystem for @ziglang. In the past: AMD, EA DICE, Intel.
Michal Ziulek
Kit: a magical, high performance programming language, designed for game development

Kit: a magical, high performance programming language, designed for game development

Kit Programming Language 988 Dec 10, 2022
Texture Packer for Game Development Using MaxRects Algorithm

Overview Texture Packer for Game Development Using MaxRects Algorithm. Note: The game assets used in this example were download from Grassland Tileset

Jeremy HU 60 Dec 8, 2022
Scrollytroller is a crank-based USB controller, initially inteneded for use with Playdate's Pulp web-based game development tool

Scrollytroller Scrollytroller is a crank-based USB controller, initially inteneded for use with Playdate's Pulp web-based game development tool. This

Scott Lawrence 4 Feb 17, 2022
a minimal C++, SDL2, OpenGL abstraction for general game and application development

hept the hept abstraction is a minimal lightweight layer above C++ and SDL dependencies: - SDL2 - C++17 or above - GLM example use: #include "hept.h"

ENDESGA 15 Sep 18, 2022
Building and Executing Position Independent Shellcode from Object Files in Memory

PIC-Privileges Building and Executing Position Independent Shellcode from Object Files in Memory. This is a pingback to the blogpost I wrote at https:

Paranoid Ninja 108 Dec 26, 2022
Typesense is a fast, typo-tolerant search engine for building delightful search experiences.

Fast, typo tolerant, fuzzy search engine for building delightful search experiences ⚡ ??

Typesense 12k Jan 2, 2023
A set of very empty header files that can be used when building apps with Cosmopolitan

cosmo-include A set of very empty header files that can be used when building apps with Cosmopolitan Why? When you build an application with Cosmopoli

null 26 Dec 21, 2022
NightDriverStrip is a source code package for building a flash program that you upload to the ESP32 microcontroller.

NightDriverStrip is a source code package for building a flash program that you upload to the ESP32 microcontroller.

Plummer's Software LLC 631 Dec 28, 2022
Building Netbsd's Amiga port 'loadbsd' tool.

Building Netbsd's Amiga port 'loadbsd' tool. During a netbsd install, I realized the binary Netbsd provided didn't match the functionality described i

Roc Vallès 1 Oct 5, 2021
A sample project for building Zygisk modules

Developing Zygisk Modules This repository hosts a template zygisk module for developers to start developing Zygisk modules. Before developing Zygisk m

John Wu 237 Jan 1, 2023
The c++ micro framework for building web applications based on workflow

wfrest The c++ micro framework for building web applications based on workflow ⌛️ Build Step 1 : install workflow git clne [email protected]:sogou/workfl

Shiyu Yi 539 Jan 3, 2023
Design files and resources for building a wireless N64 controller

wireless-n64-controller This project and its documentation is a Work-In-Progress. I'm still working on writing everything down and working out kinks i

Spencer Fraint 35 Dec 23, 2022
Qtile ISO profile for building Woof OS using `archiso` with zen kernel

iso-profile ISO profile for Woof OS ISO profile for building Woof OS using archiso Building the ISO profile into an ISO If you are on an Arch based sy

Woof OS 0 Jan 27, 2022
A framework for building native Windows apps with React.

React Native for Windows Build native Windows apps with React. See the official React Native website for an introduction to React Native. React Native

Microsoft 15.2k Jan 2, 2023
A framework for building Mobile cross-platform UI

Weex A framework for building Mobile cross-platform UI. Distribution Support Android 4.1 (API 16), iOS 9.0+ and WebKit 534.30+. platform status Androi

Alibaba 18k Jan 9, 2023
SDK for building cross-platform desktop apps in ANSI-C

NAppGUI Cross-Platform C SDK. Build portable desktop applications for Windows, macOS and Linux, using just C. Quick start in Windows Prerequisites Vis

Francisco García Collado 242 Jan 2, 2023
Repository for building and operating REVOLVER: An automatic protein purification system for gravity columns. Developed at the University of Toronto.

REVOLVER: An automated protein purification system This repository contains all the hardware and firmware files to build and operate REVOLVER: an auto

Laboratory for Metabolic Systems Engineering 3 Jun 14, 2022
MyOwnBricks - A library for building your own sensors and devices compatible with the modern LEGO PoweredUp system.

English version (See at the end for the French version) MyOwnBricks MyOwnBricks is a library for building your own sensors and devices compatible with

null 5 Sep 26, 2022
Pipet - c++ library for building lightweight processing pipeline at compile-time for string obfuscation, aes ciphering or whatever you want

Pipet Pipet is a lightweight c++17 headers-only library than can be used to build simple processing pipelines at compile time. Features Compile-time p

C. G. 60 Dec 12, 2022