41 lines
1.2 KiB
Markdown
41 lines
1.2 KiB
Markdown
# Barcelli Entity-Component-System (BECS)
|
|
|
|
A header only library implementing the data structures for an Entity-Component-System in C89 using memory arenas.
|
|
|
|
## Example 1 (Simple Particle System)
|
|
|
|

|
|
|
|
## Instructions on Usage
|
|
|
|
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`
|
|
|
|
Example:
|
|
|
|
```c
|
|
#define BECS_MAX_ENTITIES 100
|
|
#define BECS_MAX_COMPONENTS 10
|
|
|
|
#define BECS_IMPLEMENTATION
|
|
#include <becs.h>
|
|
|
|
int main(void)
|
|
{
|
|
/* your program goes here */
|
|
}
|
|
```
|
|
|
|
## Systems
|
|
|
|
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.
|