{"id":155585,"date":"2025-09-25T09:37:46","date_gmt":"2025-09-25T07:37:46","guid":{"rendered":"https:\/\/hifivem.com\/?p=155585"},"modified":"2026-08-20T11:38:06","modified_gmt":"2026-08-20T09:38:06","slug":"comment-creer-un-mlos-fivem","status":"publish","type":"post","link":"https:\/\/rpcrate.com\/fr\/how-to-create-fivem-mlos\/","title":{"rendered":"Comment construire et tester un int\u00e9rieur MLO FiveM"},"content":{"rendered":"<p>Construisez votre premier MLO FiveM comme un petit int\u00e9rieur avec une porte, une collision et une visibilit\u00e9 de pi\u00e8ce correcte. Gardez le projet modifiable s\u00e9par\u00e9 de la ressource export\u00e9e, et testez chaque couche avant d'ajouter des accessoires d\u00e9taill\u00e9s ou de l'\u00e9clairage.<\/p>\n<p>Confirmez l\u2019\u00e9dition GTA vis\u00e9e avant d\u2019installer ou d\u2019exporter des \u00e9l\u00e9ments. Les paquets Legacy ne sont pas automatiquement compatibles avec Enhanced ; suivez <a href=\"https:\/\/docs.fivem.net\/docs\/server-manual\/onboarding-guide-fivem-for-gtav-enhanced\/\">les directives officielles de conversion d'assets Enhanced<\/a> si c'est votre cible.<\/p>\n<h2 id=\"prepare-the-tools-and-source-files\">Pr\u00e9parez les outils et les fichiers source<\/h2>\n<p class=\"translation-block\">Utilisez des versions compatibles de Blender et de <a href=\"https:\/\/docs.sollumz.org\/\">Sollumz<\/a>, ainsi que <a href=\"https:\/\/github.com\/dexyfex\/CodeWalker\">CodeWalker<\/a> pour examiner les donn\u00e9es de cartes et d\u2019arch\u00e9types. Respectez la version de Blender prise en charge par cette version de Sollumz au lieu de supposer que toute version plus r\u00e9cente de Blender fonctionne.<\/p>\n<p>Commencez par un asset original ou un asset que vous \u00eates autoris\u00e9 \u00e0 modifier et \u00e0 distribuer. Enregistrez le projet source, les fichiers export\u00e9s et un enregistrement des outils utilis\u00e9s. Construisez sur un serveur de test s\u00e9par\u00e9 avec les cartes superpos\u00e9es d\u00e9sactiv\u00e9es.<\/p>\n<h2 id=\"1-model-a-minimal-interior\">1. Mod\u00e9lisez un int\u00e9rieur minimal<\/h2>\n<p>Cr\u00e9ez un sol, des murs, un plafond et une porte \u00e0 l'\u00e9chelle souhait\u00e9e. V\u00e9rifiez les transformations, les normales, les affectations de mat\u00e9riaux et les chemins de texture. Utilisez les mat\u00e9riaux GTA pris en charge par votre exportateur ; un mat\u00e9riau Blender g\u00e9n\u00e9rique ne garantit pas le m\u00eame r\u00e9sultat en jeu.<\/p>\n<p>Exportez d'abord un simple drawable visible. Confirmez sa position et son apparence dans CodeWalker avant d'ajouter plus de g\u00e9om\u00e9trie. La g\u00e9om\u00e9trie manquante peut provenir des normales, des mat\u00e9riaux, des limites ou de la configuration de la visibilit\u00e9 ; ne supposez pas une seule cause.<\/p>\n<h2 id=\"2-create-and-align-collision\">2. Cr\u00e9ez et alignez la collision<\/h2>\n<p>Cr\u00e9ez une g\u00e9om\u00e9trie de collision simplifi\u00e9e pour les sols praticables, les murs et les bloqueurs en utilisant le flux de travail de collision de Sollumz. Inspectez la collision export\u00e9e par rapport au mod\u00e8le visible. Laissez les ouvertures de porte d\u00e9gag\u00e9es, sauf si un syst\u00e8me de porte s\u00e9par\u00e9 doit les bloquer.<\/p>\n<p>Testez la collision en jeu t\u00f4t. Tomber \u00e0 travers un sol n\u00e9cessite de v\u00e9rifier que la collision existe, se charge et s'aligne avec l'objet plac\u00e9.<\/p>\n<h2 id=\"3-define-rooms-portals-and-placement\">3. D\u00e9finissez les pi\u00e8ces, les portails et le placement<\/h2>\n<p>Cr\u00e9ez l'arch\u00e9type MLO et ses pi\u00e8ces et portails en utilisant le flux de travail document\u00e9 de Sollumz\/CodeWalker. Associez les entit\u00e9s aux pi\u00e8ces correctes et v\u00e9rifiez les connexions et l'orientation des portails. Inspectez les limites des pi\u00e8ces et la visibilit\u00e9 des deux c\u00f4t\u00e9s de chaque porte.<\/p>\n<p>Cr\u00e9ez le placement de la carte pour l'arch\u00e9type et conservez des noms coh\u00e9rents entre les exportations. Gardez les donn\u00e9es d'arch\u00e9type YTYP et le placement YMAP dans le projet plut\u00f4t que d'essayer de r\u00e9parer les noms uniquement dans l'archive finale.<\/p>\n<h2 id=\"4-package-the-exported-assets\">4. Empaquetez les assets export\u00e9s<\/h2>\n<p>Utilisez un dossier de ressource ordinaire, par exemple tutorial_interior, contenant fxmanifest.lua et un r\u00e9pertoire stream. Placez-y les assets export\u00e9s requis. Pour un tutorial_interior.ytyp export\u00e9, le manifeste inclut sa d\u00e9claration explicite de fichier de donn\u00e9es :<\/p>\n<pre data-no-translation=\"\" translate=\"no\"><code data-no-translation=\"\" translate=\"no\">fx_version 'cerulean'\ngame 'gta5'\n\nthis_is_a_map 'yes'\nfiles { 'stream\/tutorial_interior.ytyp' }\ndata_file 'DLC_ITYP_REQUEST' 'stream\/tutorial_interior.ytyp'<\/code><\/pre>\n<p>Remplacez ce nom de fichier par celui du YTYP que vous avez r\u00e9ellement export\u00e9. Ajoutez les autres d\u00e9clarations requises par votre \u00e9l\u00e9ment. Dans server.cfg, ajoutez ensure tutorial_interior apr\u00e8s ses d\u00e9pendances. Consultez la <a href=\"https:\/\/docs.fivem.net\/docs\/game-references\/data-files\/\">r\u00e9f\u00e9rence officielle des fichiers de donn\u00e9es<\/a> pour DLC_ITYP_REQUEST.<\/p>\n<h2 id=\"5-check-the-complete-player-experience\">5. V\u00e9rifiez l'exp\u00e9rience compl\u00e8te du joueur<\/h2>\n<ol>\n<li>D\u00e9marrez la ressource et inspectez les erreurs du serveur et de F8. Connectez-vous depuis un client qui n'a pas utilis\u00e9 vos fichiers de d\u00e9veloppement locaux.<\/li>\n<li>Approchez de l'ext\u00e9rieur, entrez dans chaque pi\u00e8ce et inspectez chaque porte des deux directions. V\u00e9rifiez les objets qui disparaissent, les fuites de visibilit\u00e9, les scintillements et les passages bloqu\u00e9s.<\/li>\n<li>Marchez, sprintez et utilisez les interactions pr\u00e9vues. Testez plusieurs joueurs, reconnectez-vous et red\u00e9marrez.<\/li>\n<li>Comparez le m\u00eame itin\u00e9raire de cam\u00e9ra avant et apr\u00e8s l'activation de l'int\u00e9rieur. V\u00e9rifiez le temps d'image, la pression de texture\/m\u00e9moire et la complexit\u00e9 visuelle. Le timing des ressources de script seul ne mesure pas le co\u00fbt GPU d'un MLO.<\/li>\n<li>Testez le jour, la nuit et la m\u00e9t\u00e9o, puis simplifiez la g\u00e9om\u00e9trie, les mat\u00e9riaux ou le probl\u00e8me de visibilit\u00e9 sp\u00e9cifique trouv\u00e9 par la comparaison.<\/li>\n<\/ol>\n<h2 id=\"release-with-a-recoverable-version\">Publiez avec une version r\u00e9cup\u00e9rable<\/h2>\n<p>Fournissez les notes d'installation, les d\u00e9pendances, les conflits et la version exacte de l'asset. Conservez la ressource et la configuration pr\u00e9c\u00e9dentes. Si une r\u00e9gression appara\u00eet, arr\u00eatez la nouvelle ressource et restaurez le package pr\u00e9c\u00e9dent avant d'enqu\u00eater dans le projet source.<\/p>\n<p><a href=\"https:\/\/rpcrate.com\/fr\/mlo-vs-ymap\/\">MLO vs YMAP : ce que font r\u00e9ellement les deux fichiers de carte FiveM<\/a><\/p>\n<p><a href=\"https:\/\/rpcrate.com\/fr\/guide-de-compatibilite-mlo-fivem\/\">Guide de compatibilit\u00e9 MLO FiveM : Frameworks, conflits et tests<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Construisez votre premier MLO FiveM comme un petit int\u00e9rieur avec une porte, une collision et une visibilit\u00e9 de pi\u00e8ce correcte. Gardez le projet modifiable s\u00e9par\u00e9 de la ressource export\u00e9e, et testez chaque couche avant d'ajouter des accessoires d\u00e9taill\u00e9s ou de l'\u00e9clairage.<\/p>","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"],"_links":{"self":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/155585","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/comments?post=155585"}],"version-history":[{"count":10,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/155585\/revisions"}],"predecessor-version":[{"id":217452,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/posts\/155585\/revisions\/217452"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media\/199236"}],"wp:attachment":[{"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/media?parent=155585"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/categories?post=155585"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rpcrate.com\/fr\/wp-json\/wp\/v2\/tags?post=155585"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}