diff --git a/README.md b/README.md index 0ced01c3..76276dbe 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,44 @@ -Mach - Game engine & graphics toolkit for the future +
Mach is still early stages - see what we have today and stay tuned
-

Learn more at hexops.com/mach

+# Mach: game engine & graphics toolkit for the future + +Mach is a game engine & graphics toolkit written in [Zig](https://ziglang.org/) for the future: + +* Data-driven, tooling oriented +* Composable +* Competitive with Unity and Unreal in spirit (a fully fledged editor, etc.) + +boids demo + +## Cross-platform graphics in ~60 seconds + +```sh +git clone https://github.com/hexops/mach +cd mach/ +zig build run-example-boids +``` + +Cross-platform graphics, a unified shader language & compute shaders. + +(Requires [zig 0.10.x](https://ziglang.org/) | [known issues](https://github.com/hexops/mach/blob/main/doc/known-issues.md#known-issues)) + + ## Join the conversation -Our community exists [on Matrix chat](https://matrix.to/#/#hexops:matrix.org), join in and help build the future of game engines & graphics in Zig! +Join us [on Matrix chat](https://matrix.to/#/#hexops:matrix.org) in building the future of game engines & graphics in Zig! -You can also follow [@machengine on Twitter](https://twitter.com/machengine) for updates. +Follow [@machengine on Twitter](https://twitter.com/machengine) for updates. -## ⚠️ in-development ⚠️ +Contributors are very welcome! There are lots of places you can help out with little knowledge, so feel free to reach out! -Under heavy development, not ready for use currently. +## Learn more: [machengine.org](https://machengine.org) + +[![](https://user-images.githubusercontent.com/3173176/163927590-6a28d30c-6955-4e9f-9a65-88095aa67299.png)](https://machengine.org) ## Supported platforms -Mach is still incredibly early stages, so far we have support for building from the following OS to the following targets: +Mach is still early stages, so far we have support for building from the following OS to the following targets: | Building for | From macOS x86_64 | From macOS M1/aarch64 | From Linux x86_64 | From Windows x86_64 | |------------------|-------------------|-----------------------|-------------------|---------------------| @@ -30,19 +54,16 @@ Mach is still incredibly early stages, so far we have support for building from * 🏃 Planned or in progress. * ⚠️ Implemented, but has known issues (e.g. bugs in Zig.) -## Subrepositories / projects +## Libraries -Whether you're interested in using all of Mach, or just some parts of it, you get to choose. -Our libraries all aim to have the same zero-fuss installation, cross compilation, and platform -support: +Mach has many libraries you can use for game development in Zig - you don't have to use the entire engine. All our libraries aim to have the same zero-fuss installation, cross compilation, and platform support: * [mach-glfw](https://github.com/hexops/mach-glfw): Ziggified GLFW bindings with 100% API coverage +* [mach-gpu-dawn](https://github.com/hexops/mach-gpu-dawn): Google's Dawn WebGPU implementation, cross-compiled with Zig into a single static library +* [mach-system-sdk](https://github.com/hexops/mach-system-sdk): More libraries for cross-compilation with Zig ## Contributing -Mach is maintained as a monorepo. When changed are merged to this repository, we use some git fu to pick out the commits to subdirectories and push them ot sub-repositories. For example, commits to the `glfw/` directory also get pushed to the separate [mach-glfw](https://github.com/hexops/mach-glfw) repository after being merged here. +Mach is maintained as a monorepo. When changed are merged to this repository, we use some git-fu to pick out the commits to subdirectories and push them ot sub-repositories all automagically. Changes to the `glfw/` directory in this repository get pushed to the separate [mach-glfw](https://github.com/hexops/mach-glfw) repository automagically after being merged here, for example. -There are only two requirements: - -1. Pull requests to sub-repositories must be sent to this monorepo, not to the sub-repository itself - to avoid some annoying merge conflicts that can arise. -2. Individual commits may not change multiple sub-repositories at the same time (e.g. a commit to `glfw/` cannot also include changes to `gpu/`, to avoid confusion.) +Please prefix commits / pull requests with the project name (`glfw: fix an issue`, `gpu: fix an issue`, `examples: fix an issue`, etc.) and if possible only one project per commit. If you don't know how to do this, no worries, we can help!