How do I use auto mapping

how do I make a rule file because when I click auto mapping it says I need a rule file and can I use Auto mapping to make a infinite level like if Im making a platformer similar to nyan cat can I make it where my set platforms and ground repeat infinitely so that its one constant level. Heres my code if that helps

“”"
Platformer Game
“”"
import arcade

Constants

SCREEN_WIDTH = 1000
SCREEN_HEIGHT = 650
SCREEN_TITLE = “Rainbow-Chicken Flight”

Constants used to scale our sprites from their original size

CHARACTER_SCALING = 0.777
TILE_SCALING = 0.5
COIN_SCALING = 0.5
SPRITE_PIXEL_SIZE = 128
GRID_PIXEL_SIZE = (SPRITE_PIXEL_SIZE * TILE_SCALING)

Movement speed of player, in pixels per frame

PLAYER_MOVEMENT_SPEED = 10
GRAVITY = 1
PLAYER_JUMP_SPEED = 20

How many pixels to keep as a minimum margin between the character

and the edge of the screen.

LEFT_VIEWPORT_MARGIN = 250
RIGHT_VIEWPORT_MARGIN = 250
BOTTOM_VIEWPORT_MARGIN = 100
TOP_VIEWPORT_MARGIN = 100

class MyGame(arcade.Window):
“”"
Main application class.
“”"

def __init__(self):

    # Call the parent class and set up the window
    super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)

    # These are 'lists' that keep track of our sprites. Each sprite should
    # go into a list.
    self.coin_list = None
    self.wall_list = None
    self.dont_touch = None
    self.player_list = None

    # Separate variable that holds the player sprite
    self.player_sprite = None

    # Our physics engine
    self.physics_engine = None

    # Used to keep track of our scrolling
    self.view_bottom = 0
    self.view_left = 0

    # Keep track of the score
    self.score = 0

    # Load sounds
    self.collect_coin_sound = arcade.load_sound("bing.wav")
    self.jump_sound = arcade.load_sound("woop.wav")

    arcade.set_background_color(arcade.csscolor.CORNFLOWER_BLUE)

def setup(self):
    """ Set up the game here. Call this function to restart the game. """

    # Used to keep track of our scrolling
    self.view_bottom = 0
    self.view_left = 0

    # Keep track of the score
    self.score = 0

    # Create the Sprite lists
    self.player_list = arcade.SpriteList()
    self.wall_list = arcade.SpriteList()
    self.coin_list = arcade.SpriteList()

    # Set up the player, specifically placing it at these coordinates.
    image_source = "game character.png"
    self.player_sprite = arcade.Sprite(image_source, CHARACTER_SCALING)
    self.player_sprite.center_x = 128
    self.player_sprite.center_y = 128
    self.player_list.append(self.player_sprite)

    # --- Load in a map from the tiled editor ---

    # Name of map file to load
    map_name = "map.tmx"
    # Name of the layer in the file that has our platforms/walls
    platforms_layer_name = 'Platforms'
    # Name of the layer that has items for pick-up
    coins_layer_name = 'Coins'

    # Read in the tiled map
    my_map = arcade.tilemap.read_tmx(map_name)

    # -- Platforms
    self.wall_list = arcade.tilemap.process_layer(map_object=my_map,
                                                  layer_name=platforms_layer_name,
                                                  scaling=TILE_SCALING,
                                                  )

    # -- Coins
    self.coin_list = arcade.tilemap.process_layer(my_map, coins_layer_name, TILE_SCALING)

    # --- Other stuff
    # Set the background color
    if my_map.background_color:
        arcade.set_background_color(my_map.background_color)

    # Create the 'physics engine'
    self.physics_engine = arcade.PhysicsEnginePlatformer(self.player_sprite,
                                                         self.wall_list,
                                                         GRAVITY)

def on_draw(self):
    """ Render the screen. """

    # Clear the screen to the background color
    arcade.start_render()

    # Draw our sprites
    self.wall_list.draw()
    self.coin_list.draw()
    self.player_list.draw()

    # Draw our score on the screen, scrolling it with the viewport
    score_text = f"Score: {self.score}"
    arcade.draw_text(score_text, 10 + self.view_left, 10 + self.view_bottom,
                     arcade.csscolor.WHITE, 18)

def on_key_press(self, key, modifiers):
    """Called whenever a key is pressed. """

    if key == arcade.key.UP or key == arcade.key.W:
        if self.physics_engine.can_jump():
            self.player_sprite.change_y = PLAYER_JUMP_SPEED
            arcade.play_sound(self.jump_sound)
    elif key == arcade.key.LEFT or key == arcade.key.A:
        self.player_sprite.change_x = -PLAYER_MOVEMENT_SPEED
    elif key == arcade.key.RIGHT or key == arcade.key.D:
        self.player_sprite.change_x = PLAYER_MOVEMENT_SPEED

def on_key_release(self, key, modifiers):
    """Called when the user releases a key. """

    if key == arcade.key.LEFT or key == arcade.key.A:
        self.player_sprite.change_x = 0
    elif key == arcade.key.RIGHT or key == arcade.key.D:
        self.player_sprite.change_x = 0

def on_update(self, delta_time):
    """ Movement and game logic """

    # Move the player with the physics engine
    self.physics_engine.update()

    # See if we hit any coins
    coin_hit_list = arcade.check_for_collision_with_list(self.player_sprite,
                                                         self.coin_list)

    # Loop through each coin we hit (if any) and remove it
    for coin in coin_hit_list:
        # Remove the coin
        coin.remove_from_sprite_lists()
        # Play a sound
        arcade.play_sound(self.collect_coin_sound)
        # Add one to the score
        self.score += 1

    # --- Manage Scrolling ---

    # Track if we need to change the viewport

    changed = False

    # Scroll left
    left_boundary = self.view_left + LEFT_VIEWPORT_MARGIN
    if self.player_sprite.left < left_boundary:
        self.view_left -= left_boundary - self.player_sprite.left
        changed = True

    # Scroll right
    right_boundary = self.view_left + SCREEN_WIDTH - RIGHT_VIEWPORT_MARGIN
    if self.player_sprite.right > right_boundary:
        self.view_left += self.player_sprite.right - right_boundary
        changed = True

    # Scroll up
    top_boundary = self.view_bottom + SCREEN_HEIGHT - TOP_VIEWPORT_MARGIN
    if self.player_sprite.top > top_boundary:
        self.view_bottom += self.player_sprite.top - top_boundary
        changed = True

    # Scroll down
    bottom_boundary = self.view_bottom + BOTTOM_VIEWPORT_MARGIN
    if self.player_sprite.bottom < bottom_boundary:
        self.view_bottom -= bottom_boundary - self.player_sprite.bottom
        changed = True

    if changed:
        # Only scroll to integers. Otherwise we end up with pixels that
        # don't line up on the screen
        self.view_bottom = int(self.view_bottom)
        self.view_left = int(self.view_left)

        # Do the scrolling
        arcade.set_viewport(self.view_left,
                            SCREEN_WIDTH + self.view_left,
                            self.view_bottom,
                            SCREEN_HEIGHT + self.view_bottom)

def main():
“”" Main method “”"
window = MyGame()
window.setup()
arcade.run()

if name == “main”:
main()

Hey @bigmike, welcome to the Tiled forums!

The AutoMapping feature is documented in the Manual. However, it has nothing to do with infinite mapping or content generation. It is an in-editor tool for automating the placement of tiles and/or objects using pattern-matching.