How to decide type of root node for scene?

Godot Version

4.6.3

Question

Im trying to make a 2d clickable minesweeper tile in 3d with sprite 3d and i dont know what to make the root node. Also, how do you decide what the root node should be for all the things?

You can detect clicks on Area3Ds and other physics bodies too.

The root node largely doesn’t matter, you can work around nearly any tree structure, it may be harder in some situations though. You can pick a “3d scene” which will give you the Node3D root and go from there, then pick what ever would be the most useful root later by right clicking it and select “Make Scene Root.” The most useful root node being what ever reduces the use of “Editable Children” in other scenes, or optimal transform hierarchies if you are having trouble managing rotation and scale.

If it’s just a sprite with some animations you can keep the root node as a sprite itself.
If it does a lot of things, you will eventually figure out what type it is as you build the scripts and attach a bunch of child nodes.
On my reusable interactive thingies i just default to a node3D that propagates the parent’s transform to its children and give it a “proxy/boss” script. It exposes ~10 most important and used properties to configure and customize multiple instances of it.
Any more than that and i enable “editable children” and treat each one as a category of settings to adjust. Any non-editable children are instanced at _ready() by the root’s boss script.
If the boss says you don’t appear on the editor, you will not appear on the editor. If the boss says this scene has a “niceness” value between 0.0 and 1.0, some child of the boss will get that value and do something with it on its own script.
If my guardian angels and their twisted sick of humor throw me into a situation where i have to author 100 unique, indispensable variations of the same interactive prop and they behave differently, i spend 3 weeks writing a barebones UI plugin for the editor, with sliders, wheels, toggles and buttons that translate more human terms like “snappy” into the actual internal variables like “high acceleration”, “wide rotation on transform3D”, “fast transition animation”.