Quick answer: Setting process_priority on a Godot Node doesn’t change update order relative to siblings of its parent’s siblings? Priority orders only within the same parent.
A camera in a sub-tree should run after a player movement node in a different sub-tree. Both have priorities but order isn’t respected.
Priority Scope
process_priority is relative to siblings. The engine processes children in tree order, with priority breaking ties within each parent. Cross-tree ordering uses tree depth + sibling order first.
Restructure for Order
Move the camera and player under a shared parent. The priority then determines order within that parent. Or place them in tree order such that the player’s ancestor processes before the camera’s.
Process Mode
Mix process_mode (When, Pausable, Always) with priority. A higher-priority node skipped due to mode doesn’t run, leaving downstream observers with stale state.
Tick Order Diagnostic
func _process(d): print(name, Engine.get_process_frames())Log each frame to see actual order. Use sparingly — the log is voluminous.
Verifying
Player input processes before camera each frame. Camera reads up-to-date player position; no one-frame lag.
“Priority orders siblings. Cross-tree order needs tree restructure.”
Co-locate nodes that depend on each other under one parent — predictable ordering, easy to reason about.