The impact is the signature moment, so I wanted it to be a real simulation rather than a sprite: a fireball and a dust surge baked as volumes, five seconds at twenty-four frames, for the Unreal client to play back. The dust surge came out close to what I had in my head. The fireball did not. I lost the better part of two days before a single frame of smoke existed, and the reasons are worth writing down, partly so I never have to find them twice.
The moment the volume is for. Cinematic art.First, getting a smoke bake to run at all
The simulation runs in Blender, driven from Python. In every version of Blender you can install as a Python package, no smoke bake works. Not mine, none: even the default quick-smoke setup fails on every frame with a missing-attribute error and writes empty caches. I spent a long time assuming the fault was in my setup, because that is usually where it is. The cause turned out to be that the fluid solver’s Python classes are registered without their base classes, so the first inherited method is missing. The fix was to give each class its parent back before baking, by writing the class’s base and lookup chain directly. It does nothing in a healthy build and makes the broken ones bake normally. The process still crashes on exit, after everything is written. Harmless, ugly, and I have decided to live with it.
Then, why the fireball would not rise
Blender clamps buoyancy and divides it by the domain size, so at a hundred and fifty metres the heat barely lifts the cloud. Settings of two, three and fifty gave the same result, which is the kind of thing that makes you doubt your own eyes. So I stopped looking at it and started measuring each frame. A broad hot layer hugs the floor, and multiplying gravity did not help. The conclusion was that the shape has to come from the emitter and the timing, not from the physics settings.
What I have is a fireball that bursts white and turns into a dark, sooty cloud that stays inside its domain, building a rounded dome about seventy to eighty metres tall. I had asked for a mushroom with a cap on a stem at a hundred metres or more. The dust surge, which is the part the player actually sees from the game camera, is right, and I am holding on to that.
What happens next
Either a taller emitter burst with a delayed second pulse for the cap, or a two-volume approach where the stem and the cap are separate simulations composited in the engine. Both are cheap to try now that bakes run at all, which, after those two days, feels like luxury. Whether the mechanic itself earns its place is a separate question, and a separate dispatch.

