Awesome
Embark Rust Ecosystem
High-level tracking and discussions about improving Rust and the Rust ecosystem for our game development use cases at Embark.
Check out the Issues for active topics. And our embark.dev open source portal.
Open Source
Open source Rust projects we've created so far and are actively using and maintaining:
Name | Description | Crates.io |
---|---|---|
π ash-molten | Statically linked MoltenVK for Vulkan on Mac using Ash | |
π· buildkite-jobify | Kubekite, but in Rust, using configuration from your repos | |
π cargo-about | Cargo plugin to generate list of all licenses for a crate | |
β cargo-deny | Cargo plugin to help you manage large dependency graphs | |
π cargo-fetcher | cargo fetch alternative for use in CI or other "clean" environments | |
π§ cervo | Middleware used for ML inference in our games. | |
βοΈ cfg-expr | A parser and evaluator for Rust cfg() expressions | |
π cloud-dns | Client to interact with Google Cloud DNS v1 | |
π₯ crash-handling | Collection of crates for catching and handling crashes | |
β΄οΈ discord-sdk | An open implementation of the Discord Game SDK in Rust | |
π fsr-rs | Rust bindings for AMD FidelityFXβ’ Super Resolution | |
π gsutil | A small, incomplete replacement for the official gsutil | |
π‘ kajiya | Experimental real-time global illumination renderer | |
π¦ krates | Creates graphs of crates from cargo metadata | |
πͺ mirror-mirror | Powerful reflection library for Rust | |
π octobors | GitHub action for automerging PRs based on a few rules | |
π³ physx | Use NVIDIA PhysX in Rust | |
β poll-promise | A Rust promise for games and immediate mode GUIs | |
π presser | A helper crate for doing low-level data copies | |
π¦ puffin | Simple instrumentation profiler for Rust | |
π relnotes | Automatic GitHub release notes | |
π rpmalloc-rs | Cross-platform Rust global memory allocator using rpmalloc | |
π rust-gpu | Making Rust a first-class language & ecosystem for GPU code | |
π rymder | Unofficial agones client | |
π spdx | Helper crate for SPDX expressions | |
π spirv-tools-rs | An unofficial wrapper for SPIR-V Tools | |
π superluminal-perf | Superluminal Performance profiler integration | |
π tame-gcs | Google Cloud Storage functions that follows the sans-io approach | |
π tame-oauth | Small OAuth crate that follows the sans-io approach | |
𧬠tame-oidc | Small OIDC crate that follows the sans-io approach | |
π© tame-webpurify | An incredibly small library to interact with the webpurify REST API | |
π¨ texture-synthesis | Example-based texture synthesis generator and CLI example | |
π tiny-bench | A tiny benchmarking library | |
β±οΈ tracing-ext-ffi-subscriber | Subscriber for passing spans to a profiling tool via FFI. | |
πͺ΅οΈ tracing-logfmt | A logfmt formatter for tracing-subscriber. | |
π« tryhard | Easily retry futures |
You can see all these crates on our crates.io profile.
Contributing
We encourage contributions to any of our open source projects. If you're not sure where to start, look at the GitHub issues on any of the above projects!
Check out guidelines.md
for our guidelines & policies for how we develop in Rust.
To make sure we keep a friendly and safe environment for everyone, we have a Contributor Code of Conduct. You can read this in any of our projects' repositories. By contributing to our projects, you agree to the code of conduct.
Areas of Interest
Areas that we are interested in or working on, and want to help see improved in Rust:
-
βΈ Distributed systems - async, tokio, tonic
-
πΉοΈ Game engine systems - multiplayer, rendering, physics, audio, server, assets, workflows
-
π¦ Developer experience - fast iteration with large projects/monorepos, distributed builds, debugging, profiling, IDE
-
πΈ WebAssembly and WASI - sandboxed safe Rust code on client, edge & cloud
-
π€ Machine learning - efficient inference, library bindings, training environments
-
π High performance runtime - CPU job scheduling, code generation, optimizing crates
-
πΊπ± Console & mobile platform support - PlayStation, Xbox, Android. #18
-
π Rust on GPU - future compute & ML programming models beyond shaders, https://shader.rs
We track and discuss these from our perspective in the Issues for visibility and to get feedback, feel free to join in if you have ideas!
Also check out the Rust Game Development Working Group.
Work with us
We're actively looking to collaborate with developers on the areas discussed in this repository. If you're interested in working on a specific issue or idea highlighted here, please reach out to us at opensource@embark-studios.com
to discuss contracting opportunities or sponsorship.
We are also hiring for full-time positions remotely within Europe or on-site in Stockholm or MalmΓΆ!
Let's go! π
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.