For the AI profiles, a small set of numbers per driver goes a long way: reaction delay, following distance, how often they change lanes, and how late they brake. Mixing 3 or 4 profiles in the same traffic already reads as “people” rather than “cars on rails”.
The thing to watch is fair vs unfair unpredictability. If a car swerves into you with no warning it feels like the game cheated. If it signals or drifts toward the line half a second first, the same move feels like a near miss you dodged. Telegraphing is what makes weaving through traffic a skill instead of luck.
On the logger: one thing that paid off for us is keeping the last ~200 lines in a ring buffer in memory and attaching them automatically to any bug report or crash, along with a small dump of game state. Most player bug reports are one sentence, and those 200 lines are usually where the actual answer is.
On the license: AGPL is a fair choice for your own game, but for a template it’ll scare off a lot of people, since anything built from it inherits AGPL. If you want others to start projects from it, MIT/Apache for the template (or dual licensing) is more common in the Godot world.