Download

Weather

So i have decided today in my random blueprint making to start on really basic rain,
eventually my game will be multiplayer so having the cloud follow the person around would be a bad idea
and filling the entire 5kx5k world with tons of rain particles would kill performance.
so i was thinking a simple solution would be an actual rain cloud… one that will randomly spawn during the day/night cycle
even sometimes not spawning for days(in game) at a time and slowly moving across the map of course picking a direction to travel at random
would this be possible? and safe to do considering i dont want to hammer performance

well follow the player wouldnt be bad even for multiplayer… just dont replicate the rain clouds, make them only clientside and only visible to the instigator

The problem you run into with clientside only rain is that this gives access to the player to modify the rain or remove it. This can cause a lot of issues with clever players who manipulate the system. You want them run on the server. However, what you can do is use the sheet method. Create a static mesh of cross sheets that match the dimensions of your levels. Then apply a panner material of rain on these cross sheets. To amplify the effect you can add particle systems on the ground of raindrops to make it look more authentic. This isn’t optimal however it is a more performant solution than setting up gpu rain particles or similar systems. The best practice, however, would be to use the cloud around player method, but do so for each player and have it reach far enough out that neither player would notice the difference. This will spawn less on screen per user and keep performance standards high, but requires a bit more maintenance as, if the rain stops, you have to make sure that the game checks for each and ever instance of the rain and stops it so one user isn’t running around with a rain cloud around them and one is not, etc.

Well isnt rain clientside all the time? I mean patch out or switch the material or whatever would remove rain even if its serverside isnt it?

It depends on how much the weather matters to gameplay. If you are using weather to, for instance, obscure vision for challenge, this should absolutely be handled by the server (for instance, weather in first person shooter maps. Without it the map becomes significantly easier to see on). However if it is a simple aesthetic I can see your point and would say handle it clientside for the sake of scalability.

well i was talking about asset hacking like removeing the stuff wich makes up the rain to get better vision. How would serverside weather be more secure? I mean arent all the files on the client computer?

Owning it on the server forces the client to verify any changes made. This means that to be able to alter the weather, the client must check with the server first instead of just being able to do it on their end. If the client attempts to access files that are not supposed to be altered during runtime the server will receive unexpected values and it can be logged appropriately. For instance, if the developer uses numerical markings to denote different weather states, and the game says that the weather state is 1(rain), but the client changed theirs to 2 (clear), the server can note the difference and log it. Because the weather information is driven by the server instead of the client, different actions can be taken at that point as the server will see that the verification failed due to a mismatch in data given and data received.