I have been doing tons of producer, business and other tasks over the past couple of weeks, but today I wrote a tiny bit of code : I fixed the smoke growing behavior.
As of this morning each puff of smoke was a sphere that would grow linearly over time, and attempt to rise due to negative gravity. This had problems in tight corners, because the spheres were rigid and would refuse to be embedded in another object. This was especially bad if the sphere were stuck at one size, and then tried to grow even more, and it could cause the smoke puff to squirt out elsewhere.
So, I changed it so that I track the individual radii for each puff, and only allow the puff to grow on physics frames where it doesn't touch anything. While writing this post, I realized that I was letting the smoke snap to the largest possible size based on time, and not tracking the grow amount properly. This is now fixed.
This has the effect of not letting the smoke wierd out, and also letting it effectively stay compressed against a wall or something else it's being forced against due to negative gravity or the wind.