Author Topic: Bricks and rain collision.  (Read 6752 times)

Always found it strange how Zonebricks can block raindrops but regular bricks can't. But I don't want to put Zonebricks on everything in my maps that shouldn't have rain on them.

Is there any way we could have something that makes bricks automatically block rain?

This should be what you're looking for, the Mediafire link still works

There appears to be performance impacts according to people, though.

It impacts performance on more detailed builds because it creates zones around the bricks (cuboid or otherwise), but i don't think anyone's made a better solution, if such a thing can even be done with this game, so as far as i'm aware, this is currently the only solution

I once made a mod to improve collision on ModTer bricks.  It used static shapes, so a neat side effect was that it blocked rain accurately.

But then again, once you start throwing large numbers of special objects into a server it will impact performance.

Someone could probably make a mod that lets you define various areas you want covered, and places a thin resized/rotated static shape to block the rain. 
Maybe save the positional info as a special event so it gets saved/loaded with the rest of the build.

Not exactly an automatic system, but for set-pieces and pretty pictures it could work pretty nicely.

How would performance be handled if you tried to do something like disabling rain blockers on the fly? Like you can set a configurable radius around the player where after so far out it disables rain blockers.

Not a bad idea.  The rain effect is already a clientsided box centered on the player's POV.

I cant remember the specific nature of the lag from rain blockers.  But I do remember about the lag from static shapes and how I dealt with that.  I believe it is likely a similar problem.

Static Shapes do not lag a server.  They lag a client.  You could throw 10000 static shapes on a dedicated server and it would not care.  But the moment you send information on the existence of those shapes to a client, the client is going to have some serious problems.  Even if the static shapes have basically no information attached to them.

So to fix this I used a SelectiveGhosting DLL to just- not send far away shapes to the client.

It used a system that arranged shapes in different areas into different groups, then trigger ghosting on/off on the different groups depending on the position of the player.
The shapes were grouped based on their position.  In a kind of big set of 3D zones.  The client would only recieve shapes from the nearest 18 zones.

I specifically didn't use container searches or raycasts, as Im told those kinds of searches lag when used en masse.  Just positional data and big groups that could be updated when shapes are created or destroyed.

Anyway, a system like that would require a DLL on the server, but might fix the performance issues related to lots of physics zones used as rain blockers.

Because Im talking about ghosting, that reminds me of a glitch you can use without a DLL to prevent an object from being sent to new clients who join a server.  Intangible walls and surprise hidden vehicles and such uwu.

Well I always pretty much host my own server or play Singleplayer anyways.

One of the things that bothered me though was every time I hosted in the past and had like a handful of people on the server. Soon as I turn on rain EVERYONE gets kicked because of invalid packets.

Never had that one before.  But I don't usually go heavy on the mods.

Does this happen even in default Blockland?

happened to some people on farming during the rain weather event. it was inconsistent though (most of the time people would not get kicked, but occasionally some would despite surviving most rain events) so was unable to debug the issue

Oh.  Fairly complex mod there. That'll happen.

I remember there being a bug related to the length of animation or node names causing packets to occasionally be too large.  But that was most commonly an issue with custom playertypes and a few vehicles that use support_garage.