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.