Browse docs

Custom maps & IPLs

Build or install a physical map, package it as a FiveM resource, and connect it to an Activities arena or kart track.

Custom maps are supported for paintball, lasertag and kart racing. The Activities editor places gameplay information on your map; it does not export a building, YMAP, YTYP or collision mesh.

Build the physical map

Author the venue using your GTA mapping workflow, such as Blender/Sollumz and CodeWalker, or install an existing compatible map. A usable venue needs visible geometry, textures, collision and safe entry/exit paths. An MLO additionally needs correctly authored rooms and portals. Check sightlines, doors, floor height and kart clearance in FiveM before configuring the game.

Give custom assets unique names. Include the exported YDR/YTD/YBN files, YTYP definitions, YMAP placements and any streaming manifest your export requires. Keep source files separately so the map can be rebuilt. The official FiveM asset guides cover the asset-authoring workflow.

Package your map separately

For example, a custom arena resource could contain:

Resource layout
my_activity_arena/
  fxmanifest.lua
  stream/
    my_activity_arena.ymap
    my_activity_arena.ytyp
    my_activity_arena.ydr
    my_activity_arena.ytd
    my_activity_arena.ybn

Use your actual exported filenames. A minimal manifest for this example is:

my_activity_arena/fxmanifest.lua
fx_version "cerulean"
game "gta5"
this_is_a_map "yes"

files { "stream/my_activity_arena.ytyp" }
data_file "DLC_ITYP_REQUEST" "stream/my_activity_arena.ytyp"

Keep any additional declarations required by your particular map or its author. See the FiveM resource manifest reference for map and data-file declarations.

Start the map before Activities:

server.cfg — after the Sky dependencies
ensure my_activity_arena
ensure sky_activities

Choose the IPL field correctly

How the map loadsActivities editor → Maps → IPL
Permanently loaded by its map resourceLeave empty
Explicitly requestable IPLEnter its actual IPL identifier

The IPL identifier is not automatically the resource folder name or an MLO model name. Use the identifier supplied by your map's author/export. The field accepts up to 80 letters, digits, underscores or hyphens.

Activities uses the configured map bounds for loading custom locations. It requests an IPL when needed and only releases one it requested itself. An IPL that was already active remains under its existing loader's ownership. Keep the map resource started while its activities are available.

Connect the gameplay

Create a paintball, lasertag or karting definition in /activitiesconfig. Set the public interaction, entry/exit, map bounds and sport-specific points using the Activity editor. All positions must match the installed map's world coordinates.

For an open-air map, bounds still define the playable area. For an interior, use bounds that cover the actual rooms and floors. Test every team spawn and return point, objective route, checkpoint and reset position. A successful save validates gameplay data; it does not prove the map has usable collision or correct MLO visibility.

Additional cover props

Add approved model names and suitable radii to the global ArenaProps setting before placing extra cover. In Lua mode the setting is Config.ArenaProps; in editor mode change the allowlist under General settings. A model name alone does not supply the asset: the corresponding resource must stream it. Update the anticheat model permissions for any added props.

Bowling, minigolf and table sports

  • Bowling: use the venue contract in Bowling MLOs. The lane dimensions, pins, racks and displays drive the bowling simulation.
  • Minigolf: the supplied courses include matching server-side ball collision. A new course needs that authored integration; entering an arbitrary IPL is insufficient.
  • Table sports: place a supported device profile with the editor, or use the supported existing GTA devices. Check player and camera clearance in your MLO.