Custom interiors (MLOs - Map Loader Objects) and map modifications transform your FiveM server from vanilla GTA V into a unique world. Here's how to implement them properly.
What Are MLOs?
MLOs are custom-built interiors that exist inside GTA V's world. They're placed at specific coordinates and loaded as streaming assets. Examples:
- Custom police stations
- Hospital interiors
- Gang hideouts
- Nightclubs
- Dealerships
- Apartments
File Types
.ymap (Map Placement)
Defines where objects are placed in the world. Contains coordinates, rotation, and references to models.
.ytyp (Type Definition)
Defines object properties. Links models to collision data.
.ydr (Drawable Model)
The 3D model itself - the visual geometry players see.
.ybn (Bounds/Collision)
Collision data. Without this, players walk through walls.
.ytd (Texture Dictionary)
Textures applied to models. Resolution affects VRAM usage.
Installation
Basic MLO Structure
my_custom_interior/
fxmanifest.lua
stream/
my_interior.ymap
my_interior.ytyp
my_interior.ydr
my_interior.ybn
my_interior.ytd
fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
this_is_a_map 'yes'
The this_is_a_map 'yes' flag tells FiveM to treat all files in stream/ as map assets.
server.cfg
ensure my_custom_interior
IPLs (Interior Proxy Levels)
Some MLOs require IPL loading - they need specific game interiors enabled:
-- Client-side
Citizen.CreateThread(function()
RequestIpl("v_hospital")
while not IsIplActive("v_hospital") do
Wait(100)
end
end)
Common IPLs:
- Hospital interiors
- Casino
- Nightclub
- Studio apartments
- Heist setup rooms
Performance Impact
Streaming Budget
GTA V has a streaming budget - a limit on how many models can be loaded simultaneously. Custom MLOs consume this budget:
Small interior (barbershop, small office): 2-5MB streaming Medium interior (police station, hospital): 10-30MB streaming Large interior (full custom area): 30-100MB+ streaming
Poly Count
Each model adds polygons. When players are inside an MLO, GTA V only renders the interior (exteriors are culled). But when approaching from outside, both exterior and interior models may load.
Collision Complexity
Complex collision (many surfaces, detailed shapes) is more expensive for physics calculations. Simplified collision works fine for most interiors.
Optimization Tips
LOD (Level of Detail)
Well-made MLOs include LOD levels - simplified models for distance viewing:
- LOD 0: Full detail (player is inside)
- LOD 1: Reduced detail (player is nearby)
- LOD 2: Minimal (player is far away)
Texture Optimization
- Maximum texture: 2048x2048 for large surfaces
- Small objects: 512x512 or 1024x1024
- Use texture atlases (combine multiple textures into one file)
Culling
Good MLOs have proper culling volumes - invisible boundaries that tell the engine what to render. Without culling, GTA V renders everything inside the interior even when the player can't see it.
Common Issues
Falling through floor: Missing or incorrect .ybn collision file. Verify the collision matches the visual model.
Invisible walls: Collision exists but no visual model. Check .ydr files.
Missing textures (pink/purple): .ytd file not streaming correctly. Verify file names match references in the model.
Performance drop near MLO: Interior is too complex or missing LODs. Consider a simpler alternative.
On Space-Node's FiveM hosting, NVMe SSD ensures fast streaming of custom assets. Players enter custom interiors without loading pauses, and the high RAM allocations keep assets cached for quick re-entry.
