Better entities tracking issue #18719
Labels
A-ECS
Entities, components, systems, and events
C-Tracking-Issue
An issue that collects information about a broad development initiative
X-Controversial
There is active debate or serious implications around merging this PR
Objective
I've been deep in Bevy's entity code for a few weeks now, working on remote entity reservation. Having become pretty familiar with it, there's a few areas I think we can significantly improve.
This is a tracking issues for my ideas here. Each one deserves discussion, but since they are separate issues, I figured a tracking issue would be better than a discussion post with disjoint comments.
Roadmap
alloc_at
functionality. Removeinsert_or_spawn
function family #18148 . This was a performance foot gun for users and it madeEntities
overly restrictive.u32::MAX
index entity. Right now, this is a bug inEntities
. One solution is out here: Makeentity::index
non max #18704 . (But that's still up for debate).u32
in a new type.TableRow
,ArchetypeRow
, etc non-max. Maybe even their ids too.Identifier
system. This is an ecs utility that is only used byEntity
. But these changes makeEntity
pretty unique as far as identifiers go, and given that the identifier system is only used by entities, I think we can safely let this go to reduce complexity.ComponentId
anEntityRow
via a wrapper. This is the first step in components as entities.ComponentId
map that is an optimizedHashMap<ComponentId, T>
. This would be a vec index for the firstSOME_CONSTANT
entities and then a hashmap after that.Entity
from anEntityRow
throughEntities
(unsafe).These changes open up the door for a lot of other improvements, but those can come later. These are my hopes/dreams for entities themselves. Note that while some tasks depend on others, this isn't an all or nothing effort (hence not being a discussion post). Bevy can pick and choose which of these ideas to discard or prioritize etc. But hopefully this gives a clear vision of what I think the entity system can become and how we can use it to improve performance and flexibility, especially with components as entities on the horizon.
As a side note, this is in the same spirit as the rules from this post (which I completely agree with.)
The text was updated successfully, but these errors were encountered: