def set_animation_support_objects(self):
        """Create and set objects for the animation."""
        ### create object whose image attribute represents
        ### a robot

        self.robot = CachedImageObject(
            "splash_nodezator_robot.png",
            {"use_alpha": True},
        )

        ### create objects representing nodes

        ## build a custom list of objects representing
        ## nodes

        self.floating_nodes = List2D(
            Object2D.from_surface(
                render_layered_icon(
                    chars=[chr(ordinal) for ordinal in (177, 178, 179)],
                    dimension_name="height",
                    dimension_value=20,
                    colors=[
                        BLACK,
                        color,
                        NODE_BODY_BG,
                    ],
                    background_width=27,
                    background_height=27,
                )
            )
            for color in (
                (185, 0, 100),
                (0, 185, 100),
                (0, 155, 185),
            )
        )

        ### set animation for each node and update the
        ### node animation

        for index, node in enumerate(self.floating_nodes):

            set_node_animation(
                index=index,
                node=node,
                parent=self.robot,
            )

            node.update()

        ### create objects whose image attribute represents
        ### a robot arm

        self.robot_arms = List2D(

            ## obj
            CachedImageObject(img_filename, {"use_alpha": True})

            ## image file names
            for img_filename in (
                "splash_nodezator_robot_arm_a.png",
                "splash_nodezator_robot_arm_b.png",
            )

        )


        ### reference all objects in the same custom list

        self.animation_objects = List2D(
            [
                self.robot,
                *self.floating_nodes,
                *self.robot_arms,
            ]
        )

        ### create and store an object whose image will
        ### be used as a background for the animation,
        ### representing a gradient

        ## reference the animated objects' rect
        rect = self.animation_objects.rect

        ## define the size of the object relative to the
        ## area occupied by the existing objects
        width, height = rect.inflate(-10, -40).size

        ## define a center for the gradient relative to
        ## the existing objects center
        center = rect.move(-20, -40).center

        ## create the object with a surface made of
        ## a solid color (default is black), already
        ## properly positioned

        gradient_bg = Object2D.from_surface(
            surface=render_rect(width, height),
            coordinates_name="center",
            coordinates_value=center,
        )

        ## now, finally draw the gradient in the object's
        ## surface then store it in the beginning of the
        ## custom list for animation objects

        # draw gradient

        draw_linear_gradient(
            gradient_bg.image,
            SPLASH_ROBOT_BG,
            start_percentage=0.5,
            stop_percentage=1,
            max_lightness_percentage=1.0,
            min_lightness_percentage=0.4,
            direction="top_to_bottom",
        )

        # store object
        self.animation_objects.insert(0, gradient_bg)

        ### set robot animation

        set_robot_animation(
            robot=self.robot,
            robot_arms=self.robot_arms,
            parent=gradient_bg,
        )

        self.robot.update()

        ### gather update operations for animated objects
        ### in a single list stored in a dedicated attribute

        ## robot's update operation must come first
        self.anim_update_operations = [self.robot.update]

        ## then we extend the list with the nodes' update
        ## operations

        self.anim_update_operations.extend(

            ## update method of each node
            node.update

            ## for each floating node
            for node in self.floating_nodes

        )
Create and set objects for the animation.
nodezator/splashscreen/main.py