Hello! I have enjoyed this game quite a bit. The best score I got (which I define as the week where my profit is inferior to the maintenance costs) was 19 weeks. The details of my opinions are down below, so feel free to stop reading here.
I really enjoy the using the colour gates and the stoplights in order to maximize traffic flow. I also enjoy how speedy the cars are. I like the obstacles, as they never feel intrusive and I feel like their removal would remove a lot of the difficulty and structure from the planning of roads.
I feel there could be a setting that allows different sized grids, so that way people could experiment how the game changes from small to large.
Here are some of my more critical opinions. Feel free to stop reading here as well.
First, I feel like the pathfinding with cars is pretty bad. I managed to deal with it all right after a few frustrating mistakes where traffic was completely clogged. But outside of that case, where it is completely my fault, I feel like it is quite difficult to reroute cars that have already spawned. I did read a comment talking about this, and you did mention performance issues. I'm sure there are some simple optimizations that can be made. That said, I don't know how much more time you want to spend on the game. I managed to implement one way roads by cranking up the timer on W/E and N/S type stoplights. I feel like you could use a similar idea to implement one way road pieces. My idea was to code a normal one directional stoplight, reskin it to be a one way road, and make it so the timer never counts down to zero.
Second, the maintenance costs are ridiculously high. I took a look at the formula, and increasing the cost by 25% every week (as well as the increase in roads) is ridiculous and prevents any sustainable infrastructure. You said this game was endless, but your formula for maintenance stops that idea in its tracks. I propose instead calculating the maintenance by summing the costs of homes, roads and businesses, each having a fixed price per unit. This would look something like this: a(#roads) + b(#homes) + c(#businesses), where a is the maintenance cost per road, b the cost per home and c the cost per business. By adding businesses and homes into the calculation, we also add an in-built way for maintenance costs to increase gradually based on the number of weeks (since, naturally, the number of homes and businesses increases with time). Now, you may not like charging the player for the maintenance of homes and businesses, whose numbers they cannot control (I would argue the players also cannot control the 25% increase, but that's not the point). Therefore, the formula is simplified to this: a(#roads). This formula however, doesn't increase the maintenance costs based on the number of weeks. My solution to this is the logarithm. You used square roots in your original formula, which in my opinion, was to balance for the fact that players won't be able to increase their income as much. Logarithms have a similar shape to square roots (you can use desmos.com to verify this) and, in my opinion, feel more natural when dealing with situations involving growth, which this game is absolutely about (feel free to use square roots if you really want to). Hence, we would multiply the maintenance cost of roads by a logarithmic factor. Personally, I chose a factor that felt natural to me: ln(#weeks). Hence, the resulting formula would be: (1 + ln(#weeks)) * a(#roads). The logarithm of 1 is zero, so it doesn't apply any change during the first week, just like the original formula. Now considering the initial growth rate of 25%, this formula is even more ridiculous. For example, 1 + ln(2) ≈ 1.69 (noice), which is a staggering 69% growth! Thankfully, this can be easily fixed by scaling the logarithm by a factor of b, where b is the percentage by which you scale the logarithm. Following the initial formula, we would like the initial increase for week 2 to be equal to 25%: 1 + b*ln(2) = 1.25. Hence, b = 0.25/ln(2). This gives a b value of approximately 0.36. Hence, we get this final equation for the maintenance cost: (1 + 0.36*ln(#weeks))*a(#roads) or (1 + 0.25/ln(2)ln(#weeks))*a(#roads).
Whew! Thanks a lot for making this game!
P.S. Considering the game is free, I would really appreciate it if you made the game open source, especially if you don't have the time to work on it.