Overall, I was impressed with the final product. It lived up to my expectations, yet not without some flaws. One of them, was the structure of the level generator. For the three different levels, the procedure of generating the level was the same, with the only difference between the levels being the visuals. The placement of objects generated by the script, was not perfect. In fact, I wasn't that pleased with it. The script followed rules of how and when to place objects, yet many other rules that were needed weren't included. Potholes spawned inside of each other, in-front of gas stations and even in them. Gas stations followed a rule that no more than two of them can be spawned in a row, yet sometimes two would spawn then a gap, then another one. Sometimes even, gas stations wouldn't spawn for periods of fifteen seconds. Also, since it was procedural, there was not really a proper learning process for the player. There could have been an odd combination of logs and potholes which would have not been great for a first time player.
So how could this have been avoided? Well, the obvious answer is to better design the level generator, and yes, that would have probably fixed most of these problems. I had a function in place to check whether or not a pothole was in the position of an already existing one, yet it never really worked. Iterating upon that would have probably fixed the pothole inside pothole problem. In the case of them being in-front and inside gas stations, I could have made it so that if there was a gas station, potholes can only spawn on the opposite half of the road from the station. This way, going through a gas station wouldn't punish the player, yet missing one had the chance to. The placement of gas stations in a row was a problem that I believe is just due to the random number generator. I could have spent some time making a function that returns a random number that hasn't been used in like the past two iterations. This would make the game seem more random, while truly being less random. The learning process for the player is very important. I did have somewhat of a subtle, self-taught tutorial at the starting city tiles, yet when the game first truly begins, it is different every time. I could have had the first ten tiles or so for the three levels pre-made, so the introduction of fallen trees and potholes was natural and easy for the player to understand. Further additions and modifications to the level generator would indeed fix these problems. Yet it seems due to thinking over it or at many times dismissing it as un-important, eventually caused me to write this today.
Now onto something that I liked quite a bit with the project. Not the 3D models, or particle effects - I did very much like them though, but the biggest shocker for me was the change in font. Before I was just using Unity's default Arial, white font. It didn't look good at all. I was going for a 1940's theme and the font made the game seem too "prototypy". So one day, I looked online and found a font called "Berlin Email." Adding this font to all the text elements and changing the colour to a white/beige/yellow colour made a large improvement. The next time I make any game, no matter the genre, setting, 2D or 3D, big or small, the font will be further forward than it was before. Because for me, what made this game seem less like a prototype, and more like an actual product, was the change in font. It also helped set the 1940's theme nicely, as the only other thing to give it away was the design of the car and the chance that the player even knew who Edward Hopper was. Spend time thinking about what era your game takes place in, or what era it's trying to emulate. Since players are always looking down at the font, putting into their minds the time period or feeling you want them to feel through the font can make a big impact.