16x MapFix V1.1.4.0


16x MapFix V1.1.4.0
Oprava mapy FS25 16x – hlavní příčina + nástroj k jejímu odstranění
Proč mapy s rozlišením 16x (a větším) ve Farming Simulatoru 25 padá s chybou „allocReg“
nebo se zaseknete na „100% kompilaci shaderů“? Zde je kompletní diagnóza a také nástroj
který umožňuje načítání a synchronizaci v multiplayeru na běžném hardwaru.
Důležité:
Líbí se vám ten nástroj?
Můžete podpořit jeho vývoj na Ko-fi – prosím zmiňte „16x Map Fix“, abych věděl, na čem mám pracovat dál.
Diagnostikováno na dedikovaném serveru a klientovi s 16 GB RAM, oba se stejnou 16x mapou.
Nástroj snížil chyby „allocReg“ na skutečné mapě s 16násobným zvětšením z 878 987 na 0, takže je hratelná v multiplayeru.
Stručně řečeno (TL;DR), pád „allocReg“ je ve skutečnosti způsoben dvěma různými problémy, které vypadají stejně:
Příčina Řešení
Požadavky na paměť pro jednoho hráče – mapa s rozlišením 16x vyžaduje během počáteční kompilace dat o hustotě (map hustoty) přibližně 20–32 GB; 16 GB je nedostatečných.
Velký swapovací soubor (48 GB+) + DX11 → načte se původní, neupravená mapa. Multiplayer
Registr dlaždic s pevnou kapacitou v modulu synchronizace mapy hustoty funguje tak, že pro mapy hustoty o velikosti 16384 pixelů snižuje zapisovatelnou vrstvu mapy na 8192 pixelů – viz nástroj níže.
Důkaz, že v multiplayeru se nejedná o problém s RAM: Dedikovaný server s 262 GB RAM stále produkoval stejné chyby 3014 „allocReg“. Více RAM ani větší stránkovací soubor v multiplayeru nepomáhají – problém řeší pouze menší počet dlaždic.
Příčina podrobně.
Přetékající vrstvy (ovoce, půda, plevel, informační vrstva) jsou zapisovatelné mapy hustoty „detailů terénu“ ve hře – všude, dokonce i mimo viditelnou oblast, v nich ořete, sejete a sklízíte a server monitoruje celou mapu. Zapisovatelná data nemohou používat „virtuální texturování“ (kde se streamují pouze viditelné dlaždice určené pouze pro čtení); proto musí být tyto vrstvy umístěny výhradně v paměti a registrovány. Jejich požadavky na zdroje se škálují s plochou mapy: 16x znamená 16násobek počtu dlaždic. V režimu pro jednoho hráče klient načítá své vlastní předkompilované soubory .gdm; jediným úzkým hrdlem je krátkodobý nárůst využití paměti během počáteční kompilace, který je řešen dostatečně velkým stránkovacím souborem.
V režimu pro více hráčů server přenáší mapy hustoty každému připojujícímu se klientovi, který je živě překompiluje prostřednictvím registru dlaždic s pevnou velikostí (TiledBitmapOperationCompiler). Hustota 16384 pixelů vede k přetečení – a tedy k tisícům operací „allocReg“. To představuje pevný limit kapacity, který je nezávislý na paměti RAM; právě proto selhávají i servery s 262 GB paměti RAM a proč je efektivní horní limit GIANTS pro režim pro více hráčů čtyřnásobek standardní velikosti (4x): Mapa s velikostí 4x je největší oblast, jejíž zapisovatelná hustota se vejde jak do registru, tak do synchronizace na jedno připojení.
Nástroj
tool/mapfix.py + tool/Optimize-Map.bat (Windows Drag & Drop). Zmenší jakoukoli nadměrně velkou vrstvu hustoty nebo informací (16384 pixelů, mocnina dvou) mapy na rozlišení bezpečné pro engine 8192 pixelů – přesně rozlišení, ve kterém jsou předávány funkční mapy se 4x zvětšením. Informace o polích a plodinách jsou zachovány (dekódování → převzorkování pomocí „nejbližšího souseda“ → překódování; ověřeno jako 99,9% identické s pixely, pokrytí plodin nezměněno). Výškové mapy a geometrie terénu (dem.png, rastr s 2ⁿ+1 body) jsou rozpoznávány na základě jejich velikosti (ne mocniny dvou) a nejsou změněny.
Aplikace
Přetáhněte soubor ZIP s mapou do složky `Optimize-Map.bat` (vyžaduje Python 3 – Pillow se nainstaluje automaticky).
Ve stejné složce bude vytvořen soubor s příponou `_fixed.zip` – původní soubor zůstane nezměněn.
Nahrajte opravenou mapu na server, spusťte novou hru (důležité: staré uložené hry obsahují starou revizi hustoty) a připojte se ke hře.
Zahrnuje nástroj `grleconvert` (licence MIT) pro převod mezi soubory .gdm/.grle a PNG. Podporuje mapy s rozlišením 16x a 32x; výstup je vždy v bezpečném formátu 8192 pixelů.
Poznámka ohledně multiplayeru (automatické ukládání GIANTS).
I s opravenou grafickou kartou provádí dedikovaný server GIANTS blokující automatické ukládání (`auto_save_interval`, výchozí: 10 minut). U velkých grafických karet tento proces ukládání zastaví hlavní vlákno na tak dlouho, že připojení ke klientovi může v daném okamžiku přerušit („ztráta připojení“), zatímco samotný server zůstává online. Pro minimalizaci tohoto problému zvyšte hodnotu pro `auto_save_interval` v souboru `dedicatedServerConfig.xml` (např. na 30–60).
Další mod: Auto VRAM Optimizer
Malý samostatný mod, který zvyšuje limit streamování textur ve FS25 (standardně přibližně 4 GB) na skutečnou hodnotu VRAM vaší grafické karty. Výsledkem je plynulejší načítání a méně vyskakovacích oken u všech grafických karet s více než 4 GB VRAM – nejen u karet s 16x.
Kredity:KeilerHirsch
