So it’d still require implementing a full blown “regular” ecs in Godot, completely replacing the existing scene tree system?
For ECS, Flecs is worth a look. Powers quite a few games and is natively available in C and C++, with bindings for C#, Lua, Rust and others.
Alternatively, there’s also GECS, directly integrated with Godot and GDScript.
Yep but the objective was to get back that full node system while using an ecs
GECS may be worth a look. For flecs I already discussed with his creator way before coming here.
You could also form a linked list style hash table containing references to all nodes in the scene, built at the start. The hash number is constructed by just Exlusive Or-ing each bit flag with the hash, then elements with the same hash are just adjacent in the list.
e.g a= 000, a |= 001, a|=010…a is now 011,
[a]→[a1]→[a2]…→[an] →[b]→… etc b is 111 for example
This offers linear time retrieval and fast logarithmic time insertion and deletion if an element is added or removed.
Then you could have a skip list node, with its number, e.g. 011, that references the start and end of the list span containing 011 nodes, for even fast retrieval, you just run a loop from the skip list node start to end to perform operations on all nodes with certain traits.