Smoke is probably the easiest type of effect to work with, but it can be a challenge to get it right. Shaders really help on this- being able to cast and receive lighting information really integrates the effect into the scene.