| Crates.io | syrillian |
| lib.rs | syrillian |
| version | 0.5.0 |
| created_at | 2024-12-08 15:19:34.07471+00 |
| updated_at | 2025-12-28 01:36:43.832657+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 | 5,966,490 |
Syrillian Engine is a Rust-based, real-time, mainly 3D game engine, focusing on flexibility, modularity, and a straightforward, entity-component-driven workflow.
It's designed to be frictionless and extensible. We aim to provide a robust foundation for building modern 3D applications, cross-platform rendering pipelines, and visually pleasing gameplay.
This project is trying to be uniquely simple and frictionless.
Syrillian aims to show how flexible Rust can be as a general programming 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 frictionless development that feels like magic, not like 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 and the growing Syrillian ecosystem!
Feel free to add your own expositions here :)
An animated rabbit, roaming in the scene *click to view the video*

Picking up a physics-enabled cube with an animated shader, which is emitting a lightsource From this Example
cargo add syrillian
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
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:
// make sure to get your imports and dependencies right, (for the dependencies, syrillian, env_logger, log), (for the imports use std::Error, and necessary modules from syrillian)
// 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) -> Result<(), Box<dyn Error>> {
world.set_window_title("Example App");
world.new_camera();
world.spawn(&CubePrefab::default()).at(0, 0, -10); // Spawn Cube at (0, 0, -10).
world.print_objects(); // Print Scene Hierarchy to Console
Ok(())
}
// use the update function if you are making updates to the game state every frame
fn update(&mut self, world: &mut World) -> Result<(), Box<dyn Error>> {
Ok(())
}
// there's also "late_update", and more...
}
It's simple... Really!
The whole feature map has moved into GitHub 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 started as a hobby project - a big personal gem - and had poured hundreds of hours of solo-development into it before catching onto the first early contributors. This project is not monetized or developed to be monetized.
Any help, getting this project [better, stable, improved, ..] is very welcome, and we'll try to show or explain anything that's not clear. Even feedback or rants on the user-facing API are more than welcome. We wish to provide patterns that make the engine as simple to use as possible.
Join the community on Discord.
Syrillian Engine is distributed under the MIT License. See LICENSE for details.
Syrillian Engine ❤️ Building the backbone of your next great 3D experience.