Problem 1: Joining a game in progress sucks. You're most likely put on the losing team, plus you start with nothing. I'll focus on the problem of starting with nothing. Throughout the game, everyone gains $50 every 30 seconds. 10 minutes into the game, everyone would have gotten $1000 for free, but someone joining the game 10 minutes in doesn't get that. However, it's not a good solution to just give new joiners that money because they could exploit it by leaving/joining repeatedly to build turrets and spam bots. Problem 2: Switching classes could bring about some depth and strategy to the game, as well as help solve problems like having 4 assassins on one random pub team. However, switching is usually not a realistic strategy because all of the money you've spent on skills gets wasted. Once you choose a class, you're pretty much locked in. Solution to both: Implement Skill Credits. These would be separate from cash, and only usable for buying skills. First upgrade costs 1 Skill Credit, and the second upgrade costs 2. Maybe 1 credit + $250 could also buy the second upgrade if you only have one credit left. When you join a game in progress, you start with some number of Skill Credits based on how long the game has been going. Maybe one every 2 minutes. This way new joiners aren't at quite as much of a disadvantage, and there's no way to exploit it. When you switch class, your skills are converted into Skill Credits so that you can reallocate them on the class you switch to. Probably subtract one or two to discourage frequent switching and prevent any tricks that exploit the slight difference in value between credits and cash. Having this penalty would also discourage people from switching to a different class temporarily just to spawn bots (gapshots), and I think that would be a good thing.