So I’ve been trying to map out the exact grids of desirability bonus for each building type and I’ve noticed that the area on some of them is not actually symmetrical. This means that I could place exactly the same arrangement of homes and features with a 90 degree rotation and I would get slightly different desirability outcomes. Rotating individual features or homes doesn’t affect anything, the skew seems to be connected to the map itself. The exact desirability bonus at each point also seems to be a rounded decimal, so it is also hard to predict the exact outcome of stacking features. For anyone trying to plan the ‘perfect’ arrangement this is bad news.
I had expected the underlying code to just be a bunch of arrays displaced and added together, which would have given symmetrical and predictable results, and used very little processing power (especially if that array were only updated when a change occurs). It seems like it is actually calculating distances with fancy trig math and lerps, which apparently gives slightly wonky results and probably uses a ton of processing power. Isn’t the point of using the basic grid mechanic in this kind of game that it lets you code arrays for big performance gains and sharp Tetris-like results?