Przejdź do treści
Blog

Konflikty map w FiveM: migające MLO i znikające propy

Ściany migają, propy znikają, MLO robi się niewidzialne? Skąd biorą się konflikty map w FiveM, co psuje każdy typ pliku i jak scalić .ymap w kilka kliknięć.

Autor: Termi

6 min czytania
  • Maps
  • MLO
  • Desktop app
Na tej stronie

Dodajesz nowe MLO, restartujesz serwer i jedziesz je obejrzeć. Budynek stoi, ale komisariat po drugiej stronie miasta zaczyna migać, parking stracił latarnie, a jedna ściana wnętrza znika, kiedy do niej podchodzisz. W konsoli nic na ten temat. To konflikt map i jeden z najczęstszych problemów na każdym serwerze FiveM, który ma więcej niż kilka map. Ten poradnik wyjaśnia, skąd biorą się konflikty, jak rozpoznać, z którym masz do czynienia, i jak je naprawić bez spędzania wieczoru w CodeWalkerze.

Skąd biorą się konflikty map

Większość map nie buduje miasta od zera. Zmieniają kawałki GTA V, które już istnieją: przesuwają płot, usuwają latarnię, która stoi na drodze, albo wycinają dziurę w okluzji kwartału, żeby ich wnętrze było widać. Żeby to zrobić, dostarczają własną kopię pliku z gry, o tej samej nazwie co oryginał.

Kłopot zaczyna się, gdy dwa zasoby mają kopię tego samego pliku. Gra wczytuje tylko jedną: tę z zasobu, który startuje ostatni. Wszystko, co druga mapa zmieniła w tym pliku, po prostu przepada.

server.cfg
ensure pd_mlo
ensure burgershot_mlo
ensure street_lights

Jeśli oba MLO streamują dt1_05_strm_1.ymap, wczytuje się tylko kopia z burgershot_mlo. Zmiany komisariatu nigdy nie trafiają do gry, więc jego wnętrze jest rysowane w oryginalnym kwartale. Zamiana tych dwóch linijek nie pomoże, przeniesie tylko problem na drugą mapę.

Rodzaje konfliktów i co psują

Typ pliku dużo mówi o tym, co zobaczysz w grze. Te spotkasz najczęściej.

Miganie mapy (konflikt okluzji)

Żeby oszczędzić pracy, GTA V nie rysuje tego, co uważa za schowane za ścianami. Te niewidzialne zasłony to okludery i siedzą w plikach .ymap. MLO musi usunąć okludery, które zasłaniałyby jego wnętrze. Kiedy wygrywa kopia innej mapy, stare okludery wracają: wnętrze miga, znika z bliska albo przez ściany widać pustkę.

Konflikt rozmieszczenia propów (.ymap)

.ymap mówi też, który obiekt stoi gdzie: budynki, propy, LOD-y, światła, trawa, a nawet miejsca, w których pojawiają się zaparkowane auta. Gdy dwie mapy zmieniają ten sam plik i wczytuje się tylko jedna kopia, znikają propy, budynki doczytują się i znikają, latarnie nie świecą albo przez środek nowego garażu rośnie drzewo.

Konflikt archetypów (.ytyp)

.ytyp definiuje same obiekty: jakiego modelu używa prop, z jak daleka go widać, a w MLO także pokoje i portale w środku. Jeśli dwie kopie się różnią, propy mają zły model albo nie ma ich wcale, a wnętrze może stracić pokój.

Konflikty kolizji i modeli 3D (.ybn, .ydr)

.ybn to kolizja: po czym da się chodzić i co cię zatrzyma. .ydr to model 3D. Konflikt tutaj widać jako przechodzenie przez ściany, niewidzialne bariery, spadanie przez podłogę albo prop o złym kształcie czy teksturach. Te pliki to całe obiekty, a nie listy zmian, więc nie ma czego łączyć: wybierasz, która kopia ma wygrać, i pilnujesz, żeby jej zasób startował ostatni.

Naprawianie ręcznie

Do tej pory zwykle wyglądało to tak:

  1. Przeszukać wszystkie zasoby w poszukiwaniu plików o tej samej nazwie.
  2. Otworzyć każdą kopię w CodeWalkerze i porównać je obiekt po obiekcie.
  3. Przenieść propy, okludery i światła z jednego pliku do drugiego i usunąć to, co jedna z map usunęła.
  4. Zapisać wynik w nowym zasobie, zmienić nazwy oryginałów albo je usunąć i ustawić kolejność startu.
  5. Zrestartować, objechać każde zmienione miejsce i mieć nadzieję, że nic innego się nie zepsuło.

Jeden plik to godzina uważnej pracy. Duży serwer ma ich dziesiątki, a gdy tylko któraś mapa dostanie aktualizację, wszystko trzeba zrobić od nowa. Łatwo też o błąd: pominiesz jeden okluder i miganie zostaje.

Scal je w kilka kliknięć

Map Merger w aplikacji desktopowej FiveDock robi to za ciebie. Czyta twój server.cfg, znajduje każdy .ymap i .ytyp, który streamuje więcej niż jeden uruchomiony zasób, i łączy kopie w jeden plik, który zachowuje zmiany każdej mapy.

  1. Otwórz Scalanie map w aplikacji desktopowej i wybierz folder serwera.
  2. Kliknij Skanuj. Zobaczysz każdy konfliktowy plik, zasoby, które go mają, w kolejności startu, i czy da się go scalić.
  3. Kliknij Scal. Scalone pliki trafiają do nowego zasobu fivedock-merged, a na końcu server.cfg pojawia się linijka ensure fivedock-merged, więc zawsze wczytuje się ostatni.
  4. Zrestartuj serwer.

