Gridform Particle Tutorial


The following is a breakdown/tutorial of how most of the particle effects in Gridform are made. I will be using the standard particle systems in Unity(Not VFX Graph).

In reality the effects in Gridform are extremely simple but act as a good base line to teach some fundamentals. So if the particle effects in your game currently look like this:

Then keep reading so you can get them looking more like this:


Table of Contents

TL;DR

  • Use Bloom
  • Make a custom particle shader
  • Fade out particles by scaling on the Y axis
  • Use a curve on the speed modifier instead of drag for precise control
  • Add collision
  • Randomize the lifetime and start speed of particles
  • Duplicate, tweak, and combine effects to fill them out
  • Add enviromental particles like smoke and pieces of a wall
  • Add fake lights


Basic Setup & Shaders

For this example I am using Unity with URP. The pipeline is not very important, but this section will be more relevant to URP/HDRP over standard.

Post Processing Bloom

If you want glowy sparks then you will need some sort of post proccesing bloom. For this I am just using the default URP bloom with some tweaked settings.

Emissive Particle Shader

By default URP does not have a particle shader that works how I like, but it is really easy to make it from scatch. Create a new shader graph under:

Create/Shader/UniversalRenderPipeline/Lit Shader Graph

Inside the shader all we need for now is to multiply the vertex color by an emmision value and plug it into the color.

The add 1 node exists to clamp the multiplication to a minimum of  * 1. 

This shader will let use use the color values from our system in an emmisive material. The default URP particle materials have emmision but it does not grab the vertex color from the particle systems so its a no go.

Finally just make a material with the new shader we made. I found an emmission value of ~ 100 was good.

Starting System

First we just need to get a super basic system set up. If you are even slightly familiar with Unity particles you can probably skip this section.

Create a new system by:

GameObject/Effects/Particle System

The following are the basic settings we need to change in order to get a simple system like the first gif at the top of the page.

Main

  • Start Lifetime: 0.5
  • Start Speed: 12
  • 3D Start Size: CHECKED
  • Start Size: (0.05, 0.4, 1)
  • Start Color: Whatever color you want

Emission

  • Set both rates to ZERO, and add a new burst to the list.
  • Keep all the values the same except set count to ~100

Shape

  • Change the shape to a sphere

Renderer

  • Render Mode: Streched Billboard
  • Material: Our new Particle Glow Material
  • Pivot: Set Y to 0.5

If everything went well you should now have a system that looks something like this:

Fade Out

So first we need to find a way to fade out the particles since right now they just disapear. My favorite way to do this is by just shrinking the particles. Simply scaling the particles over time works but doesnt look great. Longer particles lose a lot of their "volume" making them only a pixel or two thick (look at the first gif on this page for refernce). The solution to this is to scale only a SINGLE AXIS of the particle. So for ours we are going to scale the Y axis to zero over time like so:

Now our system should look something like this:

You can also use they Size by Speed settings, but I find it to finicky to work with. Scaling over time works good enough for me.

Movement

Right now our particles still look very janky because they are not obeying physics. Sparks are "long" because of our persistance of vision. We are essentially simulating the motion blur of a very small ember traveling very fast. As particles lose their speed they "blur" less so they get smaller. Blah blah blah...we need to slow them down.

If you want your particles to be more physically accurate you may want to use the Drag value under Limit Velocity over Lifetime section. However, I don't like using that so instead we will be using the Velocity over Lifetime section.

My #1 secret tip to really cool looking particles is manually animating the Speed Modifier. This gives you a ton of control over the character of a particle. So first lets change the speed modifier to a curve:


Now we have full control over the particles speed over time. My go-to for simple effects like this is to just drag the right key down near zero at about t=.85


Of course you'll need to tweak it to fit what you want, but I find this creates a much more "snappy" feel to effects. The faster you slow down the particles the more intense they will feel. Remember that the if you slow them down very quickly you will need to compensate a little by increasing their initiale speed.

If we look at our system it should look something like this:

Collision

This is a really simple step but an important one. Particle collision is relatively cheap but makes them look great. All you need to do Is turn on the Collision section and change Type to WORLD


You can play with the settings but I generally just leave them how they are.

THAT SAID you probably don't want to leave the COLLIDES WITH setting to EVERYTHING. In my games I have a "Walls" layer that particles collider with, but do whatever you want.

Fixing the Shape

So by now we have done a lot to make the system more interesting but it still looks really boring. This is since every particle goes at the same speed for the same amount of time. We pretty much just have a sphere that gets bigger. All we have to do to fix this is randomise the particles lifetime and starting speed. 

Choose Random Between Two Constants from the Triangle besides both Lifetime and Star Speed.

For Lifetime I usually keep the min value at ~ 0.1 and the max value at anywhere between 0.5 - 2. It really depends on your scenario.

For Speed a max value of at least 2x the min value is a good start. Currently my settins are:


And now our system is starting to look pretty good.

Extra Bits

AKA The last 10%

By now I would say our particles could earn a solid B, but theres still a lot more to spice them up. The following are a few tricks I like to use to make particles more interesting. This part won't be comprehensive, but if you have made it this far you can figure it out.

More Sparks

A super easy trick is to just duplicate you effect and make it a child of the original. Then just change a few settings like the size and lifetime of the particles. In this case I made the particles smaller, live longer, and smoothed out their speed curve. 

It took probably 45 seconds and make the effect look much more interesting and dynamic.

Carnage

Usually when you are using spark effects like this something has exploded, hit a wall, been shot, etc. Whatever it is you want to add some element of its source to the effect. For example, if the effect is of a bullet hitting a wall add some mesh particles that look like bricks or pieces of a wall. In Gridform all the enemies are made out of wireframes so all the death effects have the left over edges of the destroyed enemy.

If you are at a loss for what you should add you can never go wrong with some extra smoke and embers.

Fake Lights

While point lights are often paired with particle effects it is also worth faking lights as well. I do this by have a system with a single transparent particle that quickly fades away. I find that the Unity default particle texture is perfect for this. Heres the previous Gridform particle with an added fake Light:



With light on left, without on right.

It won't make or break an effect, but it will add a little extra volume if used right.

End

And thats it. Hopefully i've given you some more tools to actually make your effects look they way you imagined them looking. Obviously this was not a comprehensive guide but I think once you get the basics down new tricks will present themselves to you.

The project files for all the effects shown can be found here.

If you thought this was helpful let me know any maybe follow my twitter:

https://twitter.com/AlanSherba

Comments

Log in with itch.io to leave a comment.

(+1)

This is amazing, thank you. I've been looking for this kind of guide for a while. I discovered your work through your free particle asset pack on the Unity asset store and ended up playing your game. I'm surprised to learn that you made your VFX using only the basic Unity particle system :o 

Thanks! Its cool to hear that you found my game through the asset store haha. 

Nowadays I have started to use VFX graph more often, but the basic Unity particle system still holds a special place in my heart.