ZonePlus v3.2.0 | Construct dynamic zones and effectively determine players and parts within their boundaries

Awesome update!
Found an unsual bug (which may or may not be roblox’s own), but it’s with the paint zone.
Video kinda speaks for itself on the issue.

2 Likes

My bad, looks like I forgot to update the paint zone at the playground! Thanks for the find, should be updated now:

2 Likes

May I ask if there is any improvements with zones that contains more parts? Last time I tried it, it performed really wonky.

Thanks for the amazing update keep it up Forever!

I made a slight fix to one of the whitelists for v3 although unless you’re making your zones out of hundreds of complex shapes there should be negligible difference to performance.

Can you expand on what you mean by wonky, and/or provide a way to reproduce the behaviour?

I am creating mining game and I am using zone to tag player if they’re in mine in order to calculate the depth that they’re currently on.

Video of the behavior:
Cloudfire Studio Project #3 - Roblox Studio (gyazo.com)

But as I just realized the problem is in the complex shapes, is there any chance to make something like “BoundingBox method” of all descendants, so it will ignore missing parts and just perform as a regular cube?

Is there any way to set a character as a zone and use it as a hitbox? If so, what would be the best method of doing that?

Currently using raycasting for character hitboxes and I’m not too happy with it. I need to detect when characters collide with each other.

There is an error on hrp.Size in ZoneContriller due to hrp is nil. Changing FindFirstChild(“HumanoidRootPart”) to WaitForChild silenced this error

These are all now possible with zone:relocate() and Zone.fromRegion(cframe, size) the latest v3 release!

More details and videos here:

3 Likes

Instead of creating multiple zones with lots of complex parts, consider making a single zone instead with one gigantic part which engulfs the whole mine (or even utilise the new Zone.fromRegion(cframe, size) constructor). This will be significantly more performant.

Thanks for the report, this has also been fixed in the latest release:

Well this isn’t possible but as I am now seeing Zone.fromRegion is definitely the way to go thank you so much!

1 Like

Not for ZonePlus as zones are primarily designed to be static (although we do support dynamically moving objects). It may be worth exploring other resources like Raycast Hitbox instead:

1 Like

Thanks for the update!
However, an issue occurred in my codebase that was previously working fine:


‘LightningServer’ is a script that gets a random point from a zone every few seconds. The error occurs when calling :getRandomPoint() on the zone as you can see from the error log.

Edit: It seems zone.playerEntered and zone.playerExited don’t fire anymore? I’m probably missing something though… Using the latest push from GitHub.

Hello friend, I found a very serious problem. When the character keeps moving in the Zone, the memory (physics / steps) of the server leaks seriously! I don’t know if you noticed,,,

-- Assuming we place ZonePlus in ReplicatedStorage

local Zone = require(game:GetService("ReplicatedStorage").Zone)

local zoneGroup = script.Parent

local zone = Zone.new(zoneGroup)

--local playerNum = script.Parent.Parent.playerNum.Value

zone.playerEntered:Connect(function(player)

if player then

script.Parent.playerNum.Value = script.Parent.playerNum.Value + 1

end

end)

zone.playerExited:Connect(function(player)

if player then

script.Parent.playerNum.Value = script.Parent.playerNum.Value - 1

end

end)

With the new ItemAdded event, I can now use this rather than my custom Region3 detector!

1 Like

Thanks for the report, opened up a ticket here:

For anyone else experiencing something similar in the meantime, ensure your zoneParts all belong to the ‘Default’ CollisionGroup.

2 Likes

This doesn’t sound ZonePlus related, although if you wanted to double-check you can always disable ZonePlus then repeat the same conditions.

As some context, the playground utilises all zone methods/events and only hovers at 0.08 MB:

Your 415.00+ MB seems unusually high, it may be worth asking about in #help-and-feedback if you can’t isolate the output to ZonePlus.

Thank you very much, I appreciate it!