I went through Ahoy's Iconic Arms series recently. I'm not a gun buff, but the series is excellent, going over the history of each gun featured, and discussing the pros and cons, and how they translate mechanically into games.
I've been thinking a lot about player progression, and how difficult it is to make the player feel more powerful, and yet make things consistantly harder for them. In liniar, skill-based games, this isn't actually an issue, player progression is in the meta game of trying to get to a higher level or trying to finally beat that puzzle. In more nonliniar games though, often you have a character that becomes stronger as you play, and if you just have enemies getting slightly more strong than you, the game will feel flat.
This idea formed in my head of an arena shooter which allowed you to upgrade your weapon at the end of every level. Originally, there were two things you could upgrade, firing speed and bullet size, with the first being better for taking out swarms of small enemies, the latter being better for dealing with larger ones. The idea was that the number of each kind of enemy would increase steadily, and no matter what upgrade you buy each round, the overall difficulty would increase, making progression a matter of choosing the type of weapon you want to create.
The idea progressed from there, and today after work I decided to try putting together a prototype. This is currently just a little sandbox, but now the player has two guns, with 10 stats each. Right now you can adjust each of the stats to see how everything works.