stannyJe toho docela hodně.
První překážka skutečně byla, že původní editor už nezvládl víc než cca 8.000 názvů, druhou jeho dost hrubou podstatnou chybou bylo omezení délky textu názvu (16?) . Obojí osekával značně před limity samotné hry. To nemluvím o tom, že nehlídal nedovolené znaky.
Dle mojich testů PG zvládne jet i s 19.000 názvy a objevil jsem i způsob, jak zavést delší názvy. U těch problematiky delších názvů je důležité oprostit se od primitivního pohledu, že hranice je určitý počet znaků. Zásadním limitujícím faktorem totiž není délka textového řetězce co do počtu znaků, ale co do šířky v pixelech. Tj. šířka chlívku na obrazovce, kde se má text zobrazovat. To je vysvětlení, proč text
"iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii" se může ve hře v pohodě zobrazit, ačkoliv má 30 znaků, naproti tomu text
"mmmmmmmmmmmmmmm" jich má pouze 15 a nevejde se tam.
Ukládací struktura souboru mapnames předepisuje, že každý ID název má natvrdo vyhrazeno 20 bytů, kde max 19 znaků je pro samotný text a poslední je 0 jako oddělovač. Když je text kratší, za posledním znakem je 0 a zbytek do 20 je vyplněn nulami.
Důležitý objev byl, že proměnná ve hře, do které se načítá hodnota, toto omezení (19 znaků) nemá. Načítání prostě jede, a načítá vše, dokud nenarazí na 0, i když je ta 0 dále než na posledním 20. znaku, tedy v místě vyhrazeném už pro další záznam. Takže takto je možné text rozšířit až na 39. Říkejme tomu třeba rozšířený (extended) záznamu, který však vyžaduje (splnitený) požadavek, že musí být obětován následující název (následující ID nebude k použití).
Proto bylo potřeba udělat nový editor, který by při zadávání názvu dynamicky s každým uživatelem napsaným znakem názvu přepočítával a hlídal délku řetězce v pixelech.
No, editor už mám, ale je to stále jen nástroj. Teď práce - zavést do mapnames nezkrácené texty. Průser je, že už v mapnames máme všechny záznamy podle nesmyslných limitů původního editoru. Jeden záznam za druhým. Náhrada zkráceného názvu za prodloužený znamená odstřelit následující název, ten je potřeba opět dodat. Třeba na konec souboru, ale pak je potřeba předělat všechny mapy, kde je použit, na tuto novu ID pozici. Nebo nechat zkrácené názvy jak jsou, extended přidávat na konec souboru a stejně předělávat mapy na nová ID - tatáž práce, plus plýtvání místem. Nebo vložit nový název (prázdný) za rozšířovaný název a sice nic neodstřelím, zato posunu veškerá ID v souboru za tímto záznamem a můžu předělávat všechny mapy, ve kterých jsou použity - růčo to dělat děs běs.
Zatím to zkouším na PG a AG názvech. Pro PacPG by byla paradoxně nejlepší třetí možnost. Jsou tam stovky názvů napsané zkratkou nebo vypuštěním mezery. Chtělo by to celé projít a předělat podle nových možností. A při tom samozřejmě zabít několik much jednou ranou - když se pořadí stejně zpřehází, je to ideální šance jak přesunout do souvislého bloku názvů určité bitvy ty názvy, které jsi dodával dodatečně. A taky všecky názvy prokontrolovat na správnost (viz. Hauwei vs Hauwel). Předělání map podle nových ID bych už vyřešil programem, stačilo by ho nakrmit excelovskou tabukou, kde by v jednom sloupci bylo původní ID a v druhém sloupci nové ID každého názvu. Jdeš do toho? :) |