Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Byte-Engine
๐ Docs: https://byte-engine.0x44491229.dev/docs
Use Byte-Engine to build Rust applications that need graphics, input, audio, physics, resources, networking, and retained UI in one runtime.
Start with the public byte-engine facade for most applications. Use the
lower-level crates when you need direct access to rendering, audio, resources,
shader processing, transport, math, or utilities. Each crate provides a small,
composable engine layer.
[!WARNING] Status: Byte-Engine is early, so expect breaking API changes. Pin the package version and review the changelog before you update.
โจ What you can use
- ๐ผ๏ธ Platform graphics paths for Vulkan/Linux, Metal/macOS, and Direct3D 12/Windows.
- ๐ Platform audio interfaces for Linux, macOS, and Windows.
- ๐ฎ Action-based input that lets your application respond to intent such as
Move,Fire, orConfirminstead of raw device buttons. - ๐จ Actor-style system boundaries built around compact messages, factories, handles, and listeners.
- ๐ฆ Asset pipeline that separates authored assets from runtime-ready resources.
- ๐ ๏ธ
beld, a workspace CLI for baking, listing, querying, inspecting, and deleting resources. - ๐งช BESL, the Byte Engine Shader Language, for shader parsing, reflection, material integration, and backend shader generation.
- ๐งฉ Early retained, async-friendly UI primitives that run in the engine render loop.
โ Check the requirements
Byte-Engine currently targets nightly Rust and uses unstable language features.
The repository pins the toolchain in rust-toolchain.toml:
nightly-2026-05-31
Install Rust with rustup. When you run Cargo inside the checkout, it uses the
pinned nightly automatically.
Platform requirements:
| Platform | Required setup |
|---|---|
| Linux | Vulkan development packages, Wayland/X11 packages, ALSA, CMake |
| macOS | Xcode command line tools or full Xcode, plus CMake and pkg-config |
| Windows | Visual Studio Build Tools with the MSVC C++ toolchain and Windows SDK |
On Linux, run bash install_dependencies.sh from the repository root. This
command installs the dependencies used by CI and development containers.
Use a GPU that supports the active backend, AVX2 on x64 platforms, and at least 4 GB of RAM. For complete setup information, see:
๐ Start from source
Run a small smoke test:
Run the default graphics setup example:
Most smoke examples set kill-after=60 and exit automatically after about one minute.
๐งฑ Create a minimal headed application
use ;
use ;
Add the published engine to your application:
To follow an unreleased revision, use a Git dependency:
[]
= { = "https://github.com/Game-Tek/Byte-Engine", = "byte-engine" }
For faster local development, use a path dependency:
[]
= { = "../Byte-Engine/crates/byte-engine" }
๐บ๏ธ Explore the workspace
| Path | Purpose |
|---|---|
crates/byte-engine |
Main public engine crate and application-facing facade. |
crates/ghi |
Graphics hardware interface used by the renderer. |
crates/ahi |
Audio hardware interface used by engine audio systems. |
crates/resource-management |
Asset handling, resource storage, shader resources, and runtime reads. |
crates/besl |
Byte Engine Shader Language parser, lexer, semantic graph, and integration. |
crates/besl-derive |
Procedural macros for BESL-related structures. |
crates/betp |
Byte Engine transport protocol primitives for local and remote sessions. |
crates/math |
Shared math aliases and helpers. |
crates/utils |
Shared allocation, async, sync, collection, and geometry utilities. |
crates/beld |
Installable asset baking and resource inspection CLI. |
docs |
Documentation source for setup, usage, reference, and engine design notes. |
docs-site |
Documentation site project. |
Where required, crates use the byte-engine-* namespace so crates.io can resolve
each internal layer independently. In Rust code, use the shorter import names
such as ghi, ahi, besl, math, and utils.
๐ฏ Run the examples
Examples live in crates/byte-engine/examples.
Run them from the workspace root:
Choose an example based on the system you want to exercise:
| Example | What it exercises |
|---|---|
none |
Creates and runs a minimal graphics application without user setup. |
window |
Creates a window through the default window setup. |
triangle |
Runs the default headed graphics setup. |
cube |
Placeholder smoke path for a 3D cube scene. |
sandbox |
Placeholder smoke path for physics sandbox work. |
sound |
Audio synthesizer smoke path. |
replication |
Early networking/replication smoke path. |
๐ฆ Work with assets and resources
Byte-Engine separates the files you author from runtime-ready resources:
- Assets are source files such as PNG, JPEG, glTF/GLB, FBX, WAV, OGG, LUT files,
.bemamaterial declarations, and BESL shader sources. - Resources are processed engine data with metadata such as format, hash, size, image extent, mesh layout, shader reflection data, and binary payloads.
- When debug or development loading is enabled, the resource manager can read an existing resource or ask an asset handler to bake it.
Install beld to inspect and manage resources:
Then run its resource commands:
For design information, see Asset and resource management.
๐งช Write shaders with BESL
Use the Byte Engine Shader Language (BESL) to integrate shader code with material processing, resource reflection, render-model code generation, and platform shader generation.
The syntax is Rust-inspired, but BESL is not Rust:
VertexInput: {
Backend coverage is still evolving. The project includes GLSL, MSL, HLSL, and platform-generator paths. For language details, see the BESL reference.
๐๏ธ Understand the architecture
Before you make a large change, read the design documentation for the affected system:
- Actor pattern: message-passing system boundaries, factories, handles, and listeners.
- Input handling: device triggers, seats, actions, value mappings, and tick policies.
- Rendering: render orchestrators, render systems, render domains, and render models.
- UI module: retained async component primitives and UI render flow.
- Resource management: asset
baking, resource storage, runtime reads, and
beld.
๐งฐ Run development checks
Contributing documentation
Use ISO 24495-1 plain-language principles for Rust comments and API documentation. Write for the intended developer, state the purpose early, use direct language, and organize information so developers can find and apply it quickly. Keep useful intra-code links to related types, traits, functions, methods, modules, and concepts, even when a strict plain-language rewrite would remove them. These links are part of the API's navigation. For APIs that participate in a workflow, tell developers which linked API they normally use next.
Use the Microsoft Writing Style Guide
for user guides and pages in docs. Address the reader as you, lead
with the reader's goal, prefer everyday words, keep sentences concise, and make
the next action clear. Preserve technical terms when they are the names that
developers see in the engine or its tools.
Common checks from the workspace root:
Publishing-specific verification and crate order are documented in
PUBLISHING.md.
๐ Documentation and links
- API documentation: https://docs.rs/byte-engine
- Repository: https://github.com/Game-Tek/Byte-Engine
- Changelog:
CHANGELOG.md - Publishing notes:
PUBLISHING.md - User documentation: https://byte-engine.0x44491229.dev/docs
- Documentation source:
docs
๐ License
Byte-Engine is licensed under the MIT license.