Game objects

So I wanted to make a stage-based engine with game objects.

Basically every “stage” contains a render, tick, and init method. They also contain one game object, called root object.
Game objects contain a array list of game objects called “children”. Then, when the’re rendered, they draw everything in their children.

Also, during the render of every stage, it just renders all the “root objects” children.

Is this a good way to handle things? I needed a easy way to implement shaders by drawing everything from one method.