-
-
Notifications
You must be signed in to change notification settings - Fork 22k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[4.4.1] NavigationServer3D.map_force_update no longer synchronizing map #104671
Comments
Godot 4.4 uses async map iterations by default which are threaded and sync on their own terms when the started map build is actually done. In Godot 4.3 everything happened single-threaded as the only option so force updating map properties naturally caused the map graph to updated, usually followed by causing major performance problem due to the entire build running on the main thread. The asyn map iterations can be toggled in the ProjectSettings or with the NavigationServer API. |
I see. Disabling it did help, and so does surround my map_force_update call like this
I wonder what this change means for It might be interesting to at least mention this on the Upgrading from Godot 4.3 to Godot 4.4 doc if there are no plans to change this behavior |
That function should just be deprecated and removed later as it is incompatible with async updates, enables mountains of project code smell that bites users at a later point in their projects, and had a big disclaimer from the very start when it was added for a reason. To be clear, not removing that function anytime soon, likely not before Godot 5 because some projects clearly make use of it, but it cant be updated going forward. It does not work outside of a full single-threaded context. When maps, regions, navmeshes and more all update async on their own a user cant force a map update and get the result that the user would expect. And then add threads to the mix and even more does not work anymore. There is no way to keep this function alive going forward. It does not help, users need to craft code that is robust enough that it can work with the normal (a)sync flow. |
Tested versions
Not reproducible in: v4.3.stable.mono.official [77dcf97]
Reproducible in: v4.4.1.stable.mono.official [49a5bc7]
System information
Godot v4.4.1.stable.mono - Windows 10 (build 19045) - Single-window, 1 monitor - Vulkan (Forward+) - dedicated NVIDIA GeForce GTX 1060 6GB (NVIDIA; 32.0.15.6109) - Intel(R) Core(TM) i5-4690 CPU @ 3.50GHz (4 threads)
Issue description
After calling NavigationServer3D.map_force_update in a freshly created NavigationMap, it remains in an unsynchronized state, leading to subsequent calls failing
Steps to reproduce
NavigationServer3D.map_create
NavigationRegion3D.set_navigation_map
NavigationServer3D.map_force_update
NavigationServer3D.map_get_iteration_id
and check if return is different from 0Or, with the MRP, simply open and run the project
Minimal reproduction project (MRP)
✔️ PASS - Godot 4.3: navigationserver3d.mapforceupdate-bug 4.3.zip
❌ FAIL - Godot 4.4.1: navigationserver3d.mapforceupdate-bug 4.4.zip
The text was updated successfully, but these errors were encountered: