In Lenga, each emitter is a ParticleSystem component. A GameObject can host multiple particle systems when an effect needs independent layers, such as sparks plus smoke plus glow. Each component can run as a 2D system or a 3D system, and it can either store its settings directly in the scene or reference a reusable .particle.json profile.
What a Particle System Does
A particle system repeatedly creates particles, simulates them for a short lifetime, then removes them from a fixed pool. Each particle has position, velocity, age, lifetime, size, rotation, color, and renderer data. The component decides where new particles spawn, how fast they move, how their color and size change, and how they draw.
The important mental model is:
- The GameObject owns the emitter.
- The
ParticleSystemcomponent owns playback and module settings. - The modules describe emission, shape, lifetime changes, and rendering.
- Optional particle profiles let multiple components share the same effect.
- PHP scripts start, stop, restart, burst, simulate, and swap profiles at runtime.
2D And 3D
Use 2D particles for sprite-like effects in 2D scenes. They use sorting layers and order, and can fall back to simple circles when no texture is assigned.
Use 3D particles for effects in 3D scenes. They simulate in 3D space and render as camera-facing billboards by default. A 3D system can use cone, sphere, hemisphere, and box shape data today; mesh and scene-renderer emission sources are planned but not runtime features yet.
The same component and profile assets work for both modes. The Dimension field tells Lenga whether the effect should behave like a 2D emitter or a 3D emitter.
Inline Settings Or Profiles
Small one-off effects can store their modules inline in a scene. Reusable effects should live in .particle.json profile assets.
Use inline settings when:
- only one object uses the effect
- the effect is part of a single scene setup
- you are sketching quickly and do not need reuse yet
Use a profile when:
- several objects should share the same effect
- a designer should tune the effect without touching scene files
- scripts need to switch between named effects
- a prefab should reference the same authored particle behavior in many scenes
Core Guides
Start with a workflow guide:
Then learn the authoring model:
For runtime work:
Current Limits
Particles currently simulate on the CPU. GPU particle simulation is not available yet.
The modules that work in-game today: Main, Emission, Shape, Velocity Over Lifetime, Limit Velocity Over Lifetime, Inherit Velocity, Lifetime By Emitter Speed, Force Over Lifetime, Color Over Lifetime, Color By Speed, Size Over Lifetime, Size By Speed, Rotation Over Lifetime, Rotation By Speed, Noise, Texture Sheet Animation, Collision, Sub Emitters for Birth and Death burst events, Trails, and Renderer.
These modules are practical Lenga implementations, not full Unity Shuriken parity yet. Some Unity-style controls are still planned, including 3D start size/rotation, velocity orbital/radial controls, separate-axis noise/size/rotation controls, mesh and sprite shape sources, advanced renderer modes, and full trigger/sub-emitter semantics.
Particle collision can deflect particles against configured planes or scene physics colliders. Sub Emitters currently run as Lenga burst slots for Birth and Death, with Emit Probability controlling whether each slot fires. Unity-style Birth-over-lifetime, Inherit, Manual, Collision, and Trigger sub-emitter behavior will arrive in later particle phases. Trigger callbacks can be edited and saved, but do not build gameplay or final effects that depend on trigger behavior until the trigger guide says it runs in-game. External Forces, Lights, Custom Data, and Particle Force Field have no Lenga equivalent yet.