@Erich_L said:
I guess I am wishing there was an article somewhere titled "How Godot Processes your Game". In my dreams it would give insights specifically in places that will prompt game developers to work in a way more... uhhh... "compatible" with Godot.
Yeah, this is an excellent idea! Something like that would fit nicely into docs as well - 'How Godot ticks' :) Maybe you should go ahead and try to write it while at the same time learning the stuff. Often the best articles are written that way.
I'll point out that I too am a Godot noob. And while prior experience surely helped to grasp things faster, I was utterly confuddled when started tinkering with it. To be honest I'd never recommend this type of game engine to someone with little programming experience. if this type of environment is your first serious encounter with a programming language, it could get very confusing and reinforce some bad programming practices. This is not really Godot's fault. Same goes for Unity, UE or anything in this category. Engines are imho just too heavyweight a tool for people without at least some basic computer science knowledge. But it's hard to resist as they come with a seductive promise of 'making games' :)
Anyway, for anyone who might be interested here's a very simple script that can help understand the order of initialization. It can be attached to all nodes of interest in the scene:
extends Node
var foo = print(get_instance_id(), " '", get_name(), "' property initialization")
func _init():
print(get_instance_id(), " '", get_name(), "' _init()")
func _enter_tree():
print(get_instance_id(), " '", get_name(), "' _enter_tree()")
func _ready():
print(get_instance_id(), " '", get_name(), "' _ready()")
And here's the output for just two nodes in a parent-child relationship. Note how nodes don't even have their names initialized before they are added to the scene tree:

1193 '' property initialization
1193 '' init()
1194 '' property initialization
1194 '' init()
1193 'Parent' enter_tree()
1194 'Child' enter_tree()
1194 'Child' ready()
1193 'Parent' ready()