def _generate(self):
        """Generate the racing map.

        Returns:
            None
        """
        parent_node_path, physics_world = self.engine.worldNP, self.engine.physics_world
        assert len(self.road_network.graph) == 0, "These Map is not empty, please create a new map to read config"

        LANE_NUM = self.config["lane_num"]
        LANE_WIDTH = self.config["lane_width"]

        last_block = FirstPGBlock(
            self.road_network,
            lane_width=LANE_WIDTH,
            lane_num=LANE_NUM,
            render_root_np=parent_node_path,
            physics_world=physics_world,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        self.blocks.append(last_block)

        block_index = 1
        last_block = Straight(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config({Parameter.length: 100}, parent_node_path, physics_world)
        self.blocks.append(last_block)
        block_index += 1

        last_block = Curve(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config(
            {
                Parameter.length: 200,
                Parameter.radius: 100,
                Parameter.angle: 90,
                Parameter.dir: 1,
            }, parent_node_path, physics_world
        )
        self.blocks.append(last_block)
        block_index += 1

        last_block = Straight(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config({
            Parameter.length: 100,
        }, parent_node_path, physics_world)
        self.blocks.append(last_block)
        block_index += 1

        last_block = Curve(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config(
            {
                Parameter.length: 100,
                Parameter.radius: 60,
                Parameter.angle: 90,
                Parameter.dir: 1,
            }, parent_node_path, physics_world
        )
        self.blocks.append(last_block)
        block_index += 1

        last_block = Curve(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config(
            {
                Parameter.length: 100,
                Parameter.radius: 60,
                Parameter.angle: 90,
                Parameter.dir: 1,
            }, parent_node_path, physics_world
        )
        self.blocks.append(last_block)
        block_index += 1

        last_block = Straight(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config({
            Parameter.length: 200,
        }, parent_node_path, physics_world)
        self.blocks.append(last_block)
        block_index += 1

        last_block = Curve(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config(
            {
                Parameter.length: 80,
                Parameter.radius: 40,
                Parameter.angle: 90,
                Parameter.dir: 1,
            }, parent_node_path, physics_world
        )
        self.blocks.append(last_block)
        block_index += 1

        last_block = Curve(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config(
            {
                Parameter.length: 40,
                Parameter.radius: 50,
                Parameter.angle: 180,
                Parameter.dir: 1,
            }, parent_node_path, physics_world
        )
        self.blocks.append(last_block)
        block_index += 1

        last_block = Curve(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config(
            {
                Parameter.length: 40,
                Parameter.radius: 50,
                Parameter.angle: 220,
                Parameter.dir: 0,
            }, parent_node_path, physics_world
        )
        self.blocks.append(last_block)
        block_index += 1

        last_block = Curve(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config(
            {
                Parameter.length: 50,
                Parameter.radius: 20,
                Parameter.angle: 180,
                Parameter.dir: 1,
            }, parent_node_path, physics_world
        )
        self.blocks.append(last_block)
        block_index += 1

        last_block = Straight(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config({
            Parameter.length: 100,
        }, parent_node_path, physics_world)
        self.blocks.append(last_block)
        block_index += 1

        last_block = Curve(
            block_index,
            last_block.get_socket(0),
            self.road_network,
            1,
            remove_negative_lanes=True,
            side_lane_line_type=PGLineType.GUARDRAIL,
            center_line_type=PGLineType.GUARDRAIL
        )
        last_block.construct_from_config(
            {
                Parameter.length: 100,
                Parameter.radius: 40,
                Parameter.angle: 140,
                Parameter.dir: 0,
            }, parent_node_path, physics_world
        )
        self.blocks.append(last_block)
        block_index += 1
Generate the racing map.

        Returns:
            None
        
metadrive/envs/marl_envs/marl_racing_env.py