Another theory other than sbov's theory is that there is calculation done on the server side, but only for cities in a region not currently being played. As long as someone is playing in a region, the other cities are basically on rails, so nothing really changes for the players, but they still will correctly interact with cities currently being played.