You are viewing an old version of Mach (v0.3) see the latest version here.

Mach

Zig game engine & graphics toolkit

For building high-performance, truly cross-platform, robust & modular games, visualizations, and desktop/mobile GUI apps.

What's new in v0.3?

Built with love, hard-work & Zig

Zig is a general-purpose simple programming language featuring compile-time code execution, blazing-fast compilation speeds, and bare-metal performance.

On your machine in just ~60 seconds

Zero system dependencies to slow you down; only zig is needed, we build and package the few relevant dependencies on our own.

To run on your machine:

$ git clone https://github.com/hexops/mach-core
$ cd mach-core/
$ zig build run-textured-cube
Requires this Zig nightly version | known issues

Effortless cross-compilation

Cross-compile to any OS at the flip of a switch. WebAssembly, Android & iOS coming soon.

$ zig build -Dtarget=x86_64-windows
$ zig build -Dtarget=x86_64-linux-gnu
$ zig build -Dtarget=x86_64-macos
$ zig build -Dtarget=aarch64-macos

First-class Linux support

Linux is a first-class target for us, with Vulkan, OpenGL/GLES fallbacks, support for both X11 and Wayland in the same binary via runtime detection, and gamemode optimization support out of the box.

From mesa drivers-to your experimental compositor (and broken vsync implementation), we'll make it run well.

mach-glfw

Mach core: window+input+GPU

Mach core: Low-level window+input+GPU

Mach core provides a window, input, GPU, and nothing else.

Truly cross-platform, it supports desktop today, WebAssembly (soon) and Mobile (future) using the same unified API.

Today, it is available to use via Zig. Support for other languages is planned in the future via a C ABI.

Powerful, multi-threaded, efficient

The power of Vulkan/DirectX/Metal in a unified, concise, modern graphics API (including GPU compute) by using Google Chrome's WebGPU implementation natively as a graphics abstraction layer.

mach-core handles rendering and input on separate threads, for butter-smooth window resizing and mid-frame input handling should you desire.

Linux gamemode optimizations enabled by default (optional.)

Standalone libraries

Mach additionally provides some of the highest-quality standalone gamedev libraries in the Zig ecosystem, including:


mach-gpu mach-ecs mach-sysaudio mach-sysjs mach-glfw mach-freetype mach-gamemode mach-basisu mach-model3d mach-sysgpu mach-flac mach-opus
Mach

Mach engine (coming soon)

Mach engine is not ready for use yet and is in very early-stages of development.
FAQ: "Can I use Mach to make a simple 2D game?"

Competitive with other engines

Our ultimate aim is for Mach engine to be a full modern engine, with a full GUI editor and all. A custom UI library, rendering engine, physics & more are all in scope and will be built out incrementally over the coming years.

Deeply rooted in modularity

Unlike the monolithic engines of today, we aim for Mach to be deeply modular, data & tooling driven. Essentially, our entity component system will be more opinionated than others and will employ a unique message passing system, which will enable deep editor integration, debug tooling, and more. The ECS will act as a shared integration point for _modules_, which will all be optional, so that you can easily plug-and-play different modules for making UIs, rendering 2D sprites, 3D models, physics, etc.

Roadmap

There is a long road ahead, it's going to require a lot of work to get to where we are going.

We've been working on Mach for ~2 years now, primarily building out the Zig gamedev ecosystem and building foundational packages that we needed for Mach core and the engine. As a result, we've really just broken ground on the engine side of things.

See our roadmap for a general idea of what we're up to today.

Open source, always & forever

Apache or MIT licensed, at your choosing.

There are few things in life I am more passionate about than Mach. I've been working on it double-time for over two years now, and dreaming of it for a decade before that. Today, I am building my first real game using it and I'm excited to explore how much more intuitive gamedev tooling can be.

FOSS is in my roots and I believe we should own our tools, they should empower us-not be part of the 'open source' game which is all too prevelant today (even among 'open source' engines.) Mach needs to be for people like you and me-it needs to genuinely be software you can love.

My dream is one day to live a simple, modest, future earning a living building Mach for you and creating high-quality games for everyone. Please consider sponsoring my work!

- Stephen Gutekanst, BDFL of Mach

Community

GitHub Discord

There's plenty to do, so if you're eager to get involved please join the community, say hello, check out the code and see if you can contribute!

Contributors

Sponsors