Tracking issue: eliminate or explicitly silence all Bevy-internal execution order ambiguities #4377
Labels
A-ECS
Entities, components, systems, and events
A-Rendering
Drawing game state to the screen
C-Bug
An unexpected or incorrect behavior
C-Code-Quality
A section of code that is hard to understand or change
C-Tracking-Issue
An issue that collects information about a broad development initiative
@alfonsolage and I have made the system execution order ambiguity detector significantly more user-friendly in #4299.
As a result, I think it's now worth pushing towards internal determinism as a goal (for the reasons laid out in #2480).
At the time of writing, there are 54 pairs of ambiguities (full list in next comment), split across two stages:
CoreStage::PostUpdate
andRenderStage::Extract
. These are most usefully divided into true positives (which represent genuine bugs and require explicit ordering) and false positives (which should either be explicitly ignored or have their data access tweaked).True positives
flex_node_system
conflicts withparent_update_system
on ["Children"]ui_z_system
conflicts withparent_update_system
on ["Children"]camera_system<OrthographicProjection>
conflicts withassign_lights_to_clusters
on ["Camera"]camera_system<OrthographicProjection>
conflicts withupdate_frusta<OrthographicProjection>
on ["OrthographicProjection"]assign_lights_to_clusters
conflicts with variousupdate_frusta
systems on ["Frustum"]check_visibility
conflicts withupdate_directional_light_frusta
on ["Frustum"]False positives
change_window
,play_queued_audio_system<AudioSource>
andadd_clusters
text_system
,image_node_system
,camera_system
,text_2d_system
: clashing onAssets<Image>
camera_system<OrthographicProjection>
conflicts withcamera_system<PerspectiveProjection>
on ["Camera"] (and the same for update_frustra)extract_cameras
andextract_lights
conflict onVisibleEntities
RenderWorld
extract_sprites
,extract_clear_color
,extract_cameras
,extract_windows
,extract_uinodes
,extract_shaders
,extract_text_uinodes
,extract_text2dsprite
,extract_sprite_events
RenderStage::Extract
run on the render world #4402 should help address this, even though it's not the main goalThe text was updated successfully, but these errors were encountered: