Blade

architecture


Engine: API

  • ECS
  • hierarchy
  • Vulkan
  • composability
  • +ergonomics

Engine: Init

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

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

engine.get_object_transform(body, blade::Prediction);

Demo

game


API Stability

Abstracting away dependencies isn't always easy:

  • mint is your friend
  • raw-window-handle is good
    • but it doesn't expose other useful things, like the size or DPI
  • rapier3d is ok, quite verbose
  • egui is almost impossible to abstract

Future work

Proper game?

Graphics features:

  • less noise
  • specular reflection
  • global illumination
  • local lights

Release

blade-0.2


Select a repo