Pulse 0.7 : Collisions, Linked Properties and More!


Pulse 0.7 is out and this brings MAJOR updates:


  • 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.

    Additionally, documentation is finished!
    Or at least it was before I added all of this new stuff 😅.

    I feel like I've reached the limit of what I can and want to do with this iteration of Pulse. I will keep on testing it, but I believe I might call this a 1.0 alpha .

    Let me know what you think!

Files

pulse_v_0_7_0.yymps 46 kB
Dec 29, 2023

Get Pulse - Particle magic for GM

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.