maximum efficiency needed.

Creating a very simple but expansive project in a 2d space. essentially just a grid with thousands of GO’s with an image component, and a custom script which, on a delay, changes the GO based on what is surrounding it.

After the “game” starts, there is no need for interaction with the GO’s, but can still look around at any part of the grid as you please. So, no interaction with the GO’s after start, I know to turn of raycasting.

Are there any other tricks to bring down system usage on these thousands of simple GO’s?

is it something for DOTS ?

no im not using the DOTS preview.

What’s your actual question and what have you concerned yourself already ?

But if I get your right I got an idea at least.

I would use some sort of “ReportToMe” class and give all of the thousand objects not the caculation and changelogic themselves, but making them report their information to the “ReportToMe” class at a given timestamp (every Update() ?)

Then this “ReportToMe” class do all the verification / transformation / translation /… and other words with 'ation in it… of the currently reported objects, according to whatever fits your needs.

some ideas to get better performance

  • use shaders, especially if its simple billboard image, with changing color or texture(?)
  • dont put script for each GO, instead have single script that updates them all
  • dont use UI images, since it sounds like they are world space objects anyway
  • dont loop all objects to calculate thoses changes, just neighbor object(s) if its required somehow
  • can use this also Unity - Scripting API: Graphics.DrawMeshInstanced