| Crates.io | syrillian |
| lib.rs | syrillian |
| version | 0.3.2 |
| created_at | 2024-12-08 15:19:34.07471+00 |
| updated_at | 2025-08-16 17:08:16.081674+00 |
| description | Real-time 3D game engine built on top of wgpu, focusing on flexibility, modularity, and a straightforward, entity-component-driven workflow |
| homepage | |
| repository | https://github.com/Kek5chen/syrillian |
| max_upload_size | |
| id | 1476360 |
| size | 4,721,524 |
Syrillian Engine is a Rust-based, real-time 3D game engine, focusing on flexibility, modularity, and a straightforward, entity-component-driven workflow.
It's designed to be easily simple and extensible. We aim to provide a robust foundation for building modern 3D applications, rendering pipelines, and visually pleasing gameplay.
We're unique, in the sense that we aim to show how flexible Rust can be as a language. With the milestone to provide a simple, iteration-strong game engine, which people have fun making games with. The goal is to look beyond the boundaries so that users can simply focus on iteration speed. Not fighting a language.
The goal is that even new developers, and people familiar with other languages, have a comfortable dip into the Rust game-dev atmosphere!
Feel free to add your own expositions here :)

Me picking up a shader-animated, physics-enabled cube which is emitting a lightsource From this Example
Clone the repository:
git clone https://github.com/Kek5chen/syrillian.git
cd syrillian
Build the engine library:
cargo build
Try out a demo example, included in the repository:
cargo run --example my-main
Dance in circles (optional)
NixOS Development Flakes are provided with the project.
If successful, a window should appear displaying a rendered scene.
We, optionally, provide the SyrillianApp Proc Macro. Usage example:
// The macro will provide you with a simple main runtime and (optional) logging
#[derive(Debug, Default, SyrillianApp)]
struct YourGame;
impl AppState for YourGame {
// will be called once
fn init(&mut self, world: &mut World, window: &Window) -> Result<(), Box<dyn Error>> {
window.set_title("Example App");
world.new_camera();
world.spawn(&CubePrefab).at(0, 0, -10); // Spawn Cube at (0, 0, -10).
world.print_objects(); // Print Scene Hierarchy to Console
Ok(())
}
// will be called once per frame
fn update(&mut self, world: &mut World, window: &Window) -> Result<(), Box<dyn Error>> { ... }
// there's also "late_update", "draw", and more...
}
It's simple... Really!
The whole feature map has moved into the Issues
Contributions are welcome! If you find a bug or have a feature request:
Ensure your code follows Rust’s formatting and clippy checks:
cargo fmt
cargo clippy
This project has been a big personal gem of mine, and I've poured probably a good 100+ hours of my freetime into it. I am not monetized to work on this, and I do it out of pure personal interest.
Any help, getting this project [better, stable, improved, ..] is very welcome, and I'll make sure to show or explain anything that's not clear. Even feedback or rants on the user-facing API are more than welcome, as I wish to provide patterns that make is as simple as possible to use.
If you need anything: Don't hesitate to join the discord to discuss :)
Syrillian Engine is distributed under the MIT License. See LICENSE for details.
Syrillian Engine ❤️ Building the backbone of your next great 3D experience.