tvorbamap.cz

tvorbamap.cz

Navigace

bullet.gif

Domů


bullet.gif

Články


bullet.gif

Ke stažení


bullet.gif

Fórum


bullet.gif

FAQ



bullet.gif

Herní server


bullet.gif

Chat


bullet.gif

Převod jednotek



bullet.gif

Soutěž


bullet.gif

Síň slávy



bullet.gif

Podpořte nás


bullet.gif

Kontakt


bullet.gif

Vyhledávání


bullet.gif

RSS


Herní server

Shoutbox

Pro přidání zprávy do shoutboxu, musíte být přihlášeni.

25.05.2018 18:25:13
čusB)
±0


16.05.2018 18:45:46
poradi mi niekto ako spravim to, ze ked vstupim do miestnosti mi to bude davat granaty ak ho nebudem mat? :D
±0


05.03.2018 10:08:05
nazdar
+1


28.02.2018 09:36:12
alohaa :D
±0


28.01.2018 23:50:42
nice
±0


28.01.2018 14:30:59
chat je rip tak 3 roky min
+2


28.01.2018 11:58:37
rip netlab koukam, rip chat :/
±0


25.01.2018 11:51:55
https://www.runthinkshootlive.com/mesa-cup-2018/

Mesa Cup!
-1


31.12.2017 12:01:45
Dobrý den, mám problém který mi neumožňuje renderovat mapu na mém NT. Jakmile zapnu render, automaticky mi vyhodí hlášku, že program přestal pracovat. Setkal se někdo už s tímhle problémem? Děkuji.
±0


30.12.2017 16:20:10
Už dělám jenom PFka :D
±0


Dekompilace

(Mimo hammer)


Dnes se mrkneme na nejznámější dekompilátory map. Povíme si také něco o tom, jak fungují a jak se dá dekompilaci bránit.


Dekompilátory



Na internetu se můžeme najít docela dost programů na dekompilaci bsp do map souboru. Zatím jsem ale narazil jen na dva druhy způsobu dekompilace.

BSP2MAP
Na tento způsob dekompilace narazíte většinou. Najdete ho v programech BSPTwoMAP, BSPViewer, BSP_MAP nebo bsp2rmf.
Poznáte ho tak, že pro každou stěnu se vytvoří brush tenký 1hu. Ve výsledném map souboru je pak mapa dutá. Takto dekompilované mapy jsou nevhodné pro znovuzkompilování - hodně dlouho vám poběží CSG a BSP, protože dekompilovaná mapa obsahuje mnohem více brushů než původní. Pokud používáte ZHLT, dutiny se nezahodí, ale normálně zkompilují, takže znovuzkompilovaná mapa bude obsahovat zbytečné obslasti. To neplatí pro VHLT, kde už se dutiny zahazují. Pokud někde v mapě stěny svírají ostrý úhel, vznikne nepěkný roh.

Program BSPTwoMAP se používá jako každá jiná konzolová aplikace. Pokud nevíte, jak se používá konzolová aplikace, prostě přetáhněte bsp soubor na aplikaci bsptwomap.exe.
Pomocí parametrů je možné zakázat exportování textur, velikost ORIGIN brushe, nebo předejít bugům v případě, že je mapa kompilovaná v té době převratnými ZHLT 1.7p. :)

WinBSPC
Tento způsob dekompilace jsem nalezl jen u tohoto programu.
Narozdíl od BSP2MAP vytváří větší brushe, takže dekompilovaný map soubor opravdu připomíná mapu a různé brushe občas i odpovídají originálnímu zdrojovému rmf. Takovéhle dekompiláty se dají po opravení všech chyb znovu zkompilovat. Opravit je potřeba posunutí textur, přidat chybějící brushe a CLIPy.

WinBSPC se ovládá jednoduše - ve File -> Convert vyberete kýžené bsp, zaškrtnete možnost MAP a odklepnete. Dá se také nastavit jiná výstupní složka, nebo parametry dekompilace:
best match texturing - dekompilátor se bude snažit o co nejméně brushů nezávisle na tom, jak moc rozhází textury
no brush merging - brushe se nebudou slučovat, ale zůstanou rozděleny stejně jako v bsp
no liquids - voda se zahodí
Pokud po otevření dekompilátu ve VHE jsou stěny pouze barevné, je potřeba všechny brushe označit, otevřít Texture application tool a zaškrtnout World.

