godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.17k stars 98 forks source link

Allow navigation without a mesh #8078

Open ltecheroffical opened 1 year ago

ltecheroffical commented 1 year ago

Describe the project you are working on

A 2D RPG adventure type game with proceedial generation

Describe the problem or limitation you are having in your project

i'm not able to use the builtin nav system because it forces a mesh to be used.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

Allow the ability to set NavigationAgent[2D/3D] to work without a navmesh but avoid NavigationObstacle[2D/3D]

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

A checkbox in NavigationAgent[2D/3D] to allow navigation without a navmesh.

If this enhancement will not be used often, can it be worked around with a few lines of script?

It can be worked around with A* and adding points everywhere but this will quickly lag when proceedially generating.

Is there a reason why this should be core and not an add-on in the asset library?

This is about making the engine more accessible for people who don't in this context want to write navigation from scratch.

smix8 commented 1 year ago

Please add more detail. I do not understand this proposal in its current state and I fear we are running into an XY-problem here.

ltecheroffical commented 1 year ago

1: I need a type of navigation to navigate infinitely throughout the world 2: The mesh stops me from dynamically baking it because the world is dynamic 3: The points will start lagging the more points there are. 4: I do need the pathfinding and following of navigation agents, just without requiring a region to work 5: That is a good idea but for proceedially and design terrain then the agent could work very well.

smix8 commented 1 year ago

Games of such a large size need to work with a chunk system for the game world to load parts that are needed and unload parts that are not needed. No user system or engine part can support an infinite world with everything inside all the time. If you create such a system all the points you mentioned are no longer a problem and you can use the navigation system that best suits the gameplay. Navigation can not work on empty nothing, does not have to be a mesh but it needs graph data to do pathsearches.

ltecheroffical commented 1 year ago

A way it could work is to see where the NavigationObstacle[2D/3D] are and shoot raycasts to see the next move. Also some people just follow GDQuest's tutorial on how to improve FPS so they might not think to implement a chunk system + the other optimizations godot provides like a physics server.