You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Would be much better if Arch ECS would simply have a DirtyFlags component/internal attribute to Entity itself and query internally used it instead of a signature change.
This is much more scalable, and something similar is used in Entitas and in custom ECS frameworks in order to improve readability and allow quick changes to the entity without moving it into a different archetype. @genaray this is something that makes Arch ECS unusable in current production, and that is the main reason people switch to Entitas or other ECS frameworks. We don't need bloated ECS; we need a stable, reliable, and consumer-driven one, meaning systems and code are easily extendable even for cases where there are only a few entities.
Here is a concrete example:
[Test]
public void CreateEntity_FromSignature_CheckMarker()
{
// Issue: we can't simplify systems as Arch-ecs markers are build into entity archetype
// - thus when adding/removing components from entity, Arch-ecs fully moves it between archetypes! (very expensive)
// In order to avoid it: we must use separate slim entity-requests.
var CharacterSignatureWithMarker = new Signature(typeof(SimId), typeof(CharacterStats), typeof(CharacterScaling),
typeof(CharacterSkillbook), typeof(CharacterSpawnRequest));
var entity = _world.Create(CharacterSignatureWithMarker);
var archEcsHasMarkerByDefault = entity.Has<CharacterSpawnRequest>();
Assert.IsTrue(archEcsHasMarkerByDefault); // should be false! and only when we really add CharacterSpawnRequest it will be true
}
Activity
JoNax97 commentedon Aug 26, 2025
#291 aims to address the changed part
studentutu commentedon Mar 22, 2026
Would be much better if Arch ECS would simply have a
DirtyFlagscomponent/internal attribute to Entity itself andqueryinternally used it instead of a signature change.This is much more scalable, and something similar is used in
Entitasand in custom ECS frameworks in order to improve readability and allow quick changes to the entity without moving it into a different archetype.@genaray this is something that makes Arch ECS unusable in current production, and that is the main reason people switch to Entitas or other ECS frameworks. We don't need bloated ECS; we need a stable, reliable, and consumer-driven one, meaning systems and code are easily extendable even for cases where there are only a few entities.
Here is a concrete example: