Przewodnik krok po kroku dotyczący budowania, eksportowania, pakowania, testowania, optymalizacji i wdrażania FiveM MLOs z Blenderem, Sollumz, CodeWalker i OpenIV — a także rozwiązywanie problemów, kontrola jakości i budżety wydajności.
TL;DR: Skonfigurujesz narzędzia (Blender + Sollumz, CodeWalker, OpenIV), wymodelujesz wnętrze z odpowiednią topologią i gęstością tekstur, stworzysz kolizje (YBN), portale/pokoje/okluzję (YTYP), wyeksportujesz za pomocą Sollumz, spakujesz zasób z fxmanifest.lua, waliduj w grze i spełniaj budżety wydajnościowe za pomocą Resmon.
Dla kogo jest ten przewodnik
FiveM Server Owners and Asset Creators
Zanim zaczniesz: narzędzia i pobieranie
Wymagane
- Blender (3.x lub nowszy): https://www.blender.org/download/
- Sollumz (Dodatek do Blendera dla formatów RDR2/GTAV): https://github.com/Skylumz/Sollumz
- CodeWalker (edytor map / YTYP / narzędzia portali): GTAWątek na forum → https://github.com/dexyfex/CodeWalker
- OpenIV (eksploracja zasobów, ścieżki tekstur):
- Dokumentacja FiveM (manifest zasobu, strumieniowanie): https://docs.fivem.net/
Miło mieć
- Visual Studio Code do edycji manifestów.
- Edytor obrazów (Photoshop, Affinity, GIMP) do tekstur.
Uwaga dotycząca licencji: Przestrzegaj zasad Rockstar/Cfx oraz licencji stron trzecich. Nie rozpowszechniaj zastrzeżonych zasobów gry poza tym, co jest dozwolone.
Szybki start (10-minutowy przegląd)
- Zainstaluj Blender + Sollumz i włącz dodatek.
- Utwórz nową scenę w metrach (1 jednostka Blendera = 1 metr). Zaimportuj siatki referencyjne, jeśli są potrzebne.
- Modeluj swoje wnętrze modułowo; zachowaj spójną gęstość tekstur; unikaj niewidocznych ścian.
- Tworzyć siatki kolizji (proste prymitywy) i oznacz je do eksportu YBN.
- W CodeWalker, zdefiniuj rooms/portals/occluders i wygenerujesz YTYP wpisów.
- Eksportuj z Sollumz → YDR/YDD/YBN/YTYP tam, gdzie to stosowne.
- Zbuduj folder zasobów z
streamifxmanifest.lua. - Dodaj zasób do
server.cfg, uruchom serwer, zweryfikujesz w grze. - Profil z Resmon; naprawia wycieki, nadmierne rysowanie i ciężkie materiały.
Spójrz, byłem tam.
Spacerujesz po swoim serwerze, widzisz budynek, który byłby idealny miejsce na warsztat mechanika lub ukrytą kryjówkę kartelu, podchodzisz do drzwi… i nic. Tylko płaska tekstura. Fałszywe drzwi. Doprowadza cię to do szału, prawda?
Właśnie to uczucie sprawiło, że zacząłem tworzyć MLOs (Map Loader Objects). Po prostu chciałem otworzyć cholerne drzwi.
Ale potem otworzyłem samouczki i nagle ludzie krzyczeli o “vertex paints”, “ytyps” i “portalach”, i szczerze mówiąc, prawie się poddałem. Czułem, że potrzebuję dyplomu z architektury, żeby tylko wstawić pudełko do gry wideo.
Więc weź głęboki oddech. Chwyć kawę (lub Red Bulla, nie oceniam). Poprowadzę Cię przez to tak, jakbym chciał, żeby ktoś mi to wyjaśnił – niechlujnie, niedoskonale, ale zrozumiale.
Oto jak faktycznie zacząć tworzyć wnętrza dla FiveM.
Zestaw narzędzi (Nie pomijaj tego)
Nie zbudujesz domu bez młotka. Do wnętrz GTA V potrzebujesz specyficznego zestawu narzędzi. Wiem, że jego konfiguracja jest irytująca, ale musisz to zrobić tylko raz.
- Blender: Standard branżowy w modelowaniu 3D. Jest darmowy. Na początku onieśmiela, ale potrzebujemy tylko ułamka jego możliwości.
- Sollumz: To wtyczka do Blendera. Pomyśl o niej jak o tłumaczu. Blender mówi “3D”, ale GTA V mówi “Rage Engine”. Sollumz tłumaczy twój model, aby gra go zrozumiała.
- CodeWalker: Edytor map. Użyjesz go do umieszczenia swojego budynku w świecie i poinformowania gry: “Hej, to jest wnętrze”.”
- OpenIV: Prawdopodobnie już to masz. To menedżer/przeglądarka plików.
Szybka dygresja: Jeśli jeszcze nie zainstalowałeś Sollumz, zrób to najpierw. Jest milion filmów na YouTube o tym, jak go zainstalować. Poczekam tutaj.
Krok 1: “Skorupa” (Budowanie pudełka)
OK, więc MLO to nie tylko pokój. To skorupa.
Wyobraź sobie, że budujesz domek dla lalek. Masz zewnętrzne ściany (budynek widoczny z ulicy) i wewnętrzne pomieszczenie.
- Otwórz Blender. Usuń tę domyślną kostkę. (To tradycja. Przepraszam, kostko.)
- Importuj oryginalny model: Jeśli modyfikujesz istniejący budynek GTA, musisz zaimportować ten budynek za pomocą Sollumz, aby wiedzieć, gdzie wyciąć otwór na drzwi.
- Wytnij Otwór: Dosłownie usuń ściany tam, gdzie powinny być drzwi.
- Modeluj pomieszczenie: Stwórz prosty sześcian za tą dziurą. Nie przesadzaj jeszcze ze szczegółami. Po prostu zrób podłogę, ściany i sufit.
Problem z koszulką “Na lewą stronę”
Oto coś, co doprowadzało mnie do szału przez tydzień: Normalne. (Normals).
W 3D ściana ma tylko jedną stronę. Jeśli “Normalna” (przednia ściana) jest skierowana na zewnątrz, a ty stoisz wewnątrz pomieszczenia, ściana będzie niewidoczna. Musisz upewnić się, że niebieskie linie (normalne) są skierowane do wnętrza pomieszczenia.
Jeśli po załadowaniu do gry twoje ściany są niewidoczne, to są to twoje normalne. To zawsze są normalne.
Krok 2: Teksturowanie (Malowanie ścian)
Nie możesz po prostu zostawić go szarego. GTA nienawidzi nieotexturowanych modeli.
W Blender/Sollumz stosujesz shadery. Zazwyczaj będziesz używać standardowych shaderów GTA (takich jak gta_default). Mapujesz teksturę – taką jak ceglana ściana lub betonowa podłoga – do swojej siatki.
Wskazówka pro: Zachowaj swoje tekstury w “potęgach dwójki”. $512 na 512$, $1024 na 1024$, itd. Jeśli spróbujesz użyć obrazu $500 na 500$, gra wpadnie w szał i się zawiesi. Nauczyłem się tego na własnej skórze.
Krok 3: Straszna część (Portale)
To jest część, która łamie mózgi wszystkim.
A Portal jest zasadniczo niewidzialną kurtyną. Mówi silnikowi gry: “Kiedy gracz spojrzy przez te drzwi, zacznij renderować wnętrze pokoju. Kiedy wyjdzie, przestań je renderować, aby zaoszczędzić pamięć.”
Bez portali otrzymujesz “pustkę”. Wiesz, gdzie patrzysz przez drzwi i wygląda to tak, jakbyś wpatrywał się w Błękitne Piekło pod mapą? Tak.
W Sollumz tworzenie portalu obejmuje:
- Zaznaczanie wierzchołków twojego drzwi.
- Tworzenie “ID pokoju” dla zewnętrza (Limbo) i “ID pokoju” dla wnętrza (Pokój 1).
- Łączenie ich.
Pomyśl o tym jak o śluzie na statku kosmicznym. Musisz uszczelnić przejście między “Światem zewnętrznym” a “Wewnętrznym pokojem”.”
Krok 4: Eksport i “YTYP”
Gdy Twój model będzie gotowy, wyeksportuj go jako .ydr (rysowalny) i .ybn (kolizja). Ale gra jeszcze o tym nie wie.
Potrzebujesz .ytyp plik. Jest to zasadniczo manifest – lista – która mówi GTA: “Mam nowy obiekt, oto jego nazwa i oto jego właściwości”.”
- Otwórz CodeWalker.
- Utwórz nowy YTYP.
- Dodaj swój nowy model do niego za pomocą definicji MLO Archetype.
- Tutaj definiujesz flagi MLO.
Szczerze? Za pierwszym razem, gdy to zrobisz, nie zadziała. Po prostu nie zadziała. Załadujesz się, podejdziesz do swojego budynku i spadniesz przez podłogę. To rytuał przejścia.
Zazwyczaj oznacza to, że twój Kolizja (.ybn) nie jest zgodny z twoim modelem wizualnym. Lub zapomniałeś zaznaczyć “Embedded Collision” w ustawieniach eksportu w Sollumz. Zaznacz to pole.
Krok 5: Umieszczenie tego w świecie (YMAP)
Ostatni krok. Masz obiekt. Teraz musisz go umieścić.
W CodeWalker:
- Otwórz projekt.
- Utwórz nowy .ymap.
- Umieść swój nowy obiekt MLO dokładnie tam, gdzie pasuje na mapie.
- Zapisz wszystko.
Ostatnia myśl
Sprawiam, że brzmi to liniowo, ale w rzeczywistości jest to bałagan. Spędzisz godziny na naprawianiu migoczącej tekstury światła lub próbie zrozumienia, dlaczego deszcz pada w twoim salonie (to problem “Okluzji”, ale zostawmy to na inny dzień).
Zacznij od małych rzeczy. Poważnie. Nie próbuj budować komisariatu policji jako swojego pierwszego projektu. Zbuduj dosłowny sześcian z drzwiami. Gdy będziesz mógł wejść do tego sześcianu, nie spadając przez świat, jesteś oficjalnie MLO deweloperem.
Uczucie wchodzenia do pokoju ciebie zbudowany, widząc swoich przyjaciół odgrywających role w przestrzeni, która wczoraj nie istniała? To najlepsze uczucie na świecie. Jest warte bólu głowy.
Co powinieneś teraz zrobić?
Musisz ubrudzić sobie ręce.
Czy mam przeprowadzić Cię przez konkretne ustawienia instalacji wtyczki Sollumz w Blenderze, czy powinniśmy skupić się na rozwiązywaniu konkretnego błędu, który już widzisz?
Wskazówki dotyczące tworzenia MLOs
- Skala: Pracuj w metrach. Drzwi ~2,0–2,2 m wysokości; blaty ~0,9 m; stopnie schodów ~0,17 m.
- Kolekcje:
INT_MLO,COLLISIONS,LIGHTS,PROPS_STATIC,PROPS_INSTANCED. - Nazewnictwo:
int_shop_main_wall_A,coll_floor_A,door_backroom_A. Spójne prefiksy zaoszczędzą godziny później. - Punkt obrotu/środek ciężkości: Ustaw znaczące punkty początkowe (zawiasy dla drzwi), zastosuj transformacje (Ctrl‑A) przed eksportem.
Najlepsze praktyki dotyczące modelowania i topologii
- Modularny: Buduj ściany/podłogi/sufity jako moduły do ponownego wykorzystania i konserwacji.
- Topologia: Preferuj czworokąty, utrzymuj czysty przepływ krawędzi, unikaj zbędnych pętli.
- Gęstość tekstur: Cel ~512–1024 px/m dla powierzchni głównych; 256–512 px/m w tle.
- Arkusz przycinania i atlasy: Zmniejsz liczbę materiałów; grupuj obiekty w atlasy.
- Ukryj niewidoczne ściany: Usuń niewidoczną geometrię (za ścianami, pod podłogami), aby zmniejszyć nadmierne rysowanie.
Materiały, tekstury i oświetlenie
- PBR: Użyj BaseColor/Roughness/Metallic/Normal. Ogranicz liczbę materiałów (≤ 8 dla małych wnętrz).
- Rozmiary tekstur: Preferuj 1k–2k; unikaj ogromnych 4k, chyba że jest to absolutnie konieczne. Użyj BC7 Lub DXT w miarę możliwości.
- Emisyjne: Dla znaków/LED; zachowaj rozsądne natężenie, aby uniknąć problemów z rozkwitem.
- Oświetlenie wypiekane: Opcjonalne mapy światła mogą ustabilizować wygląd wnętrza w zależności od pory dnia.
- Użyj ponownie vanilla: Z OpenIV, odwołuj się do istniejących tekstur/shaderów, gdy licencja na to pozwala.
Kolizje (YBN)
- Używać niskopoligonalne prymitywy (pudełka/cylindry) do przybliżenia powierzchni, po których można chodzić, i blokad.
- Oddzielna kolekcja kolizji (
COLLISIONS) i zachowaj spójność nazw (np.,coll_wall_A). - Drzwi/okna, które nie powinny przechodzić: upewnij się, że kolizja obejmuje otwór lub jest przełączana za pomocą logiki drzwi.
- Częsty błąd: kolizje o wysokim poziomie szczegółowości powodują problemy z fizyką—uprość.
Pokoje, portale, okluzja i YTYP
- Pokoje: Logiczne przestrzenie (sklep, zaplecze, korytarz) z portalami w drzwiach.
- Portale: Bramki widoczności; zapobiegaj renderowaniu pomieszczeń, których nie widać.
- Okultory: Duże powierzchnie blokujące renderowanie za nimi (np. solidne ściany).
- YTYP: Definiuje archetypy, odległości LOD, powiązania pomieszczeń/portali.
- W CodeWalker: przypisz pokoje, umieść portale, dodaj okludery, generuj YTYP. Waliduj za pomocą narzędzi wizualizacyjnych CW (kolory pomieszczeń, linie portali).
Eksportowanie z Sollumz
- Zainstaluj z GitHub, włącz dodatek w preferencjach Blendera.
- Przypisz Shadery Sollumz i flagi eksportu w razie potrzeby.
- Sprawdzać skala i obroty są stosowane (Ctrl‑A) przed eksportem.
- Cel(e) eksportu:
- YDR/YDD dla modeli do rysowania / modeli ze szkieletami.
- YBN dla kolizji.
- YTYP dla definicji archetypów/pomieszczeń/portali (często finalizowane przez CodeWalker).
Pakowanie zasobu (fxmanifest)
Struktura folderów
[mlo-yourinterior] ├─ fxmanifest.lua └─ stream/ ├─ mlo_shop.ydr ├─ mlo_shop.ybn ├─ mlo_shop.ytyp └─ props/ └─ ...
Minimalny fxmanifest.lua
fx_version 'cerulean'
game 'gta5'
name 'mlo-yourinterior'
description 'Custom MLO: YourInterior'
version '1.0.0'
files {
'stream/*.ytd',
'stream/*.ydr',
'stream/*.ydd',
'stream/*.ybn',
'stream/*.yft',
'stream/*.ytyp',
'stream/props/*'
}
-- Ensure YTYPs are loaded
this_is_a_map 'yes'
Konfiguracja serwera
Dodaj do swojego server.cfg:
ensure mlo-yourinterior
Zobacz oficjalną dokumentację dotyczącą manifestów i strumieniowania: https://docs.fivem.net/docs/scripting-reference/resource-manifest/resource-manifest/
Lista kontrolna walidacji w grze
- ☐ Teleportuj do wnętrza; zweryfikuj wysokość spawnu i brak spadania przez podłogi.
- ☐ Przejdź przez każdy pokój; sprawdź przejścia drzwi; brak niewidzialne ściany.
- ☐ Przejrzyj każdy portal; potwierdź, że render culling działa.
- ☐ Sprawdź Z‑fighting na połączeniach ścian/listew.
- ☐ Cykl pora dnia; potwierdź, że oświetlenie/emisywność wygląda naturalnie.
- ☐ Stań w każdym pokoju; obróć kamerę o 360°; obserwuj Resmon kolce.
- ☐ Testuj z 3–10 graczy; obserwuj wydajność sieci i klienta.
Budżety wydajności i Resmon
Typowe cele dla małego/średniego MLO:
- Materiały: ≤ 8–12 unikalnych materiałów.
- Wywołania rysowania: utrzymuj niski poziom poprzez instancjonowanie i atlasy.
- Teksturygłównie 1k–2k; atlas tam, gdzie to możliwe.
- Rozmiar strumienia: celowanie ≤ 30–80 MB na MLO (zależne od kontekstu).
- Portale: dodaj wystarczająco, aby wyizolować pomieszczenia, ale nie nadmiernie.
Profilowanie
- Używać Resmon (
F8 → resmon 1) aby sprawdzić CPU/MS i pamięć. - Przełączaj wnętrza, ukrywaj obiekty, aby zidentyfikować wąskie gardła.
- Jeśli pojawią się skoki podczas patrzenia w stronę drzwi, wróć do portale/okludery.
Aby uzyskać szerszy podręcznik dostrajania dla całego serwera, zobacz Optymalizacja wydajności na FiveMX → /fivem-optymalizacja-serwera/.
Rozwiązywanie problemów
| Objaw | Prawdopodobna przyczyna | Rozwiązanie |
|---|---|---|
| Przejście przez podłogę | Brakujące/przesunięte YBN | Wyrównaj kolizję do siatki renderowania; zastosuj transformacje; ponownie wyeksportuj YBN |
| Widzenie innych pomieszczeń przez ściany | Brakujące/nieprawidłowe portal/occluder | Poprawnie zdefiniuj pomieszczenia w CodeWalker; dodaj okludery; zaktualizuj YTYP |
| Czarne/niewidzialne siatki | Problem ze ścieżką cieniowania/tekstury | Użyj poprawnego cieniowania Sollumz; zweryfikuj ścieżki tekstur; upewnij się, że YTD są obecne |
| Migotanie (z-fighting) | Płaszczyzny współpłaszczyznowe | Przesuń lub połącz ściany; dostosuj grubość wykończenia |
| FPS zbiornik skierowany w stronę drzwi | Przekroczenie budżetu z powodu luki w portalu | Zmień rozmiar/wyrównaj portal; dodaj okludery; uprość materiały |
| Drzwi blokują gracza | Nakładające się kolizje | Edytuj YBN, aby wyczyścić przejście; oddziel kolider drzwi |
| Emisywność zbyt jasna | Intensywność/mapowanie tonalne | Zmniejsz wartości emisji; unikaj czystej bieli/spamu emisyjnego |
Często zadawane pytania
Czy potrzebuję kolizji (YBN) dla każdej siatki?
Nie. Tylko dla możliwe do przejścia lub interakcji powierzchnie. Elementy dekoracyjne mogą pozostać bez kolizji.
Ile portali powinno mieć wnętrze?
Wystarczająco, aby podzielić logiczne pomieszczenia/hale i zablokować renderowanie między pomieszczeniami — zazwyczaj jedno na drzwi/otwór.
Czy mogę ponownie użyć tekstur GTA V?
Często tak w przypadku użytku w grze, ale nie redystrybuuj zasoby poza dozwolonymi warunkami. Sprawdź ścieżki i licencje OpenIV.
Mój YTYP się nie ładuje.
Sprawdź listę plików manifestu, nazwy plików i upewnij się this_is_a_map 'yes' jest ustawiony.
Która wersja Blendera najlepiej działa z Sollumz?
Obecnie powszechnie używane są wydania 3.x; potwierdź kompatybilność na Sollumz GitHub.
Zasoby i dalsza lektura
- FiveM Dokumentacja (manifesty zasobów, strumieniowanie): https://docs.fivem.net/
- Sollumz (GitHub): https://github.com/Skylumz/Sollumz
- CodeWalker (GTAWątek na forum i kompilacje): https://github.com/dexyfex/CodeWalker
- OpenIV:
- GTAV Modding (ogólna wiki): https://gtamods.com/wiki/Main_Page
Co dalej? (Linki wewnętrzne i CTA)
- Przeglądaj MLO → /fivem-mlos/ (Przykłady, inspiracje i gotowe mapy.)
- Najlepszy przewodnik MLOs → /free-fivem-mlos/ (Wybrane, plusy/minusy, uwagi dotyczące wydajności.)
- Zoptymalizuj swój serwer → /fivem-optymalizacja-serwera/ (Użycie Resmon, wskazówki dotyczące strumieniowania zasobów.)
- Potrzebujesz pomocy w mapowaniu? → Skontaktuj się z FiveMX (niestandardowe wnętrza, przeglądy optymalizacji).
Kopiuj-wklej zasoby (opcjonalny start)
Wprowadź te elementy do swojego projektu jako punkt wyjścia i dostosuj.
Starter fxmanifest.lua (rozszerzone)
fx_version 'cerulean'
game 'gta5'
name 'mlo-yourinterior'
author 'YourName @ FiveMX'
version '1.0.0'
this_is_a_map 'yes'
files {
'stream/**.ytd',
'stream/**.ydr',
'stream/**.ydd',
'stream/**.ybn',
'stream/**.yft',
'stream/**.ytyp'
}
Polecane kolekcje (Blender)
INT_MLO ├─ STRUCTURE ├─ PROPS_STATIC ├─ PROPS_INSTANCED ├─ LIGHTS └─ COLLISIONS
Podziękowania: Podziękowania dla opiekunów Sollumz, CodeWalker i dokumentacji Cfx.re za ich znakomite narzędzia i dokumentację.