Program WinBSPC je ke stažení zde.


Dekompilace



Začneme kompilací (CSG a BSP) - z naší formy (zdrojového rmf) odlijeme odlitek (bsp). Z tohoto odlitku se samozřejmě dá vyrobit forma, ale nikdy ne stejná jako originál. Kompilací se zahodily informace o tloušťce zdí, zůstaly nám jen okraje. Stěny jsou navíc rozřezány jak pravidelně (subdivide - 240), tak nepravidelně. Ztratili jsme také CLIP, ORIGIN a HINT/SKIP brushe. Ty se ale dají vytvořit z informací ve které se přeměňují - CLIP z hullů 1 a 3, ORIGIN z originů entit a HINT/SKIP z portálů.
Při převodu stěn na brushe se většinou používá jednoduchý bsp2map princip - všechny stěny se uloží jako 1hu brushe. Složitější algoritmy naleznou rozřezané stěny a spojí je zpět v jeden celek - ten se samozřejmě může lišit od originálu. Nejsložitější je pak winbspc algoritmus, kdy je potřeba obalit konkávní oblast co nejméně konvexními brushi.
dekompilace
Hodně chybných brushů vznikne kvůli ukládání do formátu map. Při ukládání do rmf je v podstatě možné překopírovat vrcholy přímo z bsp.


Obrana



BSP se nedá zaheslovat, takže je potřeba ochránit jiným způsobem. Dovolím si říci, že dokud se mapa dá otevřít v CSku, dá se i dekompilovat. Tudíž jediný způsob, jak mapu ochránit, je pokusit se vyvolat chybu v dekompilátorech. Našel jsem zatím dva způsoby jak vyvolat chybu.

1, Rozbití parseru entit.
Entity jsou v bsp uloženy v následujícím formátu:

{
"origin" "0 -128 448"
"angles" "-90 270 0"
"_light" "255 255 255 200"
"classname" "light_environment"
}
{
"origin" "-64 -704 64"
"angles" "0 90 0"
"classname" "info_player_start"
}


Parser je program/algoritmus, který tento zápis zpracuje, který se dále použije např. pro vykreslení těchto entit. Každý program, který chce pracovat s jednotlivými entitami v BSP musí mít vlastní parser. Bohudík CSko má mnohem lepší parser než všechny dekompilátory, takže ho nic nerozhodí. Dekompilátory rozhodí ale všechno možné.
> když je v názvu hodnoty nový řádek
> když je mezi uvozovkami nějaký text ("classname"text"light")
> když za ukončenou složenou závorkou nepřijde nový řádek (}{)

Nějaký ten čas zpátky jsem napsal program, který ochrání mapu právě tímto způsobem. Zápis entit v mapě protažené títmo programem by pak vypadal např. takto:

{
"origin" "0 -128 448"
"angles" "-90 270 0"
"_light" "255 255 255 200"
"classname" "light_environment"
"
JaeK
"c0b"iAVp"
}{
"origin" "-64 -704 64"
"angles" "0 90 0"
"classname" "info_player_start"
"QnS
"ism"elEn"
}


Jako protiútok ze strany dekompilátoru by samozřejmě stačlio napsat lepší parser, nebo program, který by toto svinstvo odstranil.

Na tento způsob ochrany jsem přišel, když jsem zjistil, že mapa z korejského CSO nejde dekompilovat a že nedělají nový řádek mezi složenými závorkami. O korejském CSO určitě také něco napíšu.

2, Překročení limitů.
Zdrojové kódy dekompilátorů k sehnání samozřejmě nejsou, ale protože dekompilátory používají zdrojové kódy kompilátorů, není složité zjistit, jaké jsou požadavky na mapu. Mohli bychom si zjistit podle data vydání, jakou verzi zhlt zdrojáků asi používají, ale nám bude stačit poslední verze.

