Built-in Particles in Blitz3D
Extended mode includes a CPU-simulated, GPU-batched particle emitter. It is designed for prototypes: start with one command and a preset, then adjust only the parts your effect needs.
Your first effect
fire=CreateParticleEmitter(500) creates an emitter entity. ParticlePreset fire,1 selects fire; presets 2-6 provide smoke, rain, sparks, magic, and dust. Call UpdateWorld and RenderWorld as usual; the default UpdateWorld value advances particles by one 60 Hz tick. Use EmitParticles fire,100 for a one-off burst.
Shape and motion
ParticleEmitterShape chooses point (0), box (1), sphere (2), or cone (3) emission. Velocity and per-axis variation come from ParticleVelocity. ParticleGravity, ParticleDrag, and one optional ParticleAttractor shape motion without callbacks or per-particle code.
Appearance
ParticleColor and ParticleSize interpolate over each lifetime. Apply a texture with the normal EntityTexture command. ParticleAnimation divides it into a sprite sheet. Render modes are camera-facing billboard (1), velocity-stretched billboard (2), and batched mesh (3). Use EntityBlend for opaque, alpha, or additive rendering.
Space, sorting, and collision
World-space particles (the default) remain behind when the emitter moves. Local-space particles follow it. Alpha effects can enable back-to-front sorting with ParticleSort. ParticleCollision optionally casts each moving particle against a Box3D world; keep collision-enabled counts modest. Use ParticleCollision emitter,0,0,0,0 to disable it.
Ready-to-run samples
Open Preset Playground, Colliding Sparks, or Mesh Particles. All three are self-contained and need no downloads.