The main one is the rain particle which will play all throughout the level. If I manage to create more quality particles to look at and entertain the player, I will make the rain start later on in the level (after a certain time limit, kind of like in Battlefield 4: Paracel storm. Can be accomplished through level blueprints).
When I first thought of doing the rain, the first idea that came to mind is that the particles should refract the world behind it to in order to look great, however after thinking of other video games and how they accomplished this weather effect I came to realize that this isn't the best idea. The particle would turn out barely visible (the player would only notice a handful of drops out of total ~1,5 k rendered GPU particles) and would be much more expensive.
Here is a real world example:
Observing how other games accomplished it, I decided to pull out something similar with a personal touch:
Tomb Raider (starts at around 1:18):
Battlefield 4 (starts at around 2:00 mark):
Team fortress 2 (Different art style, but as you can see the idea behind the particle system is still the same):
Basically the particle system has to contain at least 2 emitters: 1 for the rain particles themselves and 1 for the falling mist to accentuate the storm effects. Both have to be GPU for optimal overall performance.
For optimal performance I think it will be a good idea to attach the particle system to the client player and make it follow through the level, much rather than strategically placing the particle system all throughout the level and have them play all at once. There also an idea of placing a box collision within the rain blueprint, so that whenever it will collide with any objects above it , the rain particle will stop temporarily. In other words, the Blueprint will always check weather or not the player is below a big object (e.g. a rooftop) .