wow there's so much here! As others have said, it's fun and addictive. I'll share my thoughts on the balancing. At first it feels good to find a stronger survivor, but losing them all at the end of the level didn't. I would have liked if they were persistent between levels and could level up on their own. If you run out of health on a level, you lose all your soldiers. I think this would strengthen the gameplay by giving a risk/reward choice for engaging zombies. As it stands now, I was just blazing through each level trying to get enough wood to unlock everything (I gave up after the grind stopped being fun).
The upgrade system is nice overall, but it also had some drawbacks. Even though all the upgrades make you more powerful, some of them made the game a litle less fun. The soldier quality upgrade took away the nice feeling of finding a high quality soldier. Perhaps instead of raising the minimum level (so eventually you always got a 5-star soldier), it raised the center point of a range. Perhaps at full upgrade, it would give soldiers between level 3 and level 7 (special boosts above level 5).
The AOE options like grenades and missiles were strangely balanced against the guns. At first, they were significantly weaker than the guns due to small radius, minimal damage, (and me not knowing how to get the missiles to hit). It seems like the explosives only benefit from the damage bonus on the first target, so their damage upgrade is much less valuable than the gun variant. While the explosive radius upgrade compensates, it somehow feels worse to take out a horde of zombies with 10 blasts compared to a rifle taking out one zombie per shot in the same total time. The other problem is that by unlocking explosives, the chances of finding a gun soldier went down, so it was a significant downgrade until I could afford to upgrade them. On the missiles, they were so slow that the only way I could figure out how to consistently hit (without dying) was to run directly away from the zombies so they were in a straight line. This meant that unlike all other weapons, when you got a missile soldier, the only way to play was by drawing aggro and kiting a horde in a straight line. This excacerbated the issue where hordes disable/despawn when you get far enough away from their origin (Perhaps hordes should only deactivate based on distance if they are not actively chasing the player?)
I did experience a few bugs (health bar jumping to 0 then back up, falling out of the map, truck flying up in the air when hitting a barricade, getting softlocked when returning to base while the menu to select a new soldier was up).
Finally, it would be nice if a survivor was automatically picked up if you had the space. It would definitely help things flow a little better when you start grinding the levels for wood. Also, implementing saving between sessions is awesome!
Overall it was really fun and you did a great job! Thanks for sharing your work.