Scalanie trzyma się jednej prostej zasady, tej samej, której trzymałbyś się ręcznie:

  • Wszystko, co mapa dodaje, zostaje. Każdy prop, światło, spawn auta i okluder, który wnosi którakolwiek mapa, trafia do scalonego pliku.
  • Wszystko, co mapa usuwa, zostaje usunięte. Jeśli jedno MLO usunęło okluder albo latarnię z gry, scalony plik ich nie ma, nawet jeśli kopia drugiej mapy wciąż je miała. To właśnie kończy miganie.
  • Zmiany w tym samym modelu okluzji są łączone. Gdy dwa MLO wycinają własne dziury w tym samym okluderze, scalony plik ma obie.

Kopie identyczne bajt w bajt są oznaczane i pomijane, bo nie mogą się kłócić. Dalekie światła LOD są scalane razem z pasującym plikiem świateł LOD, który gra musi mieć z nimi zgodny. To samo zrobisz z wiersza poleceń:

fivedock merge
> fivedock merge C:\server
41 started resources, 3 map files streamed by more than one
  dt1_05_strm_1.ymap  pd_mlo -> burgershot_mlo
  vw_distlodlights_medium010.ymap  pd_mlo -> street_lights
  shared_props.ytyp (identical)  pd_mlo -> burgershot_mlo

> fivedock merge C:\server --apply
  merged dt1_05_strm_1.ymap  +38 -4, base-game file
  merged vw_distlodlights_medium010.ymap  +112 -0, base-game file

Wrote C:\server\resources\[fivedock]\fivedock-merged. Undo with: fivedock merge undo

+38 -4 znaczy, że scalanie dodało 38 elementów, których nie miała pierwsza kopia, i pominęło 4 elementy z gry, które któraś z map usunęła.

Nic nie ginie

Każda zmiana ma kopię zapasową. Oryginalne kopie są wynoszone z zasobów, a nie usuwane, a Cofnij ostatnie scalanie (albo fivedock merge undo) przywraca wszystko, łącznie z server.cfg.

Gdy mapa dostanie aktualizację, zeskanuj serwer jeszcze raz. Merger czyta też swój wcześniejszy wynik, więc nowe kopie dołączają do tego, co już masz.

Kiedy nie trzeba scalać

Plik streamowany dwa razy nie zawsze jest problemem. Zostaw go, gdy:

  • obie mapy wyglądają w grze dobrze. Nie każdy wspólny plik zawiera coś, od czego zależy któraś z nich.
  • kopie są identyczne. Merger sam je oznacza i pomija.
  • konflikt dotyczy .ybn albo .ydr. Wybierz kopię, której chcesz, i zmień kolejność startu.

Po scaleniu przetestuj. Przejedź obok każdej mapy, której to dotyczy, i wejdź do każdego wnętrza. Jeśli coś wygląda źle, jedno kliknięcie w cofnięcie przywraca stan sprzed scalenia.

Częste pytania

Czemu moje MLO miga albo znika, kiedy podchodzę bliżej?

Zwykle dlatego, że inny zasób streamuje własną kopię tego samego .ymap, a w tej kopii dalej siedzą okludery, które MLO usunęło. GTA V nie rysuje tego, co zasłania okluder, więc wnętrze miga albo znika, gdy podchodzisz. Gra wczytuje kopię z zasobu, który startuje ostatni.

Czy zmiana kolejności ensure naprawia konflikty map w FiveM?

Tylko przy plikach kolizji (.ybn) i modeli (.ydr): wybierasz kopię, którą chcesz, i pilnujesz, żeby jej zasób startował ostatni. Przy .ymap albo .ytyp, który edytowały dwie mapy, gra i tak wczyta jedną kopię, więc nowa kolejność przenosi problem na drugą mapę. Takie pliki trzeba scalić w jedną kopię ze zmianami obu map.

Jak sprawdzić, które zasoby streamują ten sam .ymap?

Poszukaj plików o tej samej nazwie w folderach stream wszystkich uruchomionych zasobów: dwa zasoby, które mają dt1_05_strm_1.ymap, mają o niego konflikt. Map Merger w aplikacji desktopowej FiveDock czyta server.cfg i wypisuje każdy .ymap i .ytyp, który streamuje więcej niż jeden uruchomiony zasób, w kolejności startu.

Czy da się scalić pliki .ybn albo .ydr?

Nie. .ybn to cała siatka kolizji, a .ydr cały model 3D, więc nie ma w nich listy osobnych zmian do połączenia, jak w .ymap. Zdecyduj, która kopia ma wygrać, i ustaw jej zasób tak, żeby startował po drugim.

W którym planie

Map Merger jest częścią planu Metro. Skan i pliki zostają na twoim komputerze, a samo scalanie działa na serwerach FiveDock, więc aplikacja jest lekka, a każde scalenie korzysta z tych samych, aktualnych danych o grze. Porównaj plany albo pobierz aplikację desktopową i zeskanuj swój serwer.

Wszystkie artykuły