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.

19.08.2017 18:17:45
Neda sa niejako odomknut "zamknuta" mapa, ktoru nejde skompilovat? Potrebujem jeden projekt aby som vedel presne unity.
±0


19.08.2017 16:15:55
Bez si predavat svoje lacne pluginy lacnym portalom ako je napriklad mix-arena, a mna nechaj na pokoji :D
±0


18.08.2017 17:06:30
Na takovou úroveň bych se nesnížil :D na úroveň acka, to je hodně nízko.
±0


18.08.2017 02:59:58
Bude rvačka?!
+1


16.08.2017 17:06:38
To mluvíš pravděpodobně o sobě samém, já se tě v životě ptal na jedinou věc. Tady by někdo chtěl unban.
±0


15.08.2017 20:05:40
Backup, mas este bsp subor bac_assault?
±0


15.08.2017 17:15:07
Jasne, budem sa pytat "cloveka" co vraj vsetko v Hammere vie spravit, a sa ma pyta na steame ako konkretnu vec spravit :P
-2


14.08.2017 08:47:37
Hlavně že se nikomu nic nestalo :D
+1


14.08.2017 04:53:06
Noták acko, ty se mě bojíš zeptat viď? Se zeptáš radši tady co, jinak by ses cítil trapně.
±0


13.08.2017 12:09:43
Ok uz viem, CTRL + F :D
+2


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

Exceeded MAX_PA...

(Backup)
bullet.gif

Vaše kompil...

(TheLaoming)
bullet.gif

Problém se zbra...

(latins)
bullet.gif

batch compiler

(Backup)
bullet.gif

problem s RAD

(Backup)
bullet.gif

problém s .pts

(Backup)
bullet.gif

Mapa se...

(Gordon Freeman)
bullet.gif

nazdar

(Backup)
bullet.gif

osvět...

(Dominik Rozporka)
bullet.gif

spawn...

(Dominik Rozporka)

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: 2

bullet.gif Členové on-line: 0

bullet.gif Registrovaní členové: 914
bullet.gif Nejnovější člen: slayerx1