Add: images and README.md
This commit is contained in:
parent
7f0724fe55
commit
be4e840547
17
README.md
17
README.md
|
|
@ -1,14 +1,14 @@
|
||||||
# Barcelli Entity-Component-System (BECS)
|
# Barcelli Entity-Component-System (BECS)
|
||||||
|
|
||||||
This is an header only library implementing a Entity-Component-System in C89 using memory arenas. You can look at tests/main.c for an example of an implementation. This is an educational library, done in my free time. If you are interested in improving the design of this ECS, feel free to submit a pull request. I am by no means an expert and ECS design, this was just a fun problem solving exercise.
|
A header only library implementing the data structures for an Entity-Component-System in C89 using memory arenas.
|
||||||
|
|
||||||
## Demo (Particle System)
|
## Example 1 (Simple Particle System)
|
||||||
|
|
||||||
>[!TODO] Add Video
|

|
||||||
|
|
||||||
## Instructions on Usage
|
## Instructions on Usage
|
||||||
|
|
||||||
Include `becs.h` and in exactly one file define `BECS_IMPLEMENTATION` before the include.
|
Include `becs.h` and in exactly **one file** `#define BECS_IMPLEMENTATION` before the include.
|
||||||
|
|
||||||
To setup your Maximum Entity Count and Maximum component count, define `BECS_MAX_ENTITIES` and `BECS_MAX_COMPONENTS` before including `becs.h`
|
To setup your Maximum Entity Count and Maximum component count, define `BECS_MAX_ENTITIES` and `BECS_MAX_COMPONENTS` before including `becs.h`
|
||||||
|
|
||||||
|
|
@ -29,5 +29,12 @@ int main(void)
|
||||||
|
|
||||||
## Systems
|
## Systems
|
||||||
|
|
||||||
When writing systems try to write them such that you operate on the dense array of the individual components. Take a look at the implementation in example 1 for more detail. (Example 1's implementation lags at high particle counts due to my quick and shoddy writing of the render code. If you comment out the RenderSystem call in the loop, the ECS can handle 100000 entities being simulated at the same time with no issues)
|
To get best performance out of systems, you should try to iterate across the dense arrays in each component pool. Take a look at [Example 1's](./examples/example1/example1.c) implementation of systems.
|
||||||
|
|
||||||
|
> [!NOTE] The renderer is a big limiting factor in this example as I didn't try to hard to optimize it past batch rendering the particles. See below
|
||||||
|
|
||||||
|
**Example 1 Without Renderer:**
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
As you can see above, without the renderer at 100000 entities, the simulation is running at around 2800 FPS or 0.3ms.
|
||||||
|
|
|
||||||
BIN
images/BECSdemoexample1.webp
Normal file
BIN
images/BECSdemoexample1.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.6 MiB |
BIN
images/BECSdemoexample1NoRenderer.webp
Normal file
BIN
images/BECSdemoexample1NoRenderer.webp
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 279 KiB |
Loading…
Reference in a new issue