{"id":155585,"date":"2025-09-25T09:37:46","date_gmt":"2025-09-25T07:37:46","guid":{"rendered":"https:\/\/hifivem.com\/?p=155585"},"modified":"2026-06-22T20:43:52","modified_gmt":"2026-06-22T18:43:52","slug":"comment-creer-un-mlos-fivem","status":"publish","type":"post","link":"https:\/\/fivemx.com\/fr\/how-to-create-fivem-mlos\/","title":{"rendered":"Comment cr\u00e9er des MLO FiveM \u2013 Tutoriel complet | FiveMX"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A step\u2011by\u2011step guide to build, export, package, test, optimize, and ship <a href=\"https:\/\/fivemx.com\/fivem-mlos\/\">FiveM MLOs<\/a> with Blender, Sollumz, CodeWalker, and OpenIV\u2014plus troubleshooting, QA, and performance budgets.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">TL;DR: You\u2019ll set up tools (Blender + Sollumz, CodeWalker, OpenIV), model an interior with proper topology and texel density, create collisions (YBN), portals\/rooms\/occlusion (YTYP), export with Sollumz, package a resource with an <code>fxmanifest.lua<\/code>, validate in-game, and hit performance budgets using Resmon.<\/p>\n<\/blockquote>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/fivemx.com\/fivem-mlos\/\">Buy MLOs here<\/a><\/div>\n\n\n\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/fivemx.com\/mlo\/\">Free MLOs<\/a><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"who-this-guide-is-for\">Who this guide is for<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Creators who want <strong>production\u2011ready<\/strong> FiveM interiors (MLOs) with solid performance and clean packaging. You should be comfortable with Blender basics and running a FiveM server locally.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"before-you-start-tools-downloads\">Before you start: tools &amp; downloads<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Required<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Blender<\/strong> (3.x or newer): https:\/\/www.blender.org\/download\/<\/li>\n\n\n\n<li><strong>Sollumz<\/strong> (Blender add\u2011on for RDR2\/GTAV formats): <a href=\"https:\/\/github.com\/Skylumz\/Sollumz\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/Skylumz\/Sollumz<\/a><\/li>\n\n\n\n<li><strong>CodeWalker<\/strong> (map editor \/ YTYP \/ portal tools): GTAForums thread \u2192 <a href=\"https:\/\/gtaforums.com\/topic\/915149-codewalker-gtav-interactive-3d-map\/\" target=\"_blank\" rel=\"noopener\">https:\/\/gtaforums.com\/topic\/915149-codewalker-gtav-interactive-3d-map\/<\/a><\/li>\n\n\n\n<li><strong>OpenIV<\/strong> (asset exploration, texture paths): <a href=\"https:\/\/openiv.com\/\" target=\"_blank\" rel=\"noopener\">https:\/\/openiv.com\/<\/a><\/li>\n\n\n\n<li><strong>FiveM documentation<\/strong> (resource manifest, streaming): <a href=\"https:\/\/docs.fivem.net\/\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.fivem.net\/<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Nice to have<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Visual Studio Code<\/strong> for editing manifests.<\/li>\n\n\n\n<li><strong>Image editor<\/strong> (Photoshop, Affinity, GIMP) for textures.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Licensing note:<\/strong> Respect Rockstar\/Cfx policies and third\u2011party licenses. Do not redistribute proprietary game assets beyond what is permitted.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"quick-start-10-minute-overview\">Quick Start (10-minute overview)<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Install <strong>Blender + Sollumz<\/strong> and enable the add\u2011on.<\/li>\n\n\n\n<li>Create a new scene in meters (1 Blender unit = 1 meter). Import reference meshes if needed.<\/li>\n\n\n\n<li>Model your interior modularly; keep texel density consistent; avoid unseen faces.<\/li>\n\n\n\n<li>Create <strong>collision meshes<\/strong> (simple primitives) and mark them for YBN export.<\/li>\n\n\n\n<li>In <strong><a href=\"https:\/\/fivemx.com\/codewalker-update-gtav-enhanced-assets-support\/\" data-type=\"post\" data-id=\"181872\">CodeWalker<\/a><\/strong>, define <strong>rooms\/portals\/occluders<\/strong> and generate <strong>YTYP<\/strong> entries.<\/li>\n\n\n\n<li>Export with <strong>Sollumz<\/strong> \u2192 YDR\/YDD\/YBN\/YTYP where appropriate.<\/li>\n\n\n\n<li>Build a <strong>resource folder<\/strong> with <code>stream<\/code> and an <code>fxmanifest.lua<\/code>.<\/li>\n\n\n\n<li>Add resource to <code>server.cfg<\/code>, start server, <strong>validate in-game<\/strong>.<\/li>\n\n\n\n<li>Profile with <strong>Resmon<\/strong>; fix leaks, overdraw, and heavy materials.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"GTA V\/FiveM MLO Tutorial part 1 (Blender\/Sollumz)\" width=\"1290\" height=\"726\" src=\"https:\/\/www.youtube.com\/embed\/vl4MBzkYkaE?feature=oembed\" loading=\"lazy\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\">Look, I\u2019ve been there.<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">You\u2019re walking around your server, you see a building that would be the&nbsp;<em>perfect<\/em>&nbsp;spot for a mechanic shop or a hidden cartel hideout, and you walk up to the door&#8230; and nothing. Just a flat texture. A fake door. It drives you crazy, right?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That feeling is exactly why I started making MLOs (Map Loader Objects). I just wanted to open the damn door.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But then I opened up the tutorials, and suddenly people were screaming about &#8220;vertex paints&#8221; and &#8220;ytyps&#8221; and &#8220;portals,&#8221; and I honestly almost quit right there. It felt like I needed a degree in architecture just to put a box in a video game.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">So, take a deep breath. Grab a coffee (or a Red Bull, I don&#8217;t judge). I\u2019m going to walk you through this the way I wish someone had explained it to me\u2014messy, imperfect, but understandable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is how you actually start creating interiors for FiveM.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">The Toolkit (Don&#8217;t skip this)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can&#8217;t build a house without a hammer. For GTA V interiors, you need a specific set of tools. It\u2019s annoying to set up, I know, but you only have to do it once.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Blender:<\/strong>\u00a0The industry standard for 3D modeling. It\u2019s free. It\u2019s intimidating at first, but we only need a fraction of what it can do.<\/li>\n\n\n\n<li><strong>Sollumz:<\/strong>\u00a0This is a plugin for Blender. Think of it as the translator. Blender speaks &#8220;3D,&#8221; but GTA V speaks &#8220;Rage Engine.&#8221; Sollumz translates your model so the game understands it.<\/li>\n\n\n\n<li><strong>CodeWalker:<\/strong>\u00a0The map editor. You\u2019ll use this to place your building in the world and tell the game, &#8220;Hey, this is an interior.&#8221;<\/li>\n\n\n\n<li><strong>OpenIV:<\/strong>\u00a0You probably already have this. It\u2019s the file manager\/viewer.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong>Quick aside:<\/strong>&nbsp;If you haven&#8217;t installed Sollumz yet, go do that first. There are a million YouTube videos on how to install it. I\u2019ll wait here.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">Step 1: The &#8220;Shell&#8221; (Building the Box)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Okay, so an MLO isn&#8217;t just a room. It\u2019s a shell.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine you\u2019re building a dollhouse. You have the outer walls (the building you see from the street) and the inner room.<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Open Blender.<\/strong>\u00a0Delete that default cube. (It\u2019s tradition. Sorry, cube.)<\/li>\n\n\n\n<li><strong>Import the Original Model:<\/strong>\u00a0If you\u2019re modifying an existing GTA building, you need to import that building using Sollumz so you know where to cut the hole for the door.<\/li>\n\n\n\n<li><strong>Cut the Hole:<\/strong>\u00a0Literally delete the faces where the door should be.<\/li>\n\n\n\n<li><strong>Model the Room:<\/strong>\u00a0Create a simple box behind that hole. Don&#8217;t go crazy with details yet. Just make a floor, walls, and a ceiling.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">The &#8220;Inside Out&#8221; Shirt Problem<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is something that made me pull my hair out for a week: Normals.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In 3D, a wall only has one side. If the &#8220;Normal&#8221; (the front face) is pointing outwards, and you\u2019re standing inside the room, the wall will be invisible. You need to make sure the blue lines (normals) are facing into the room.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you load into the game and your walls are invisible, it\u2019s your normals. It\u2019s always the normals.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 2: Texturing (Painting the Walls)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You can\u2019t just leave it gray. GTA hates untextured models.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Blender\/Sollumz, you apply shaders. You\u2019ll usually use standard GTA shaders (like&nbsp;<code>gta_default<\/code>). You map a texture\u2014like a brick wall or concrete floor\u2014to your mesh.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Pro tip:<\/strong>&nbsp;Keep your textures &#8220;Powers of Two.&#8221;&nbsp;$512 times 512$,&nbsp;$1024 times 1024$, etc. If you try to use a&nbsp;$500 times 500$&nbsp;image, the game will throw a fit and crash. I learned that the hard way.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 3: The Scary Part (Portals)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">This is the part that breaks everyone&#8217;s brain.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A&nbsp;<strong>Portal<\/strong>&nbsp;is basically an invisible curtain. It tells the game engine:&nbsp;<em>&#8220;When the player looks through this doorway, start rendering the inside of the room. When they leave, stop rendering it to save memory.&#8221;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Without portals, you get the &#8220;void.&#8221; You know, where you look through the door and it looks like you\u2019re staring into the Blue Hell under the map? Yeah.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In Sollumz, creating a portal involves:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Selecting the vertices of your doorway.<\/li>\n\n\n\n<li>Creating a &#8220;Room ID&#8221; for the outside (Limbo) and a &#8220;Room ID&#8221; for the inside (Room 1).<\/li>\n\n\n\n<li>Connecting them.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Think of it like an airlock on a spaceship. You need to seal the transition between &#8220;Outside World&#8221; and &#8220;Inside Room.&#8221;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 4: The Export and The &#8220;YTYP&#8221;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Once your model is ready, you export it as a&nbsp;<strong>.ydr<\/strong>&nbsp;(drawable) and a&nbsp;<strong>.ybn<\/strong>&nbsp;(collision). But the game doesn&#8217;t know it exists yet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You need a&nbsp;<strong>.ytyp<\/strong>&nbsp;file. This is basically a manifest\u2014a list\u2014that tells GTA, &#8220;I have a new object, here is its name, and here are its properties.&#8221;<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Open CodeWalker.<\/strong><\/li>\n\n\n\n<li>Create a new YTYP.<\/li>\n\n\n\n<li>Add your new model to it via the MLO Archetype definition.<\/li>\n\n\n\n<li>This is where you define the MLO flags.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">Honestly? The first time you do this, it won&#8217;t work. It just won&#8217;t. You\u2019ll load in, walk to your building, and fall through the floor. It\u2019s a rite of passage.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Usually, it means your&nbsp;<strong>Collision (.ybn)<\/strong>&nbsp;isn&#8217;t lined up with your visual model. Or, you forgot to &#8220;Embedded Collision&#8221; on the export settings in Sollumz. Check that box.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Step 5: Putting it in the World (YMAP)<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Last step. You have the object. Now you need to place it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In CodeWalker:<\/p>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li>Open the project.<\/li>\n\n\n\n<li>Create a new\u00a0<strong>.ymap<\/strong>.<\/li>\n\n\n\n<li>Place your new MLO object exactly where it fits on the map.<\/li>\n\n\n\n<li>Save everything.<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">A Final Thought<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019m making this sound linear, but it\u2019s really messy. You will spend hours fixing a flickering light texture or trying to figure out why rain is falling inside your living room (that\u2019s an &#8220;Occlusion&#8221; issue, but let\u2019s save that for another day).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start small. Seriously. Don&#8217;t try to build a police station for your first project. Build a literal box with a door. Once you can walk into that box without falling through the world, you\u2019re officially an MLO developer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The feeling of walking into a room&nbsp;<em>you<\/em>&nbsp;built, seeing your friends roleplay in a space that didn&#8217;t exist yesterday? That\u2019s the best feeling in the world. It\u2019s worth the headache.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\">What should you do now?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">You need to get your hands dirty.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Would you like me to guide you through the specific installation settings for the Sollumz plugin in Blender, or should we focus on troubleshooting a specific error you&#8217;re already seeing?<\/strong><\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"project-setup-naming-discipline\">Tips for Creating MLOs<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Scale<\/strong>: Work in meters. Doors ~2.0\u20132.2m tall; counters ~0.9m; stairs rise ~0.17m.<\/li>\n\n\n\n<li><strong>Collections<\/strong>: <code>INT_MLO<\/code>, <code>COLLISIONS<\/code>, <code>LIGHTS<\/code>, <code>PROPS_STATIC<\/code>, <code>PROPS_INSTANCED<\/code>.<\/li>\n\n\n\n<li><strong>Naming<\/strong>: <code>int_shop_main_wall_A<\/code>, <code>coll_floor_A<\/code>, <code>door_backroom_A<\/code>. Consistent prefixes will save hours later.<\/li>\n\n\n\n<li><strong>Pivot\/origin<\/strong>: Set meaningful origins (hinges for doors), apply transforms (Ctrl\u2011A) before export.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"modeling-topology-best-practices\">Modeling &amp; topology best practices<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Modular<\/strong>: Build walls\/floors\/ceilings as modules to reuse and maintain.<\/li>\n\n\n\n<li><strong>Topology<\/strong>: Favor quads, keep edge flow clean, avoid superfluous loops.<\/li>\n\n\n\n<li><strong>Texel density<\/strong>: Target ~<strong>512\u20131024 px\/m<\/strong> for hero surfaces; <strong>256\u2013512 px\/m<\/strong> for background.<\/li>\n\n\n\n<li><strong>Trim sheets &amp; atlases<\/strong>: Reduce material count; batch props into atlases.<\/li>\n\n\n\n<li><strong>Cull hidden faces<\/strong>: Delete unseen geometry (behind walls, under floors) to reduce overdraw.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"materials-textures-lighting\">Materials, textures &amp; lighting<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>PBR<\/strong>: Use BaseColor\/Roughness\/Metallic\/Normal. Keep materials few (\u2264 8 for small interiors).<\/li>\n\n\n\n<li><strong>Texture sizes<\/strong>: Prefer 1k\u20132k; avoid massive 4k unless absolutely needed. Use <strong>BC7<\/strong> or <strong>DXT<\/strong> where applicable.<\/li>\n\n\n\n<li><strong>Emissives<\/strong>: For signs\/LEDs; keep intensity reasonable to avoid bloom issues.<\/li>\n\n\n\n<li><strong>Baked lighting<\/strong>: Optional lightmaps can stabilize interior look across time\u2011of\u2011day.<\/li>\n\n\n\n<li><strong>Reuse vanilla<\/strong>: With OpenIV, reference existing textures\/shaders when license allows.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"collisions-ybn\">Collisions (YBN)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong>low\u2011poly primitives<\/strong> (boxes\/cylinders) to approximate walkable surfaces and blockers.<\/li>\n\n\n\n<li>Separate collision collection (<code>COLLISIONS<\/code>) and keep names aligned (e.g., <code>coll_wall_A<\/code>).<\/li>\n\n\n\n<li>Doors\/windows that should not pass: ensure collision covers the opening or is toggled with door logic.<\/li>\n\n\n\n<li>Common pitfall: high\u2011detail collision causes physics issues\u2014<strong>simplify<\/strong>.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"rooms-portals-occlusion-ytyp\">Rooms, portals, occlusion &amp; YTYP<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Rooms<\/strong>: Logical spaces (shop, backroom, hallway) with portals at doorways.<\/li>\n\n\n\n<li><strong>Portals<\/strong>: Visibility gates; prevent rendering rooms you cannot see.<\/li>\n\n\n\n<li><strong>Occluders<\/strong>: Large surfaces that block rendering behind them (e.g., solid walls).<\/li>\n\n\n\n<li><strong>YTYP<\/strong>: Defines archetypes, LOD distances, room\/portal links.<\/li>\n\n\n\n<li>In <strong>CodeWalker<\/strong>: assign rooms, place portals, add occluders, generate <strong>YTYP<\/strong>. Validate with CW\u2019s visualization tools (room colors, portal lines).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"exporting-with-sollumz\">Exporting with Sollumz<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Install from GitHub, enable add\u2011on in Blender preferences.<\/li>\n\n\n\n<li>Assign <strong>Sollumz shaders<\/strong> and export flags as needed.<\/li>\n\n\n\n<li>Check <strong>scale and rotations<\/strong> are applied (Ctrl\u2011A) before export.<\/li>\n\n\n\n<li>Export target(s):\n<ul class=\"wp-block-list\">\n<li><strong>YDR\/YDD<\/strong> for drawable models \/ drawables with skeletons.<\/li>\n\n\n\n<li><strong>YBN<\/strong> for collisions.<\/li>\n\n\n\n<li><strong>YTYP<\/strong> for archetype\/room\/portal definitions (often finalized via CodeWalker).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"packaging-the-resource-fxmanifest\">Packaging the resource (<a href=\"https:\/\/fivemx.com\/setting-up-fxmanifest-lua-fivem\/\" data-type=\"post\" data-id=\"162266\">fxmanifest<\/a>)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Folder structure<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">[mlo-yourinterior]\n\u251c\u2500 fxmanifest.lua\n\u2514\u2500 stream\/\n   \u251c\u2500 mlo_shop.ydr\n   \u251c\u2500 mlo_shop.ybn\n   \u251c\u2500 mlo_shop.ytyp\n   \u2514\u2500 props\/\n      \u2514\u2500 ...\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Minimal <code>fxmanifest.lua<\/code><\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">fx_version 'cerulean'\ngame 'gta5'\n\nname 'mlo-yourinterior'\ndescription 'Custom MLO: YourInterior'\nversion '1.0.0'\n\nfiles {\n  'stream\/*.ytd',\n  'stream\/*.ydr',\n  'stream\/*.ydd',\n  'stream\/*.ybn',\n  'stream\/*.yft',\n  'stream\/*.ytyp',\n  'stream\/props\/*'\n}\n\n-- Ensure YTYPs are loaded\nthis_is_a_map 'yes'\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Server config<\/strong><br>Add to your <code>server.cfg<\/code>:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">ensure mlo-yourinterior\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">See the official docs for manifests &amp; streaming: <a href=\"https:\/\/docs.fivem.net\/docs\/scripting-reference\/resource-manifest\/resource-manifest\/\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/docs.fivem.net\/docs\/scripting-reference\/resource-manifest\/resource-manifest\/<\/a><\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"in-game-validation-checklist\">In\u2011game validation checklist<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u2610 Teleport into interior; verify <strong>spawn height<\/strong> and no falling through floors.<\/li>\n\n\n\n<li>\u2610 Walk every room; check door passages; no <strong>invisible walls<\/strong>.<\/li>\n\n\n\n<li>\u2610 Look through each <strong>portal<\/strong>; confirm render culling works.<\/li>\n\n\n\n<li>\u2610 Check <strong>Z\u2011fighting<\/strong> at wall\/trim intersections.<\/li>\n\n\n\n<li>\u2610 Cycle <strong>time\u2011of\u2011day<\/strong>; confirm lighting\/emissives look natural.<\/li>\n\n\n\n<li>\u2610 Stand in each room; rotate camera 360\u00b0; watch <strong>Resmon<\/strong> spikes.<\/li>\n\n\n\n<li>\u2610 Test with <strong>3\u201310 players<\/strong>; watch network and client perf.<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"performance-budgets-resmon\">Performance budgets &amp; Resmon<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Typical targets for a small\/medium MLO:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Materials<\/strong>: \u2264 8\u201312 unique materials.<\/li>\n\n\n\n<li><strong>Draw calls<\/strong>: keep low via instancing and atlases.<\/li>\n\n\n\n<li><strong>Textures<\/strong>: mostly 1k\u20132k; atlas where possible.<\/li>\n\n\n\n<li><strong>Stream size<\/strong>: aim <strong>\u2264 30\u201380 MB<\/strong> per MLO (context\u2011dependent).<\/li>\n\n\n\n<li><strong>Portals<\/strong>: add enough to isolate rooms but not excessive.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Profiling<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Use <strong><a href=\"https:\/\/fivemx.com\/how-to-use-resmon-in-fivem-optimize-resources\/\" data-type=\"post\" data-id=\"161890\">Resmon<\/a><\/strong> (<code>F8 \u2192 resmon 1<\/code>) to check CPU\/MS and memory.<\/li>\n\n\n\n<li>Toggle interiors, hide props to isolate bottlenecks.<\/li>\n\n\n\n<li>If spikes appear when looking toward a door, revisit <strong>portals\/occluders<\/strong>.<\/li>\n<\/ul>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">For a broader server\u2011wide tuning playbook, see <strong>Optimize Performance<\/strong> on FiveMX \u2192 <a href=\"https:\/\/fivemx.com\/fivem-server-optimization\/\" data-type=\"link\" data-id=\"https:\/\/fivemx.com\/fivem-server-optimization\/\">\/fivem-server-optimization\/<\/a>.<\/p>\n<\/blockquote>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"troubleshooting-matrix\">Troubleshooting<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Symptom<\/th><th>Likely cause<\/th><th>Fix<\/th><\/tr><\/thead><tbody><tr><td>Fall through floor<\/td><td>Missing\/offset <strong>YBN<\/strong><\/td><td>Align collision to render mesh; apply transforms; re\u2011export YBN<\/td><\/tr><tr><td>See other rooms through walls<\/td><td>Missing\/incorrect <strong>portal\/occluder<\/strong><\/td><td>Define rooms properly in CodeWalker; add occluders; update YTYP<\/td><\/tr><tr><td>Black\/invisible meshes<\/td><td>Shader\/texture path issue<\/td><td>Use correct Sollumz shader; verify texture paths; ensure YTDs present<\/td><\/tr><tr><td>Flickering (Z\u2011fighting)<\/td><td>Coplanar faces<\/td><td>Offset or merge faces; adjust trim thickness<\/td><\/tr><tr><td>FPS tank facing doorway<\/td><td>Overdraw due to portal gap<\/td><td>Resize\/realign portal; add occluders; simplify materials<\/td><\/tr><tr><td>Doorways block player<\/td><td>Collision overlaps<\/td><td>Edit YBN to clear passage; separate door collider<\/td><\/tr><tr><td>Emissives too bright<\/td><td>Intensity\/tonemapping<\/td><td>Lower emissive values; avoid pure white\/emissive spam<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<div class=\"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/fivemx.com\/fivem-error-codes-fixes\/\">Troubleshooting Common Errors<\/a><\/div>\n<\/div>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<figure class=\"wp-block-embed is-type-wp-embed is-provider-fivemx wp-block-embed-fivemx\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"S2OaYbsDZh\"><a href=\"https:\/\/fivemx.com\/how-to-create-a-fivem-server\/\">How To Create a FiveM Server: Must-Have Best Quick Guide<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; visibility: hidden;\" title=\"&#8220;How To Create a FiveM Server: Must-Have Best Quick Guide&#8221; &#8212; FiveMX\" src=\"https:\/\/fivemx.com\/how-to-create-a-fivem-server\/embed\/#?secret=qZW1Q0mM39#?secret=S2OaYbsDZh\" data-secret=\"S2OaYbsDZh\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Do I need a collision (YBN) for every mesh?<\/strong><br>No. Only for <strong>walkable or interactable<\/strong> surfaces. Decorative elements can remain without collision.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>How many portals should an interior have?<\/strong><br>Enough to divide logical rooms\/halls and block cross\u2011room rendering\u2014typically one per doorway\/opening.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Can I reuse GTA V textures?<\/strong><br>Often yes for in\u2011game use, but <strong>don\u2019t redistribute<\/strong> assets beyond allowed terms. Check OpenIV paths and licenses.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>My YTYP won\u2019t load.<\/strong><br>Check manifest file listing, file names, and ensure <code>this_is_a_map 'yes'<\/code> is set.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>What Blender version works best with Sollumz?<\/strong><br>Current 3.x releases are commonly used; confirm compatibility on the Sollumz GitHub.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"resources-further-reading\">Resources &amp; further reading<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>FiveM Docs<\/strong> (resource manifests, streaming): <a href=\"https:\/\/docs.fivem.net\/\" target=\"_blank\" rel=\"noopener\">https:\/\/docs.fivem.net\/<\/a><\/li>\n\n\n\n<li><strong>Sollumz (GitHub)<\/strong>: <a href=\"https:\/\/github.com\/Skylumz\/Sollumz\" target=\"_blank\" rel=\"noopener\">https:\/\/github.com\/Skylumz\/Sollumz<\/a><\/li>\n\n\n\n<li><strong>CodeWalker<\/strong> (GTAForums thread &amp; builds): <a href=\"https:\/\/gtaforums.com\/topic\/915149-codewalker-gtav-interactive-3d-map\/\" target=\"_blank\" rel=\"noopener\">https:\/\/gtaforums.com\/topic\/915149-codewalker-gtav-interactive-3d-map\/<\/a><\/li>\n\n\n\n<li><strong>OpenIV<\/strong>: <a href=\"https:\/\/openiv.com\/\" target=\"_blank\" rel=\"noopener\">https:\/\/openiv.com\/<\/a><\/li>\n\n\n\n<li><strong>GTAV Modding (general wiki)<\/strong>: <a href=\"https:\/\/gtamods.com\/wiki\/Main_Page\" target=\"_blank\" rel=\"noopener\">https:\/\/gtamods.com\/wiki\/Main_Page<\/a><\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"what-next-internal-links-ct-as\">What next? (Internal links &amp; CTAs)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Browse MLOs<\/strong> \u2192 <a href=\"https:\/\/fivemx.com\/fivem-mlos\/\" data-type=\"link\" data-id=\"https:\/\/fivemx.com\/fivem-mlos\/\">\/fivem-mlos\/<\/a> (Examples, inspiration, and ready\u2011to\u2011use maps.)<\/li>\n\n\n\n<li><strong>Best MLOs Guide<\/strong> \u2192 <a href=\"https:\/\/fivemx.com\/mlo\/\" data-type=\"link\" data-id=\"https:\/\/fivemx.com\/mlo\/\">\/mlo\/<\/a> (Curated picks, pros\/cons, performance notes.)<\/li>\n\n\n\n<li><strong>Optimize Your Server<\/strong> \u2192 <a href=\"https:\/\/fivemx.com\/fivem-server-optimization\/\" data-type=\"link\" data-id=\"https:\/\/fivemx.com\/fivem-server-optimization\/\">\/fivem-server-optimization\/<\/a> (Resmon usage, asset streaming tips.)<\/li>\n\n\n\n<li><strong>Need help mapping?<\/strong> \u2192 Contact FiveMX (custom interiors, optimization reviews).<\/li>\n<\/ul>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"copy-paste-assets-optional-starter\">Copy\u2011paste assets (optional starter)<\/h3>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\">Put these into your project as a baseline and customize.<\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Starter <code>fxmanifest.lua<\/code><\/strong> (extended)<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">fx_version 'cerulean'\ngame 'gta5'\n\nname 'mlo-yourinterior'\nauthor 'YourName @ FiveMX'\nversion '1.0.0'\n\nthis_is_a_map 'yes'\n\nfiles {\n  'stream\/**.ytd',\n  'stream\/**.ydr',\n  'stream\/**.ydd',\n  'stream\/**.ybn',\n  'stream\/**.yft',\n  'stream\/**.ytyp'\n}\n<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Recommended collections (Blender)<\/strong><\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">INT_MLO\n\u251c\u2500 STRUCTURE\n\u251c\u2500 PROPS_STATIC\n\u251c\u2500 PROPS_INSTANCED\n\u251c\u2500 LIGHTS\n\u2514\u2500 COLLISIONS\n<\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Credits<\/strong>: Thanks to the maintainers of Sollumz, CodeWalker, and the Cfx.re docs for their outstanding tooling and documentation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>A step\u2011by\u2011step guide to build, export, package, test, optimize, and ship FiveM MLOs with Blender, Sollumz, CodeWalker, and OpenIV\u2014plus troubleshooting, QA, and performance budgets. TL;DR: You\u2019ll set up tools (Blender + Sollumz, CodeWalker, OpenIV), model an interior with proper topology and texel density, create collisions (YBN), portals\/rooms\/occlusion (YTYP), export with Sollumz, package a resource with [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":199236,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1899],"tags":[],"class_list":["post-155585","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tutorials"],"blocksy_meta":{"disable_featured_image":"yes","styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/posts\/155585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/comments?post=155585"}],"version-history":[{"count":2,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/posts\/155585\/revisions"}],"predecessor-version":[{"id":207137,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/posts\/155585\/revisions\/207137"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/media\/199236"}],"wp:attachment":[{"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/media?parent=155585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/categories?post=155585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fivemx.com\/fr\/wp-json\/wp\/v2\/tags?post=155585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}