@torbenratzlaff, The reason for the heavy calculation is because of the game mechanics.
My game is a city-builder. Each building has an area of affect on it’s neighbours to a greater or smaller degree depending on what building it is and what property is being radiated. For example a park will provide a positive bonus between 3 and 8 tiles radius depending on it’s upgrade level.
Other things like if a user removes a road from a power station then that will stop it functioning and that could have an effect on hundreds of buildings. As the affected tiles no longer have power then they won’t generate pollution or happiness and that then has to ripple out to it’s neighbours, etc. Also I need to aggregate lots of values over the entire city and that requires accessing every element in the array to perform in real time.
It actually is quicker to recalculate everything then try and build a binary tree of all the “tile 1 has affected tile 2 has affected tile 3”, etc.
At the end of every recalculation it then saves a compressed and encrypted game state to disk (and every so often to the cloud) - this is done over many frames too.