Well this now has been superceded by the GSE Refresh so I now use the core Microsoft method of doing this. I will put up an example of it in use with a code example

My Particle System in action:

Again a mish mash of other peoples work made to fit my engine. I have however added the ability to have the particles drift and flow on any of the X,Y or Z axis. Still have much work to do concerning particles...

My Terrain:

This was taken from Riemers tutorials which can be found here: http://www.riemers.net/Good solid tutorials, a good place to start I think.

My Fire:

I have much more in there, but not enough time to post them here yet. If I get a moment or two I will put them up along with code samples.