https://github.com/abc-engine/abc-ecs
An ECS for the ABC-Engine
https://github.com/abc-engine/abc-ecs
easy-to-use ecs rust
Last synced: 4 months ago
JSON representation
An ECS for the ABC-Engine
- Host: GitHub
- URL: https://github.com/abc-engine/abc-ecs
- Owner: ABC-Engine
- License: mit
- Created: 2023-11-27T00:03:52.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-09-14T01:39:06.000Z (10 months ago)
- Last Synced: 2025-12-13T03:53:07.578Z (7 months ago)
- Topics: easy-to-use, ecs, rust
- Language: Rust
- Homepage:
- Size: 97.7 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# Performance
This ECS was built with usability in mind. That being said it is only a pseudo-ECS. As needed you can use either the run or single_entity_step and pre-step to utilize the multithreading we offer. As needed you can switch between these two methods. This ECS can be really performant if you need it to be.
# ABC Game Engine - Simple ECS Framework
This Rust project provides a basic framework for managing game entities, components, and systems in the ABC Game Engine using an Entity Component System (ECS) approach.
# Quick Example
Create a World:
```rust
use ABC_ECS::World;
struct Position {
x: f32,
y: f32,
}
struct Velocity {
x: f32,
y: f32,
}
fn main(){
let mut world = World::new();
let entities_and_components = &mut world.entities_and_components;
// Add an Entity and Components:
let entity = entities_and_components.add_entity();
// Add components like Position and Velocity
entities_and_components.add_component_to(entity, Position { x: 0.0, y: 0.0 });
entities_and_components.add_component_to(entity, Velocity { x: 1.0, y: 1.0 });
// or you can do it in one step:
let entity = entities_and_components
.add_entity_with((Position { x: 0.0, y: 0.0 }, Velocity { x: 1.0, y: 1.0 }));
}
```
# Documentation
Visit the docs [here](https://github.com/ABC-Engine/ABC-ECS/wiki).
# Contributing
Contributions are welcome! Start by filing an issue and we can work forward from there! If you're not sure what to work on but you want to help [Join the discord and ping me](https://discord.gg/6nTvhYRfpm), I'm happy to help!