Facepunch / sbox-issues

178 stars 12 forks source link

More control over navmesh density in specific areas #5460

Open ShadowBrian opened 7 months ago

ShadowBrian commented 7 months ago

For?

S&Box

What can't you do?

Currently the nav mesh generated is pretty low detail, it's hard to use in smaller spaces and triangles generate in weird ways at times.

How would you like it to work?

It might be good to have some sort of ability to define a bbox in the scene that lets you set the generation density of the nav mesh if it's being particularly difficult. I've got some fairly small map details that fail to get captured correctly by the navmesh no matter the agent settings I throw at it, like this for example: image

It'd be nice if I could just plop a little bbox over that area and have the navmesh try to adhere to the floor a bit better.

What have you tried?

I've tried changing the nav agent settings a bunch but it never seems to generate across that bridge, it's a bit weird really.

Additional context

No response

lolleko commented 4 days ago

Do you think this is still needed? Tilling should have improved overall navmesh generation output and the new obstacles give some manual control.

While it is now relatively easy to add this functionality, I would prefer having global settings that work for all games, rather than users having to fine tune the navmesh for specific areas.

Also could you share a screenshot where the physics of the bridge are show? physics_debug_draw 1

ShadowBrian commented 1 day ago

Here's the current navmesh, it seems a little better for sure (though the debug draw of it is kind of useless atm) Image

and here's the physics debug: Image

It's fairly basic geometry just very small I think because this is for "tabletop tanks" which are tanks at this scale: Image

I would still love to put a box over the tank arena and have very dense detailed navmesh generation in that specific box

lolleko commented 1 day ago

Here's the current navmesh, it seems a little better for sure (though the debug draw of it is kind of useless atm) Image

Horizontally it looks fine to me (assuming the red lines you drawn actually exist :D) and accurate height/vertical information is not really the responsibility of the navmesh. How do you expect "dense detailed" to look like?

Generally I am not opposed to giving more control, but I want to make sure this is really needed, as this has many implications down stream (e.g. makes optimization more complex).

It's fairly basic geometry just very small I think because this is for "tabletop tanks" which are tanks at this scale:

Is your whole game/level on that scale? Because it would be pretty straightforward to expose a global voxel size (resolution) setting. The current voxel size used for generation is 4 units, which is targeted at everything "human scale".

ShadowBrian commented 1 hour ago

It is on that scale yeah, it'd be a good first step to get access to that voxel scale so smaller maps can get all the accuracy they need for sure!