FiveM Guides

FiveM MLO Rooms and Portals: Why Your Interior Renders Through Walls or Goes Black at the Door

FiveM MLO Rooms and Portals: Why Your Interior Renders Through Walls or Goes Black at the Door

FiveM MLO Rooms and Portals: Why Your Interior Renders Through Walls or Goes Black at the Door

You install a nice new nightclub MLO, walk in, and the doorway is a solid black rectangle. Or you get inside and can see the entire Vinewood skyline through the back of the DJ booth, running at nineteen frames per second, which is at least a memorable club night. Either way the model is probably fine. What is wrong is the invisible bit: the rooms and portals that tell the engine what to draw.

FiveM MLO portals are the least documented part of interior work and the most common reason a downloaded interior looks perfect in the seller’s screenshots and broken on your server. This walks through what rooms and portals actually do, the four failure modes you will meet, and how to debug an interior without opening a 3D modelling package you do not own.

What a room actually is

An MLO interior is not a hollow box that the game happens to let you walk into. It is a set of rooms, each one a volume with its own flags, its own timecycle, and its own list of entities. When you stand in a room, the engine draws that room, plus whatever it can see through the portals leading out of it, and nothing else.

That “and nothing else” is the whole point. It is why you can have a twelve-room casino with a hundred thousand polygons of interior detail and still hold framerate, because you are only ever paying for the two or three rooms in your line of sight.

Every MLO has a room index zero, usually called limbo, and it is the room everything falls into when it has not been assigned anywhere. Limbo is special in a way that hurts: its contents are drawn whenever the interior is on screen at all, from outside as well as in. An MLO where the author never sorted the room assignments is an MLO where all four hundred props render the moment you drive past, which is the single most common cause of “this interior tanks my fps and I have not even gone inside”.

What a portal actually is

A portal is a flat quad, four corners, that sits in a doorway or a window and links two rooms. It has a direction. Looking through it from room A you can see room B, and the engine uses that link to decide what to include in the draw.

Two things follow from the direction being real. First, corner order matters. Get it backwards and the portal faces the wrong way, so from inside the room you see nothing through the door, which is your black rectangle. Second, portals are one link between exactly two rooms. A doorway that opens into a corridor which opens into a stairwell is two portals in a chain, not one big one, and the engine walks that chain when it decides what to render.

Portals carry flags for their behaviour: one-way visibility, mirror behaviour for anything acting as a reflective surface, link handling for portals that join an interior to the outside world, and options that affect how far the engine keeps drawing through them. You do not need to memorise the numeric values. You need to know that if an interior is behaving strangely at a specific doorway, the flags on that specific portal are the first place to look.

Failure mode one: the black doorway

You stand inside, look at the exit, and see void. Almost always the portal between the entrance room and the room beyond has its corners in the wrong order, so its facing is reversed. From the other side it will usually look fine, which is the tell. Walk through the doorway backwards and see whether the view is correct in one direction and black in the other.

The related version is the portal that does not exist. Some MLOs ship with a doorway that was cut into the geometry after the portals were laid out, so there is a hole in the wall with no link behind it. You can walk through, and the room on the far side simply is not drawn until you cross the boundary, at which point it pops in like a magic trick.

Failure mode two: seeing the whole city from inside a cupboard

This one is a room flag, not a portal. Rooms have an option that stops the exterior world rendering while you are inside them, which is what makes a windowless basement cheap to draw. If that flag is missing, standing in the basement means the engine is still drawing Los Santos on the other side of the concrete, and you get an interior that costs as much as being outside plus the entire interior on top.

Symptoms are always performance first, visual second: fps drops the moment you step inside, and if there is any gap in the geometry you catch a glimpse of the skyline through it. The fix is on the room, and if you did not build the MLO, the fix is a message to whoever did.

This is the same class of problem as the rest of the interior performance picture. An MLO with sloppy rooms is expensive in exactly the way a badly optimised asset pack is expensive, and the diagnosis is the same: watch the numbers change as you move, and trust the numbers over the screenshot. If you are already running monitoring on the server side, remember this one is entirely client-side, so it will not show up there at all.

Failure mode three: props that vanish or float

Entities inside an MLO belong to a room. Assign a chair to the wrong room and it disappears the moment you cannot see the room it thinks it is in, which produces furniture that blinks out when you turn your head. Assign it to limbo and it never disappears at all, which is worse for performance and looks fine, so it goes unnoticed for months.

Doors are their own special case. A door in a doorway is visible from both rooms, so it needs to be attached to the portal rather than living in one room and hoping. Get that wrong and the door is only drawn from one side, which is exactly as unsettling as it sounds when someone is standing on the other side of it knocking.

Failure mode four: it works for you and not for anyone else

Interiors need their manifest data to load properly, and interiors that are edited or replaced need the game to be told to refresh them. On a server, the classic version of this is the MLO that works perfectly for you, because you were there when the resource started, and shows as the original Rockstar interior for everyone who joined afterwards.

The tools here are a small set of interior natives. You can ask what interior is at a set of coordinates, ask which room an entity is currently in, force a refresh of an interior after changing it, and activate or deactivate entity sets, which is how MLOs ship optional furniture layouts. A useful debug resource is about forty lines: print the interior id and room key you are standing in, on a keybind. Half the interior bugs you will ever chase are solved the moment you can see that you are standing in limbo rather than in the room you thought.

Entity sets deserve their own warning. If an MLO has eight furniture variants and your script activates all of them because that was easier than picking one, you are rendering eight sofas in the same place forever. Pick one, activate one.

Debugging without CodeWalker

You will get further than you expect from inside the game:

  • Stand still and check which interior and room you are in. If the room key comes back as limbo while you are clearly in a bedroom, that is your answer.
  • Walk each doorway in both directions and note where the view breaks. A break in one direction is a facing problem, a break in both is a missing portal.
  • Watch your frame time from outside, at the entrance, and deep inside. If it barely changes between outside and inside, the exterior is still being drawn.
  • Turn the resource off and back on and see whether the problem is only present for people who joined before it started.

When you do open CodeWalker, the interior view will show you the room volumes and portal quads directly, which makes most of the above obvious in about ninety seconds. That is the point at which a converted interior stops being a mystery box, and it is worth learning even if you never intend to build one, in the same way that understanding what does and does not port from a singleplayer mod is worth knowing even if you only ever buy assets.

Buying interiors with this in mind

Ask sellers for a frame time reading from outside and from inside the busiest room. Ask how many rooms the interior has. An interior with one room is either very small or has no room structure at all, and the second one is a lot more common than sellers advertise. If the shop screenshots are all taken from inside with no view of a doorway, that is not a coincidence.

The comparison worth making is with vehicle packs. Everybody has learned to ask about the streaming weight of a car pack because the download size is right there in front of you. Interiors hide their cost inside the room structure, where nobody looks, until forty people are in the club and the whole server is on nineteen frames.

The short version

Rooms decide what gets drawn, portals decide what you can see from where, and limbo is where good performance goes to die. Black doorway means a portal facing the wrong way, city-through-the-wall means a room flag, blinking furniture means a bad room assignment. Learn to print your current interior and room, and the nightclub stops being haunted.