#define MAX_MAP_ENTSTRING (512*1024)
#define MAX_KEY 32
#define ZHLT3_MAX_VALUE 4096
#define DEFAULT_MAX_MAP_MIPTEX 0x400000


Vybral jsem ty limity, které jdou nejlehčeji překročit. První tři se opět vážou k entitám - maximální délka zápisu entit, maximální délka názvu hodnoty a maximální délka hodnoty. Kdybychom tedy přidali na konec zápisu entit tolik mezer abychom překročili limit (524288 znaků), nejspíše bychom opět zamezili dekompilaci.
Poslední limit se váže k includnutým texturám. Pokud k mapě přiložíme více jak 4MB textur, mapa nepůjde dekompilovat.

Možná si říkáte, jestli má cenu zbytečně mapu zvětšovat o 0,5MB entit, nebo 4MB textur. V případě, že tato přidaná velikost bude složena z těch stejných znaků (mezery, černé pixely nebo nulové bajty), tak ji při stahování mapy nepocítíme, protože se jednoduše zkomprimuje na pár bajtů.

Na tento způsob ochrany jsem přišel, když jsem zjistil, že nejde dekompilovat de_varant.

Komentáře

#1 |
Dominio dne 13.06.2012 13:05:01 |
+1
+1,Skvělé, doufám že se nováčci pořád přestanou ptát jak dekompilovat. Ještě bys mohl někam nakonec dát link na stažení už dekompilovaných originálních map.
A nebo to udělat takhle :D
#2 |
Linux dne 14.06.2012 22:36:41 |
±0
ten winbspc mi nefunguje...
unknown BSP format VBSP,version 20
GetLastError() = 0
co s tym?plss
#3 |
Backup dne 15.06.2012 14:57:35 |
±0
Nesnažíš se náhodou dekompilovat mapu do Source? Na to jsou pak samozřejmě jiné nástroje - např. BSPSource.
#4 |
Linux dne 15.06.2012 18:24:24 |
±0
aha no diky :D ja som myslel ze to je na source toto
#5 |
Linux dne 22.06.2012 20:23:30 |
±0
hej nejak to neviem spustit...
#6 |
neclovek dne 02.03.2013 19:59:08 |
±0
Este jednu otazocku? Naco je vhodne si takto "zamykat" mapu? Sak co je na tom zle ked ju niekto upravi/prerobi ?
#7 |
Ardonicek dne 16.07.2013 22:03:50 |
±0
neclovek - napríklad, keď niekto bude chcieť upraviť tvoju mapu ...
Napr. máš v nej reklamu, že si to tvoril ty, a prsote oni to zmažú..

Přidat komentář

Pro přidání komentáře musíte být přihlášený.

Hodnocení

Pro hodnocení musíte být registrovaný.

Prosím přihlašte se nebo se zaregistrujte.

Výborné! Výborné! 100% [6 Hlasů]
Chvalitebné Chvalitebné 0% [Žádné hlasy]
Dobré Dobré 0% [Žádné hlasy]
Dostačující Dostačující 0% [Žádné hlasy]
Nedostačující Nedostačující 0% [Žádné hlasy]

Přihlášení

Jméno

Heslo



Nejste členem?
Zaregistrujte se!

Ztracené heslo?

Seznam článků

Diskuze fóra

Nejnovější příspěvky


bullet.gif

Pády serveru př...

(latins)
bullet.gif

Restartování entit

(Backup)
bullet.gif

Problém na serv...

(Backup)
bullet.gif

Chybí mi stromy

(latins)
bullet.gif

Spojení vlastností

(Backup)
bullet.gif

Svetlo

(Backup)
bullet.gif

Program přestal...

(Backup)
bullet.gif

help

(mailyy)
bullet.gif

lyy_min...

(Gordon Freeman)
bullet.gif

run

(mailyy)

Odkazy

Kotelna Mix-Arena.eu - Gaming portál AMX Mod X nonsteam.cz - seznam CZ/SK Non-Steam Counter Strike serverů

Twitter & FB


Kdo je on-line

bullet.gif Hosté on-line: 1

bullet.gif Členové on-line: 0

bullet.gif Registrovaní členové: 922
bullet.gif Nejnovější člen: filijan