5 unstable releases
0.3.0 | Jun 24, 2024 |
---|---|
0.1.0 | Jun 14, 2024 |
0.0.6 | Jun 14, 2024 |
0.0.3 | Jun 6, 2024 |
0.0.1 | Jun 3, 2024 |
#1997 in Game dev
306 downloads per month
120KB
3.5K
SLoC
Ira
A general-purpose, code-first game engine.
Features
- PBR rendering and lighting with
wgpu
for graphics - Simple packaging system for game assets with
ira_drum
- glTF 2.0 support
- OBJ support
- Physics with
rapier
- Built-in multiplayer support with custom packet support
- Headless server, client, and server-client support
Examples
struct App {
car: InstanceRef,
}
impl ira::App for App {
fn on_init(_window: &mut Window) -> Drum {
Drum::from_path("car.drum").unwrap()
}
fn on_ready(ctx: &mut Context) -> Self {
Self {
car: ctx.add_instance(0, Instance::builder().up(Vec3::Z))
}
}
fn on_update(&mut self, ctx: &mut Context, delta: Duration) {
self.car.update(ctx, |i, p| i.rotate_y(p, delta.as_secs_f32() * PI * 0.25));
}
}
fn main() -> Result<(), EventLoopError> {
Game::<App>::default().run()
}
More examples can be found in the examples
directory.
Preparing assets
The ira
tool can be used to pack various game assets (glTF, etc.) into a single Drum.
See the ira_cli documentation for more information.
Screenshots
License
Licensed under the MIT license.
Dependencies
~17–53MB
~1M SLoC