Can I ask how you went about creating your own smoke system? You're correct in that the slowdown is caused by the smoke, but I was getting the impression it was simply the number of smoke objects on-screen at once, rather than any properties they were exhibiting such as collision. I will play around with disabling the collision and see if that improves framerate.
From what I can tell, my smoke was a lot like yours. I just made objects that rotated at various speeds, changed in size and faded over time. I think I had one version that changed color over time too, so it would start out orange, turn grey and then transition to very dark grey.
Do you have anything else going on that's related to the smoke? For example, is your AI's visibility affected by the smoke?
I just did a quick test of only smoke objects (rotation, alpha, size and position changes 0). With 4000 smoke objects, I was getting just over 60fps. Adding about 40 obstacles for the clouds to collide with brought the frame-rate down to 40fps, so that seemed to have a fairly large impact (although changing how the collision-checking was done didn't really have any impact at all). That said, unless you've got thousands of smoke objects this shouldn't be an issue. I wonder what's going on in your case. I would think it should be able to handle at least a few hundred smoke objects at once without much trouble.
In terms of the number of smoke objects, I do have code that destroys them when they move off-screen, and that makes them only spawn when they appear just beyond the view boundaries (before this the entire level would continue generating smoke and I'd have single-digit frames-per-second).
One thing I do with rain and snow, which might be useful here, is that I create a fixed number of precipitation objects at the start of the room and recycle them rather than destroying them. That way, I always know how many objects will be in the room at a time and the frame-rate is consistent. It makes it much simpler to adjust everything to achieve a certain frame-rate when the numbers are constant like that.
Would you be able to elaborate on what you find strange about the walking animation?
It's a bit of a sideways waddle or crab-walk. There isn't nearly enough limb movement in my eyes.
Also, by a tighter camera, do you mean more zoomed out to allow more in view at all times, or one that moves to be slightly ahead of the current facing direction?
Zooming out could be helpful considering how little the player can see of their surroundings, but it depends on what sort of atmosphere you want. The zoomed-in camera helps with the sort of claustrophobic, "trapped in the smoke and fire" feeling.
At the very least, though, I think the character should be centered. Showing the view slightly ahead would probably be good too.