Releases: Delfos1/Pulse
Pulse v 0.7.1
-
Code is more efficient! ⚙: I've been working hard to make the code be faster. Admitedly there is a limit to how much I can do while piggybacking on GameMakers particles but I've managed to shave a few micro-seconds. Currently you can process about 2500 particles being generated dynamically with all the bells and whistles at about 0.3 milliseconds. In FPS is about 200-300 fps. If you use cached particles, this shoots up to 1000 fps, which is likely the best performance I can get out of this.
-
Improved Cache 📦: Cache is now its own structure, which means it can be updated, serialized or in general used more efficiently. You would need to cache somewhere between the double and triple amount of live particles for the effect to be impossible to discern. Which is pretty good, imo.
-
Collisions and Occlusions 🌘 : Now you can add objects, tiles or any other collidable entity to an emitter and check for collisions. Collisions are not made particle-by-particle. Instead, it regenerates the envelope that surrounds an emitter (what in Pulse I call stencils ) and uses that to determine where to kill a particle. It will change the speed or the life of the particle depending on your configuration. This has the disadvantage that is not super precise (if your particle density is low, you could have a collision without seeing one) but it's extremely efficient. Once a collision is calculated, there are no further expenses until it is calculated again. You can also check for collisions without changing the particles life, in which case you should turn the occlusion argument to false.
-
Linked Properties 🖇 : A few properties now can be linked to another property. For example, you can change the speed of the particles depending on the speed parameter of the path where the emission is happening, or change the color mix of a particle depending on the direction they are travelling. This can bring a lot of visual variety and dynamism with little effort.
-
Death subparticle ☠: Now you can trigger a death particle ONLY when the particle reaches the edge of the emitter. An edge can be a stencil shape or a collision. The particle will have the same properties as its parent particle. Furthermore, if you make changes to the parent particle and use the reset() function, the subparticle will also be updated.
-
Radii now have an Edge property : this means you can emit particles within a radius and have the particles die beyond it, but within a limit. This gives like a fuzzy edge to your emitters.
-
Displacement maps now take RGBA as weights, and a range for how much to modify the given property
Pulse v 0.6.2
Some error fixing and general improvements on usability
Added Orient distribution
Added Local distinction for Forces
Added Final speed function
Added exists_system and particle checks
Pulse v 0.6.1
Even Distribution collapsed into set_distribution_u and set_distribution_v .
set_transformation() no longer has a rotation property, this is now set_stencil_offset()
Fixed other typos, names.
Edges correctly enforced now with stencils.
Pulse v 0.6.0
Version released on 10 SEP 2023.
It includes the following features:
- Emitters shaped as Lines, Paths or Ellipses.
- Animation Curves used as Masks
- Random distributions, Animation Curved Distributions and Even Distributions for the UV space of the emitter, plus random and AC distributions for some particle properties (speed, life).
- Displacement Maps and Color maps generated from sprites and surfaces.
- Directionality of Emitters ( away from center, along v axis, toward center, or anywhere in between)
- Focal points allow for emitting and directing the particles to different places.
- Local forces that change the particle's direction within their range (infinite or determined)
- GM Particles and Instance particles can be emitted with the same syntax.
- Particle systems can be set to sleep, awaken, super-sampled and limited particles (both manually and with an automated threshold)
- Simplified syntax for property setters for particles, plus some unique utility functions that help achieve faster, better results.
Current version is still a work in progress and things may change in the future, although I try to keep it as backwards compatible as possible.
If you do use it, let me know!