Immersive Particle VFX for Ren'Py
A downloadable asset pack
Overview
Does your rain animation appear in "waves" no matter what you do? Can't get enough falling snow on the screen regardless of how high you set the particle number to? Want more fluttery movement for your falling leaves and petals so they aren't just dropping in a straight line? Or perhaps you'd like to add some extra interest to your backgrounds with smoke, sparks, fireflies, and more. This all-in-one tool makes improvements to Ren'Py's built-in Particle and SnowBlossom systems to provide you with more options to make your scenes come to life with particle effects.
Code Features
Note: click ➤ to expand for more information on each feature
Fixes a bunch of problems with the existing engine version of SnowBlossom (a particle animation class for moving particles like snow or cherry blossoms across the screen):
- Replaced start with slow_start, a property which actually spaces out starting particles intelligently. Can be combined with slow_start_ramp, allowing you to spawn fewer particles at the start and more at the end.
- Removed horizontal. Particles already know which direction they're headed and can calculate when they're offscreen for good. You can still force a direction with force_direction if preferred for slow starts, and particles can travel in any direction.
- Intelligently starts particles to fill in gaps when frames are dropped or the animation is hidden and rolled back to. Default behaviour would just leave giant gaps in the particles when you rolled back and result in waves.
- Particles appear from all relevant edges of the screen when there is diagonal movement. They also only spawn from just offscreen, so you don't have a bunch of particles that exist but can't be seen.
- No more arbitrary particle number cap! The engine implementation only spawns one particle per update cycle at most, which often results in a maximum of <100 or so particles on-screen regardless of how high the count property is and can result in a particularly comical drop-off in particle numbers if fast=True.
Adds new features to the base ParticleAnimation:
- Adds xacceleration and yacceleration to speed up or slow down particles over time. You can also specify speed via velocity and angle instead of xspeed/yspeed.
- All movement and position properties can take a single number, a tuple of two numbers, a tuple of two numbers and a distribution function, or a tuple of two numbers, a distribution function, and a third argument to provide to said function. This allows for increased control over selecting properties like speed and acceleration.
- Properties for better distributing high and low particle amounts - delay adds a randomized delay before particles restart (for small amounts), position_variance adds some randomness to exact start positions so multiple particles don't start at exactly the same height/column (for large amounts), and distribute_fast_start prevents all particles starting on the same frame (for animated particles).
- slow_start and slow_start_ramp - provide a number of seconds to slowly add particles until the right number is on-screen, and use ramp to add fewer particles at the start and more at the end for a ramping-up effect. Particularly useful for high particle counts so it doesn't look like 800 particles appear in a giant wave.
- xysize - provide an area size, so your particles don't have to go across the whole screen if you just wanna show some rain through a window.
- origin_points can be provided a list of points, a dictionary specifying ranges, or a function which will return points where particles can spawn. Can be used to make the effect act more like a particle emitter for smoke or steam, to constrain dust particles to a particular area, etc.
- + several more unique tools to help you customize the effect exactly how you like!
Adds new particle variations to do more than just falling particles:
- FlutterParticles, which add several additional movement options to particles.
- flutter_xtime and flutter_ytime combine with flutter_width and flutter_height to add a sine wave movement to particles as they move. Use it to have your particles move in circles, loop-de-loops, random wavy motions, and more.
- damp_xflutter and damp_yflutter let you reduce or increase the flutter movement over time.
- start_anywhere and lifetime properties mean you can fade in and out particles such as fireflies to have random movement. Great for snow, falling leaves or petals, fireflies, fire sparks, and more
- PerspectiveParticles, which are meant for animations that can appear in random positions, do not move, have a limited lifetime, and get smaller the smaller the ypos. Specifically, this is fantastic for raindrop splash effects as it falls onto the ground or pings off of surfaces. You'll provide an animated image, a lifetime (how long the animation is), a min/max scale, and a number of "stages" for the perspective (or stages=1 to have them all the same size).
Bonus features for masking animations and playing frame-by-frame sprite sheet animations
- mask_borders and circular_mask options will mask the particle effect with the provided borders so they smoothly fade out, either as a rectangle or an ellipse. Easily fade particles in and out from the edges with minimal impact on performance.
- BasicSheetAnim class is included, which turns a sprite sheet into a frame-based animation. Significantly more resource-friendly than the alternative ATL version with individual images.
Accessibility-friendly options for motion sensitive players
- Special CreateStaticParticles declaration which takes all the same arguments as the other particle animations, but generates a "tableau" of the particles instead of animating them. You can pass it the name of an existing animation for it to inherit the properties of.
- Several configuration options allow you to create "static" versions of your existing animations via inheritance or with an automatic ConditionSwitch so you can provide players with a toggle to turn animations off and still display a frozen version of the final animation on screen, or display your image of choice instead.
Other Features
This tool has particle image contributions from many wonderful artists, so you can get started right away creating falling leaves, snow, rain, and more! The assets are licensed under CC-BY, so you can use them freely in commercial and noncommercial projects with attribution. In particular, it includes:
- Leaves in multiple different art styles, including grayscale images ready for recolouring to match your trees
- Snowflakes and snow "puffs"
- Stars
- Cherry blossom petals
- Multiple animated raindrop splash animations
- Dust particles and small firefly glowing images
- Basic raindrop
Examples are included for rain animations, fireflies, falling snow, falling leaves, campfire smoke & sparks, and more.
Instructions
Download immersive_particle_vfx.zip and unzip it to get a libs/ folder and an images/ folder, as well as particle_examples.rpy. Drop these folders and file into your project's game/ folder and merge if asked. Several examples are provided in particle_examples.rpy, which you can try out by jumping to the label test_particles.
Compatibility
This tool has been tested for compatibility with Ren'Py 8.3-8.5, and is expected to be compatible with some earlier v8.x Ren'Py versions but has not been tested. Leave a message in the stickied thread if you run into any bugs.
Credits
I'm extremely grateful to the following individuals for volunteering their time and skill to provide images for this tool. Please take a look at their other works!
- Applesplosion (https://cara.app/applesplosion) - Watercolor splatter
- Bigeishe (https://bigeishe.itch.io/) - Leaves
- Devourfish (https://devourfish.itch.io/) - Cherry blossom petals, leaves
- KigyoDev (https://kigyodev.com/) - Leaves
- Michael Dashow (https://mdashow.itch.io/) - Raindrop splash animations
- npckc (https://npckc.itch.io/) - Snowflakes, leaves, stars
These assets are provided under CC-BY, and can be used in any project with credit, both to me for the code and to the artists whose artwork you use. An enormous thank you to these people for their work! You helped make this tool something truly special for the community.
The following images were used in the example gifs on this page:
- Bubble particles - https://cassala.itch.io/bubble-sprites (free, CC0 - not included in download)
- Forest background (for fireflies) - https://qdanp.itch.io/forest-stage-escenario-bosque (free, no license - not included in download)
- Underwater background & desert campfire background - https://maciaz.itch.io/14-fantasy-backgrounds (free with credit, not included in download)
- Winter lamppost - https://neeka.itch.io/winter-park-background-pack (free, no credit needed, not included in download)
- Rainy neighborhood and Autumn bridge backgrounds are from https://gbpatch.itch.io/our-life-nf and are illustrated by Vic Alen. Used with permission for demonstration and not included in download.
Terms of Use
You may:
- Use this code in commercial and noncommercial projects, provided you include attribution to me (Feniks) for the code and to the artists whose art you use.
- Modify and edit this code to suit your needs.
You may not:
- Release any projects created using this code without providing attribution
Attribution must be credited as Feniks, with a link to either the page with this code or to https://feniksdev.com. Credit to the artists is outlined in the Credits section, as well as in a license.txt file in the images sub-folders with their work.
Final Notes
Happy 2026! This tool became a bit of a behemoth, but I'm glad it's released and that I was able to include beautiful artwork to go with it. Be sure to check out the other submissions to the Make Visual Novel Assets jam! I have a ton more tools on my own itch.io if you're interested in what I make.
I also have a variety of tutorials on my website, feniksdev.com.
| Status | Released |
| Category | Assets |
| Rating | Rated 5.0 out of 5 stars (20 total ratings) |
| Author | Feniks |
| Genre | Visual Novel |
| Made with | Ren'Py |
| Tags | Atmospheric, environmental, fireflies, particles, rain, Ren'Py, snow, snowblossom, vfx |
| Code license | MIT License |
| Asset license | Creative Commons Attribution v4.0 International |
| Content | No generative AI was used |
Download
Install instructions
Instructions
Download immersive_particle_vfx.zip and unzip it to get a libs/ folder and an images/ folder, as well as particle_examples.rpy. Drop these folders and file into your project's game/ folder and merge if asked. Several examples are provided in particle_examples.rpy, which you can try out by jumping to the label test_particles.
Development log
- New assets + featureFeb 19, 2026
- Immersive Particle VFX is out!Feb 15, 2026






