MLO je vlastní interiér pro GTA V - místnosti, portály a rekvizity uvnitř - a na FiveM se instaluje jako každý jiný resource: složka s fxmanifest.lua a složkou stream s modely, texturami a soubory kolizí. Každý soubor ve složce stream stáhne každý hráč, který se připojí, a každý soubor se načte do paměti klienta, když se hráč přiblíží. Z toho plynou dvě pravidla, která rozhodují, jestli server plný map běží dobře: drž jednotlivé assety dost malé, aby před nimi FXServer nevaroval, a drž celek dost malý, aby první připojení a paměť textur zůstaly rozumné. Tento návod pokrývá, jak streaming funguje, jaké řádky manifestu MLO potřebuje, typy souborů, konflikty mezi mapami a jak nafouknutý balík assetů zmenšit.
Jak funguje streaming ve FiveM#
GTA V načítá svět po kouscích, jak se pohybuješ, z archivů na disku. FiveM přidává nad to vrstvu: resources mohou dodat další soubory, které klient zaregistruje, jako by byly součástí archivů samotné hry. To jsou streamované assety.
- Jakýkoli soubor ve složce
streamv resource se automaticky registruje pro streaming. Podsložky uvnitřstreamjsou v pořádku a pomáhají s přehledností. - Při prvním připojení klient stáhne každý streamovaný soubor z HTTP endpointu serveru na TCP
30120a uloží ho do lokální cache. Další připojení stahují jen soubory, které se změnily. - Streaming funguje podle názvu souboru. Soubor
v_ilev_door.ydrv tvém resource nahradí soubor hry se stejným názvem. Dva resources streamující soubory se stejným názvem jsou v konfliktu a jeden z nich tiše prohraje. - Klient načítá streamované assety do paměti, když se hráč přiblíží k něčemu, co je používá, přesně jako u základní hry.
Streamované assety tedy stojí tři věci: místo na disku a přenosové pásmo serveru pro stahování, čas stahování na klientu při prvním připojení a paměť klienta při hraní. Server stojí téměř nic na CPU. Balík map nezpůsobí, že server tikne pomaleji; zpomalí připojování a může způsobit, že hra v rušné oblasti nenačte textury.
Typy souborů, se kterými se potkáš#
| Přípona | Co obsahuje |
|---|---|
.ymap | Umístění: které objekty stojí kde ve světě |
.ytyp | Definice archetypů, včetně interiérů MLO a jejich místností |
.ydr | Jeden drawable model |
.ydd | Slovník drawables, často oblečení nebo rekvizity |
.ytd | Slovník textur |
.ybn | Hranice kolizí |
.yft | Modely fragmentů, například vozidla a rozbitné objekty |
.ycd | Animační klipy |
Balík MLO je obvykle .ytyp, který definuje interiér, .ymap, který ho umístí do světa, soubory .ydr a .ytd pro skořepinu a rekvizity a soubory .ybn pro kolize. Úprava mapy, která jen přidává exteriérové rekvizity, může být jen .ymap a pár modelů. Vozidla jsou samostatné téma s vlastními meta soubory, popsané v FiveM vozidla a addon auta.
K tvorbě a prohlížení se používají CodeWalker pro zobrazení a umisťování, OpenIV pro procházení archivů hry a doplněk Sollumz pro Blender na modelování. K instalaci hotového MLO nepotřebuješ nic z toho, ale CodeWalker se hodí při diagnostice konfliktu.
Instalace MLO#
Typický resource s MLO vypadá takhle:
resources/ [maps]/ cfx_pillbox_hospital/ fxmanifest.lua stream/ pillbox_shell.ydr pillbox_shell.ytd pillbox_col.ybn pillbox.ytyp pillbox_mlo.ymapfx_version 'cerulean'game 'gta5'this_is_a_map 'yes'data_file 'DLC_ITYP_REQUEST' 'stream/pillbox.ytyp'this_is_a_map 'yes' označí resource jako obsah mapy, aby s jeho streamovanými soubory klient zacházel odpovídajícím způsobem. Řádek DLC_ITYP_REQUEST zaregistruje soubor archetypů, který definuje interiér; většina balíků MLO ho obsahuje a měl bys ho nechat na místě, i když by se .ytyp načetl i bez něj. Některé balíky dodávají také interiorproxies.meta, který se registruje takto:
files { 'interiorproxies.meta' }data_file 'INTERIOR_PROXY_ORDER_FILE' 'interiorproxies.meta'Potom přidej resource do server.cfg:
ensure cfx_pillbox_hospitalSložky v hranatých závorkách jako [maps] jsou kontejnery, ne resources, takže řádek ensure bere jen název resource. Nová složka přidaná za běhu serveru potřebuje v konzoli refresh, než ji ensure najde. Pořadí ensure a zbytek souboru pokrývá FiveM server.cfg vysvětleno.
Varování o příliš velkých assetech#
FXServer kontroluje streamované soubory při startu a varuje před těmi, které na klientu zaberou příliš paměti:
Asset pillbox_shell.ytd uses 38.0 MiB of physical memory. Oversized assets can and WILLlead to streaming issues (such as models not loading/rendering).Práh je 16 MiB fyzické paměti na asset. Varování znamená přesně to, co říká: streamovací systém hry byl postaven kolem assetů mnohem menších a jediný 38MiB slovník textur soupeří se vším ostatním, co se klient snaží načíst v okolí. Příznaky jsou textury, které zůstávají rozmazané, budovy, které se objeví pozdě, a ve zlých případech části města, které se kolem příliš velkého assetu nenačtou vůbec.
Příčinou jsou téměř vždy textury. Tvůrce exportoval textury 4096 na 4096 pro povrchy, které hráč vidí ze tří metrů, nebo nechal nekomprimované formáty. Oprava znamená otevřít .ytd, zmenšit velké textury na 2048 nebo 1024, uložit je v komprimovaném formátu a zkontrolovat, že se nic viditelného nezhoršilo. U typického přestavěného MLO to velikost sníží na polovinu, aniž si toho ve hře někdo všimne. Pokud do souborů sahat nechceš, je varování rozumné poslat zpět tvůrci; placené MLO, které se dodává s několika příliš velkými assety, má problém s kvalitou.
Neopravuj to mazáním nízkodetailních verzí modelů (LOD), jak některé návody radí kvůli úspoře místa. LOD je to, co hra kreslí na dálku; bez nich objekty naskakují z ničeho.
Celková velikost a první připojení#
Nestačí, že každý asset projde kontrolou velikosti. Každý nový hráč stáhne všechno a klient drží v paměti najednou textury všeho v okolí. Server se čtyřiceti MLO a třemi sty auty může po novém hráči chtít stáhnout několik gigabajtů, než uvidí menu postavy.
Co skutečně pomáhá, podle přínosu:
- Odstraň, co nikdo nepoužívá. Interiéry pro jobs, které už neprovozuješ, druhá policejní stanice ze staré mapy, testovací rekvizity. Každý nepoužitý resource se pořád stahuje.
- Zmenši největší textury. Seřaď složky
streampodle velikosti a začni od vrchu; deset největších souborů bývá většina problému. - Vyhni se duplikátům. Dva balíky map, které dodávají stejné rekvizity pod různými názvy, zdvojnásobí stahování. Dva, které je dodávají pod stejným názvem, jsou naopak v konfliktu, což je horší.
- Řekni to hráčům. Načítací obrazovka, která říká, že první připojení stahuje velké množství dat, je lepší než kanál podpory plný lidí, kteří si myslí, že server zamrzl.
Pomoct si mohou i hráči: novější klienti FiveM mají v nastavení možnost rozšířeného rozpočtu textur, která dává streamovaným texturám víc místa na strojích s dost video paměti. Je to obejití, ne důvod přestat zmenšovat.
Na straně serveru se assety servírují z disku přes endpoint TCP. Rychlé úložiště zrychlí serverovou polovinu a zbytek je vlastní připojení hráče, které by stejně bylo pomalým koncem. Na RE:NODE je každý tarif na NVMe a přenos dat je neměřený, takže neplatíš za gigabajty - není to ale pozvánka nutit každého nového hráče stahovat pět gigabajtů. Přenosové pásmo a fair use popisuje, co to znamená v praxi.
Konflikty mezi mapami#
Dva resources s mapami se mohou střetnout třemi způsoby a každý vypadá ve hře jinak.
Stejné místo. Dvě MLO umístěná ve stejném prostoru - třeba dvě různé verze policejní stanice Mission Row - se překrývají. Hráči vidí zdi skrz zdi, propadají se podlahami tam, kde kolize jednoho interiéru nesedí na model druhého, nebo najdou dveře, které se otevírají do prázdna. Jen jeden interiér na místo; druhý odstraň.
Stejný název souboru. Streaming jde podle názvu souboru, takže dva resources dodávající prop_desk_01.ydr s odlišným obsahem jsou v konfliktu. Který vyhraje, záleží na pořadí načítání a po restartu se to může změnit. Na jedné straně přejmenuj nebo duplikát odstraň.
Původní interiéry a IPL loadery. Resources jako bob74_ipl načítají interiéry GTA Online a jejich varianty. MLO, které jeden z těchto interiérů nahrazuje, bojuje s loaderem. Při instalaci náhrady tento interiér v konfiguraci loaderu vypni.
Když tušíš konflikt, zastav polovinu resources s mapami, restartuj a zkontroluj dotyčné místo. CodeWalker s načtenými soubory tvého serveru ukáže, co je kde umístěno, a je to rychlejší než chodit po mapě se seznamem resources.
Interiéry ve hře: entity sety, kolize a teleporty#
Mnoho MLO má volitelné části zvané entity sety - různá uspořádání nábytku, poškozená a nepoškozená verze, další místnosti - zapínané ze skriptu:
-- client sidelocal interior = GetInteriorAtCoords(311.0, -594.0, 43.0)ActivateInteriorEntitySet(interior, "pillbox_reception")RefreshInterior(interior)Dokumentace MLO uvádí jeho entity sety. Nic se nezobrazí, dokud je něco neaktivuje, a proto může interiér po instalaci vypadat prázdně.
Propadnutí podlahou po teleportu do interiéru je problém časování kolizí, ne rozbité MLO. Hráč dorazí dřív, než se načte kolize pro dané místo. Teleportační skripty by si měly kolizi vyžádat a počkat na ni:
RequestCollisionAtCoord(x, y, z)while not HasCollisionLoadedAroundEntity(PlayerPedId()) do Wait(0)endPokud se hráči propadají podlahou, i když vejdou normálně, .ybn chybí, je poškozený nebo je v konfliktu s jinou mapou.
Záleží i na buildu hry. MLO postavené s rekvizitami z novější aktualizace GTA Online funguje, jen pokud server vynucuje alespoň ten build přes sv_enforceGameBuild. Tvůrce by měl uvést, jaký build MLO potřebuje; pokud ve hře chybí rekvizity, zkontroluj to jako první.
Jak udržet server plný map zvládnutelný#
Velké servery skončí s desítkami resources s mapami. Pár návyků zabrání tomu, aby se z toho stala záhada:
- Jedna složka na účel.
[maps]pro MLO,[vehicles]pro auta,[props]pro malé doplňky. Snáz se půlí a snáz se měří. - Seznam, k čemu která mapa je. Který job ji používá, kdo ji koupil, kde, jaký build potřebuje. Když se změní účet tvůrce nebo se přesune licence, budeš to potřebovat.
- Měř před a po. Při přidání balíku si poznamenej celkovou velikost složek
stream, abys věděl, kolik každý přírůstek stojí nové hráče. - Zálohuj resources, ne jen databázi. Placené MLO, které už nejde stáhnout, je pryč, pokud zmizí složka. Zálohy, které se opravdu obnoví platí tady stejně jako pro databázi.
Na RE:NODE můžeš celý resource s mapou přetáhnout do správce souborů a archivy se rozbalí na místě, nebo nahrávat přes SFTP, pokud je balík velký; SFTP a správce souborů obsahuje údaje k připojení. Zálohy běží z panelu, dají se plánovat a ukládají se mimo stroj.
Řešení potíží#
„Oversized assets can and WILL lead to streaming issues“. Asset přes 16 MiB fyzické paměti, obvykle slovník textur. Zmenši jeho textury nebo o to požádej tvůrce.
Interiér je neviditelný nebo prázdný. Chybí řádek DLC_ITYP_REQUEST, resource není spuštěný, nebo nejsou aktivované jeho entity sety.
Hráči se propadají podlahou. Po teleportu ještě není načtená kolize, nebo .ybn chybí či je v konfliktu.
Textury zůstávají v jedné oblasti rozmazané. V okolí je příliš mnoho streamovaného obsahu na rozpočet textur klienta. Zmenši textury v nedalekých balících.
Dvě budovy na jednom místě. Dvě mapy na stejném místě, nebo MLO bojující s IPL loaderem. Nech jednu.
Mapa funguje některým hráčům, jiným ne. Hráči se starším buildem hry, nebo escrow obsah vázaný na klíč, který se změnil. Zkontroluj sv_enforceGameBuild a v konzoli chyby nároku.
FAQ#
Co je MLO ve FiveM?
Vlastní interiér: sada místností a portálů definovaných v souboru .ytyp, umístěná do světa pomocí .ymap, s vlastními modely, texturami a kolizemi. Instaluje se jako resource se složkou stream jako každý jiný obsah map.
Způsobují MLO lagy na FiveM serveru?
Ne na serveru - streamované soubory se servírují z disku a stojí málo CPU. Stojí klienta: čas stahování při prvním připojení a paměť při hraní. Příliš velké assety způsobují chybějící textury a pomalé načítání, čemuž hráči často říkají lag.
Jaký je limit pro streamovaný asset?
FXServer varuje u každého assetu nad 16 MiB fyzické paměti. Pořád se načte, ale velké assety soupeří se vším ostatním v okolí a způsobují problémy se streamingem. Drž každý asset pod prahem.
Proč se mi dvě mapy navzájem rozbíjejí?
Buď zabírají stejné místo, nebo streamují soubory se stejným názvem, nebo MLO nahrazuje interiér, který načítá také IPL loader. Jednu odstraň, duplikát přejmenuj nebo interiér v loaderu vypni.
Musí hráči stahovat mapy při každém připojení?
Ne. Streamované soubory se po prvním připojení ukládají do cache na hráčově počítači. Znovu se stahují jen soubory, které se od té doby změnily, a proto aktualizace velkého balíku znamená další dlouhé připojení pro všechny.




Komentáře
Zcela anonymně: žádný účet, žádný e-mail, žádné cookie. Ukládáme jen jméno, které napíšeš, text a čas - nic dalšího. Počet odkazů je omezený a značkování se nevykresluje.