In fact it is an environment simulation, and a quite large one. A level in goblins could have up to 40.000 passive objects and up-to 4.000.000 mushrooms and plants on the ground. Even if you only utilize 10% of this, it would be 4.000 objects and 400.000 plants.
So, what are the requirements and limits of such a simulation system ?
1. It should not try to update the whole level at once.
2. It should utilize multiple cores.
3. It should not be time-critical, a more relaxed approach would help a lot.
4. The user should be able to choose the update speed of such simulation.
5. The game design should be robust when regarding the speed of the simulation and the out-come of the simulation.
The basic idea I have is to add environment agents, objects which are like any other standard object, but are invisible and static. Each environment agent will grab an area of the level, analyses and modifies it. As every object in gnoblins, each object is able to execute its AI logic concurrently. I utilize this by adding 1 to 100 environment agents (player can choose). More agents will result in faster simulation.
This sounds interesting:
1. A light source is close => grow some plants
2. A water source is close => grow some mushrooms
3. The water level is to high => damage furnitures, turn off torches
But I need to keep in mind, that when running as low as 20 FPS and with only a single environment agent, you would update each tile in the worst
case every 3 1/2 minutes. Okay, with some optimizations (analyse multiple areas per agent, use at least 3 agents), you could bring the update interval down to 10-15 seconds which sounds okay.
Just don't expect that a little drop of water, once it touches a torch, will destroy it instantly. But this is something I can live with.