https://github.com/wick3dr0se/secs
Shit Entity Component System
https://github.com/wick3dr0se/secs
ecs entity-component-system rust sparse-set-ecs
Last synced: 2 months ago
JSON representation
Shit Entity Component System
- Host: GitHub
- URL: https://github.com/wick3dr0se/secs
- Owner: wick3dr0se
- License: mit
- Created: 2025-01-21T23:13:34.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-04-12T12:52:19.000Z (3 months ago)
- Last Synced: 2025-04-13T16:09:50.032Z (2 months ago)
- Topics: ecs, entity-component-system, rust, sparse-set-ecs
- Language: Rust
- Homepage:
- Size: 146 KB
- Stars: 56
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# secs - Shit Entity Component System
**secs** is an ECS for people who want something with the bare minimum. No complex features, no unnecessary abstractions — just the essentials, no strings attached (but you could do that)If you’re tired of ECS libraries that make you feel like you’re writing a thesis on systems design, **secs** is here to give you what you need and nothing more
## Why secs?
You could use something like **hecs**, **specs** or **bevy** for your ECS needs, but why chase frills when you could have uncomplicated **secs**? It's simple, lightweight and may (or may not) get the job done. No promises. If you need more, you can always try something else***secs** — without the fluff*
## Features
- **Entity Management**: Entities are ID's, right?
- **Component Storage**: Components are stored in sparse sets — sounds fancy but archetypes were too much work
- **Multiple Mutable Queries**: You can mutate many components, probably..
- **Systems**: **secs** has systems with parallel potential## Getting Started
Get **secs**```bash
cargo add --git https://github.com/wick3dr0se/secs
```Example: How it’s probably supposed to work
```rust
use secs::World;let mut world = World::default();
world.spawn((MyComponent { /* your data */ },));for (entity, (component,)) in world.query::<(&MyComponent,)>() {
// maybe get an immutable component
}
```See more examples in [examples/](examples/)
## Contributing
Want to make **secs** less shitty? Contributions are much appreciated