## Blade ![architecture](https://raw.githubusercontent.com/kvark/blade/main/docs/architecture2.png) --- # Engine: API - ~~ECS~~ - ~~hierarchy~~ - ~~Vulkan~~ - ~~composability~~ - +ergonomics --- ## Engine: Init ```rust engine.set_environment_map(...); engine.set_gravity(...); let body = engine.add_object(...); let wheel = engine.add_object(...); let joint = engine.add_joint(body, wheel, ...); ``` --- ## Engine: Update ```rust engine.apply_linear_impulse(body, ...); engine.apply_angular_impulse(wheel, ...); engine.set_joint_motor(joint, ...); engine.teleport_object(body, ...); engine.populate_hud(egui); engine.render(...); ``` --- ### Engine: Query ```rust engine.get_object_transform(body, blade::Prediction); ``` --- ## Demo ![game](https://github.com/kvark/blade/blob/main/docs/vehicle-colliders.jpg?raw=true) --- ## API Stability Abstracting away dependencies isn't always easy: * [mint](https://github.com/kvark/mint) is your friend * [raw-window-handle](https://github.com/rust-windowing/raw-window-handle) is good * but it doesn't expose other useful things, like the size or DPI * [rapier3d](https://github.com/dimforge/rapier) is ok, quite verbose * [egui](https://github.com/emilk/egui) is almost impossible to abstract --- # Future work Proper game? Graphics features: - less noise - specular reflection - global illumination - local lights --- ## Release [blade-0.2](https://crates.io/crates/blade) ---
{"description":"Blade scene editing.","slideOptions":"{\"theme\":\"serif\",\"transition\":\"fade\"}","title":"Blade-Engine","contributors":"[{\"id\":\"979e994f-8a6f-4ba5-b86c-9af3abd000ad\",\"add\":1918,\"del\":350}]"}
    153 views