becs/README.md

1.2 KiB

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)

Demo Example 1

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:

#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 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:

Without Renderer

As you can see above, without the renderer at 100000 entities, the simulation is running at around 2800 FPS or 0.3ms.