I'm having difficulty adjusting to ECS way of thinking about the data. This post is a bit like thinking out loud. Let's say an RTS level is separated into tiles, and I need a system to work on all units in the XY tile (TilePosition = x ,y). I would like to be able to make a query like EntityManager.GetEntity<TilePosition>(x, y). ECS systems like Entitas keep dictionaries with user-defined keys. For example, I mark a field inside an entity with [EntityIndex], and EntityManager starts to keep track of it and is able to fetch entities with that key. Is that something that is going to be supported? Is that even a good way of doing it? Should I keep dictionaries, and if so, where should I put them? I could have a system that would track objects moving from tile to tile I guess and emit events when that happens if necessary. Then should I have an entity with dictionary for all current units as value and positions as keys? Or should it be an array of lists (if possible) or some such? Then any system that needs to query the units would use that entity? What if the array or dictionary is HUGE? If it is kept on an entity it's gonna be copied for system's use. At what point it is too big to copy effectively and should be split? I assume the boids example can shed some light on that but the talk I watched about that example was too difficult for me to understand. I'll check the source code though.