2022-01-10 13:39:43 +13:00
2021-06-07 21:25:01 +12:00
2021-05-22 14:32:59 +12:00
2022-01-10 13:39:43 +13:00

JavaECS

An implementation of an Entity-Component-System written in Java.

Introduction to ECS

The primary goal of an ECS is to provide fast access to many entities; especially where those entities share many of the same properties. It also solves issues regarding adaptability in an inheritance-based engine. ECS is more of a conceptual idea rather than an actual engine structure. There exists many variations of the concept, each adding in different features and models as required.

The primary example of an ECS is EnTT, which is used in Mojang's Minecraft.

There are four key elements to an ECS:

  1. The entity, which is a simple ID, usually an index.
  2. The component, which is a struct or class that stores data
  3. The system, which is a functionality that is executed regularly by the engine.
  4. The engine (sometimes split into parts called 'managers'), which controls the interaction between these components, and provides access to the external program.

About JavaECS

The focus of JavaECS is more about the structure rather than raw performance. It remains performant, but there may be multiple areas where improvements can be made.

In a quick port of Alex Beimler's ECS Benchmark, JavaECS performs at about the same speed as ECS (~90 ms). The results aren't normalised between test environments, so take them with a grain of salt; but it tends to suggest that the project has decent performance.

This project is inspired by:

Implementation

See the documentation for implementation details

Description
No description provided
Readme 268 KiB
2021-06-15 18:30:18 +12:00
Languages
Java 100%