I've re-created Conway's Game of Life using Unity ECS https://en.wikipedia.org/wiki/Conway's_Game_of_Life Playable webgl demo https://thinkhuge.s3-us-west-2.amazonaws.com/gol/index.html Source code https://github.com/areilly711/unity_ecs ECS Part Game logic Mono Part App startup UI My issues 1) My cell entities have 8 neighbor cells stored as entities in an IComponentData struct. When I was counting a cell's neighbors on the main thread, I was using EntityManager.GetComponentData<Neighbor> on the neighbor entities. However, when I jobified he neighbor counting, I haven't been able to find a reliable way to do the lookup on the neighbor entity into its proper array. As a temp hack, the first entities that I create are the cells (say 10,000, so indices 0-9999), and when I run the neighbor counter system, I create an entity query for my cells and transform the results into a native array of size 10,000, so I can do the lookup. However, when I restart the app and destroy all the entities, the newly created cell entity ids don't match the same 0-9999 range as before and I get errors, as expected. I've tried chunk iteration, but this didn't work because the neighbor can be in a different chunk. I also tried combining component data from chunks in a native array, but that didn't work either. I tried to reset the World entity count back to 0, but there doesn't seem to be a way to do this. How can I find the proper array that stored the neighbors? 2) Speaking of neighbors, instead of storing 8 separate entities in the data struct and doing random array access lookups on these entities in the job, is there a more cache friendly method? The counter system is actually quite fast, but I'm trying to think of different ways to solve this problem. 3) The render system is my bottleneck. I'm using the standard Rendermesh/Translation/Scale/LocalToWorld setup to perform the rendering. Can I optimize using the Graphics class or some other method? General ECS Feedback 1) Before setting the cells' scales to 0, I was attempting to swap between 2 different shared Rendermesh Components, but couldn't find a way to do this in a job and it was painfully slow on the main thread 2) Reloading the scene doesn't destroy entities or systems. I was surprised but I suppose I shouldn't have been 3) The samples and documentation helped a lot 4) Overall, I like the ECS as it's a nice, elegant way to separate data from functionality and write really easy to read, performant code. It will be interesting to see how the API evolves over time. For example, I wonder if we'll always have to manually dispose of our arrays.