What it does
The pack registers twelve named effects with the 3D particle system. Spawn one with
game.particles3d.effect(name, opts); a one-shot removes itself when it has drained, and a loop stays until you kill
it.
Unlike fire and sparks, these use normal blending rather than additive, because smoke hides what is behind it rather
than adding light, and they take the scene's lighting, so a puff beside a lantern warms. The puffs swell, cool and
drift on curl noise. Effects with a direction are aimed as you spawn them: an exhaust follows a car at the tailpipe
and blows backwards with yaw, a skidDust kicks out along the car's heading, and a smokeScreen lays its wall
along whichever line you turn it to.
Features
- Columns —
smoke, a rising grey column;steam, a white hissing jet for a vent or a kettle; andchimney, thin wisps leaning in a gusting breeze. - Ground layers —
mist, a pale layer about ten units across, andpoisonGas, a sickly green cloud with a glowing pool and bubbles. - Event one-shots —
pufffor a landing,smokeRingrolling across the floor,skidDustandfootstepDust. - A smoke screen —
smokeScreen, a grey wall about seven units wide that hangs and slowly thins. - Moving smoke —
smokeTrail, puffs left drifting behind whatever it follows, andexhaust, a jet that slows into rising puffs. - Few particles — the biggest,
smokeScreen, holds about 190 at once and most hold under 90.
Good for
- Shooters — smoke grenades, burning wrecks and missile trails.
- Racing and driving games — exhaust from every car, dust from every skid.
- Adventure and exploration — a cottage chimney, steam vents, a swamp at dawn, a poison-gas trap.
- 3D action games and platformers — a puff on every heavy landing and dust on every footfall.
Make it yours
scale multiplies every size, speed, distance and zone, so smokeScreen at scale: 0.5 is a smoke bomb and puff
at scale: 3 a giant landing; yaw, pitch and roll turn the zones and launch directions, and follow and
offset pin an effect to an object. One game spawns footstepDust on every footfall and skidDust on every hard
turn; another lays mist at scale: 2.5 across a valley and marks its traps with poisonGas. A black smoke or a
purple gas is a copy from game.particles3d.defs registered with registerVfx3d.
A quick look
A column over a wreck, an exhaust on a car and dust on every footstep:
game.particles3d.effect('smoke', { x: 4, y: 0, z: -2 });
const pipe = game.particles3d.effect('exhaust', { follow: car, offset: { x: 0.4, y: 0.3, z: -1.8 }, yaw: 180 });
const step = (x: number, z: number) => game.particles3d.effect('footstepDust', { x, y: 0, z });
pipe.stop(); // engine off: the plume drains away
Works with
particles-3dandparticle-textures— required: the runtime and the particle frames;core-3dincludes both.feel— a camera shake to give a landing's dust its weight.vfx3d-trails— a flame ribbon beside the smoke trail, for a missile.vfx3d-fireandvfx3d-explosion— a fire with its own smoke, and the smoke after a bang.wisps-3d— a standing column of smoke with no particles at all.vfx-smoke— the 2D counterpart.
Good to know
- Smoke does not collide, cast shadows or hurt anything: a damaging gas is game logic, and falling grit lands on world y = 0 rather than on the real floor.
smokeTrailemits by time, not by distance, so a slow mover lays its puffs close together and a fast one spaces them out.- Large soft quads overlap heavily, so a dense column costs fill rate rather than particle count.
yawandpitchdo not turn gravity, so an exhaust aimed down still rises once it slows.






