Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/kettle11/kudo

An Entity Component System for Rust. Fast, easy, and predictable. (Work in progress)
https://github.com/kettle11/kudo

ecs entity-component-system gamedev rust

Last synced: about 1 month ago
JSON representation

An Entity Component System for Rust. Fast, easy, and predictable. (Work in progress)

Awesome Lists containing this project

README

        

## This repository is no longer maintained. But `kudo` lives on as a crate within the `koi` game engine project: https://github.com/kettle11/koi/tree/main/crates/kecs

# 👏 kudo

[![Documentation](https://docs.rs/kudo/badge.svg)](https://docs.rs/kudo/)
[![Crates.io](https://img.shields.io/crates/v/kudo.svg)](https://crates.io/crates/kudo)
[![License: Zlib](https://img.shields.io/badge/License-Zlib-lightgrey.svg)](https://opensource.org/licenses/Zlib)

## WORK IN PROGRESS

An Entity Component System for Rust. Fast, easy, and predictable.

* No `unsafe`
* No dependencies

```rust
struct Health(f32);
struct Name(String);
struct CreepySnakeHair(u32);

let mut world = World::new();

// Create entities with components.
world.spawn((Name("Perseus".to_string()), Health(50.)));
world.spawn((
Name("Medusa".to_string()),
Health(100.),
CreepySnakeHair(300),
));

// Find every entity with a `Name` and a `Health` component.
let mut query = world.query::<(&Name, &Health)>().unwrap();

// Iterate through all entities with those components.
for (name, health) in query.iter() {
println!("{}'s health is: {:?}", name.0, health.0);
}
```

`Kudo` was inspired by the library [`hecs`](https://github.com/Ralith/hecs). If you need a more feature-rich ECS, give `hecs` a try!