Uživatel:Polda18/Pískoviště/Q3Map2

Q3Map2 je program, který je schopen z pracovního formátu levelu vytvořit hratelnou verzi formátu BSP (Binary Space Partition). BSP soubory jsou binárního typu, což znamená, že jsou prakticky needitovatelné. V současnosti podporuje tyto hry:

Program nahradil původní kompilátor Q3Map od společnosti id Software, který byl uveden k editorům QERadiant, Q3Radiant a GtkRadiant. Zvláštní přitom je, že první verze Q3Map2 měla původně sloužit jako opravný patch.

Dříve program vyvíjel jediný člověk, ydnar. Nyní je program pod křídly projektu GtkRadiant (odkaz naleznete v sekci Externí odkazy) a na programu pracuje více lidí. Ze stránek projektu je možné stáhnout verze pro Windows, Linux i Mac, a to jak v 32-bitové verzi, tak i v 64-bitové verzi. Zdrojové kódy kompilátoru jsou volně dostupné na repositáři zdrojových kódů GitHub pod sekcí GtkRadiant. (odkaz je taktéž přiložen v sekci Externí odkazy)

Nynější verze programu je 2.5.17, pro oficiální podporu navštivte fórum na Splashdamage.com.

Použití nástroje

editovat
 
Grafický layout externího programu Q3Map2Toolz usnadňuje používání nástroje.

Program je nástrojem spouštěným výhradně přes příkazový řádek. Uživatelé program spouští třemi způsoby:

  • kliknutím na položku v menu BSP v editoru GtkRadiant,
  • spuštěním přímo z příkazového řádku nebo z dávkového skriptu,
  • stažením externího nástroje s uživatelsky přívětivým grafickým layoutem

Je nutno dodat, že položky menu BSP v editoru GtkRadiant neposkytují kompletní sadu příkazů nástroje. V nastavení editoru je sice možné upravovat, přidávat i mazat položky, nicméně se tento způsob nedoporučuje. Lepší variantou plnohodnotné manipulace s nástrojem je využít zbývajících dvou možností.

Nástroj se zpravidla používá v následujícím formátu příkazů:

cesta/q3map2 [<základní nastavení>] [<důležitý parametr> [<doplňující parametr> <doplňující parametr>...]] cesta/nazevmapy.map

Parametry

editovat

Jednotlivé parametry jsou popsány níže.

Základní nastavení

editovat

Poskytují nastavení měnící chod programu. Neuvede-li se žádné nastavení, použije se výchozí. (kompilace map pro hru Quake III Arena)

-connect <název serveru|ip adresa serveru>
  • Zapíná dálkový záznam akcí programu přenášený na vzdálený server. Nemá vliv na samotnou funkci programu.
-info
  • Analyzuje soubor BSP uvedený na konci řádku a výsledky vrací na obrazovku či do záznamového souboru. Tento parametr má vliv na samotnou funkci programu a nelze jej využít při kompilaci.
-game <quake3|wolf|et|etut|ef|jk2|ja|sof2|tenebrae|qfusion|quakelive>
  • Použijte v případě kompilace mapy pro jinou hru, než Quake III Arena. Výchozí hodnotou pro tento parametr je quake3. Quake Live je hra postavená na základech hry Quake III Arena, ale používá jinou verzi BSP. Pro kompilaci pro tuto hru použijte hodnotu quakelive. Tento parametr jen mění strukturu kompilovaného BSP souboru, lze použít při kompilaci.
-fs_game <adresář modifikace>
  • Umožňuje kompilaci mapy pro modifikaci hry. Modifikace jsou uloženy v adresářích vedle základní instalace herního obsahu. Jako hodnotu použijte název adresáře Vaší modifikace. Tento parametr jen mění výchozí adresář pro potřebná data ke kompilaci.
-convert [-format <ase|map|quake3|wolf|et|etut|ef|jk2|ja|sof2|tenebrae|qfusion|quakelive>]
  • Převádí BSP formát hry do jiného. Tento parametr má přímý vliv na chod programu, nelze použít při kompilaci.
  • Pokud se neuvede parametr -format, použije se výchozí hodnota, tj. ase. Výsledek putuje do souboru nazevmapy.ase.
  • Přes parametr -format lze vykouzlit převod do jiných formátů:
    • Hodnota map dekompiluje BSP soubor zpět do pracovního formátu MAP. Ten je formátu textového, tudíž editovatelný. Program vrátí veškerou geometrii, entity a použité textury zpět do mapy, ovšem při převodu se ztratí informace o koordinátech textur a osvětlení mapy (kompilátor totiž odstraňuje entity světel z mapy a při osvětlování čte z pracovního souboru). Výsledek putuje do souboru nazevmapy_converted.map.
    • Hodnota quake3 převádí formát BSP mapy jiné hry do formátu pro hru Quake III Arena. Pro lepší představu, pokud chci převést formát mapy ze hry Quake Live do hry Quake III Arena, napíšu řádek s textem q3map2 -game quakelive -convert -format quake3 nazevmapy.bsp. Nicméně, tato funkce je ještě v plenkách a potřebuje doladit, což znamená, že se hodí pouze pro experimentální účely. Rozdíly mezi bitovou hodnotou parametrů povrchu v shader texturách mohou způsobit nekompatibilitu se hrou, do které převádíme danou mapu. Výsledek putuje do souboru nazevmapy_converted.bsp
    • Další hodnoty fungují podobně jako výše, ovšem s ohledem pro danou hru.
-scale <N.N>
  • Mění rozměry geometrie mapy podle zadaného měřítka. Hodnotou je číslo s plovoucí desetinnou tečkou (anglosaské země používají desetinnou tečku místo čárky, kterou používají k oddělení řádů). Nikdy nepište hodnotu menší nebo rovno nule! Hodnoty menší než jedna zmenšují mapu, zatímco hodnoty větší než jedna ji zvětšují. Výsledek putuje do souboru nazevmapy_scaled.bsp. Tento parametr lze použít jen pro změnu rozměrů geometrie původního binárního souboru mapy, nelze jej využít při kompilaci.
-export
  • Exportuje lightmapu z BSP souboru do obrázkových souborů TGA, které lze upravit v jakémkoliv obrázkovém editoru podporující tento formát. Pokud použijete při kompilaci, export se uskuteční až po kompilaci mapy.
-import
  • Importuje lightmapu uloženou v TGA souborech zpět do BSP souboru, který nesmí být od exportu změněn (tj. nesmí být překompilován). Tento parametr nelze použít při kompilaci.
-exportents
  • Exportuje seznam použitých entit v BSP souboru do souboru ENT, který je formátu XML. Například při výpisu použitých entit v mapě pro Quake Live lze použít zápis q3map2 -v -game quakelive -exportents nazevmapy.bsp. Nelze použít při kompilaci.
-threads <X>
  • Nastavuje počet vláken, které Q3Map2 použije při kompilaci mapy. Zejména tak umožňuje lepší výkon procesoru při kompilaci mapy. Nástroj si v případě OS Windows umí počet vláken nastavit sám podle výkonu procesoru, uživatelé Linuxu si jej budou muset nastavit sami. Mohou k tomu použít nástroj k analýze výkonu procesoru. Použití tohoto parametru přebíjí automatickou detekci na OS Windows.
-v
  • Zapíná verbalistický mód. Tento parametr je velmi užitečný, protože vrací podrobnější informace o průběhu akce programu.
-rename
  • Použijte pouze s kombinací se zápisem -game sof2. Opravuje chybu v zobrazení dekoračních modelů ve hře Soldier of Fortune II. Pokud se Vám model ukazuje zcela černý, neosvětlený, použijte právě tento parametr.

Důležité parametry

editovat

Parametry, které jsou pro kompilaci hratelné mapy nutné. Při použití všech parametrů v jedné kompilaci je oddělujte na více řádků. Na každý řádek jeden parametr.

-bsp
  • Výchozí parametr. Je možné vynechat, manuální vepsání do příkazu nemá vliv. Ve výchozím módu kompiluje geometrii a píše soubory PRT (soubor dat portálů) a SRF (soubor dat geometrických ploch a jejich zobrazení). Parametr také kontroluje přítomnost kompletních geometrických dat, pokud cílový soubor existuje. Pokud existují a shodují se, program nic nepřepisuje.
-vis
  • Kompiluje data o viditelnosti jednotlivých polygonů na základě datových souborů SRF a PRT do BSP souboru. Data do souboru přidává, nikoliv že soubor přepíše.
-light
  • Počítá data osvětlení mapy hned ze dvou zdrojů: entity osvětlení v mapě a skripty shader. Pokud se parametr -light neuvede, mapa bude bez lightmapy, tudíž celá osvětlená tzv. whitemapou (whiteimage). Tomuto stavu se také říká fullbright.

Doplňující parametry

editovat

Všechny důležité parametry mají i řadu doplňujících parametrů, které pomáhají vylepšit či úplně změnit vzhled celé mapy. Protože doplňujících parametrů je celkem hodně, v zájmu čitelnosti jsou seznamy těchto parametrů organizovány do podstránek.

Seznam všech parametrů pro hlavní parametr -bsp je na podstránce BSP.

Seznam všech parametrů pro hlavní parametr -vis je na podstránce VIS.

Seznam všech parametrů pro hlavní parametr -light je na podstránce Light.

Entity pro Q3Map2

editovat

Editor GtkRadiant má také dvě extra entity, které samotné ve hře neexistují. Tyto entity využívá kompilátor k vytvoření zajímavých efektů, které by jinak bylo velmi pracné napodobit běžným způsobem.

Definuje plochu, která se bude promítat na plochy za viditelnou rovinou. Samotná entita nebude vidět. Entita musí být sestavena z plošných křivek spojených s entitou info_null. Čára mezi promítanou plochou a entitou info_null je osa a relativní vzdálenost projekce. Entita, která tvoří osu, musí být za geometrickým objektem, na který chcete plošný objekt promítat. Jinak se Vám projekce neukáže.

_skybox

editovat

Tato entita dokáže zázraky. Umí nastavit střed geometrického skyboxu v uzavřené oblasti a tuto oblast přenést do oblasti s použitím textury oblohy. Narozdíl od obrázkového skyboxu tvořený skripty shader je pozice skyboxu geometrického pevná, tudíž se nepohybuje spolu s hráčem. Viditelný je všude, kde je normálně vidět obloha, ale zároveň vrhá stíny na aktuální geometrii mapy. Lze jej použít pro vrstvy mraků a jiné efekty (například blesky). Pro informace o použití entity navštivte tutoriál v sekci Skybox.

Speciální klíčová slova entit

editovat

Některé entity tvořené geometrií mapy mají speciální klíčová slova, která mají efekt jen při kompilaci a ve hře samotné nejsou využívány. V zájmu čitelnosti je jejich seznam uveden na podstránce Speciální klíčová slova.

Tutoriály

editovat

Zde naleznete pár příkladů jak dosáhnout dobrých výsledků při použití nástroje. Tyto návody lze poté využít při budování vlastní mapy pro veřejnost.

„Finální“ kompilace pro dobrou mapu

editovat

Mapy potřebují řadu kontrol a úprav, než autor docílí správných výsledků. Slovo „finální“ znamená verzi k publikaci, kterými mohou být alfa i beta verze mapy určené k testování komunitou hráčů, ale i skutečně finální verze mapy, která je definitivně dokončená a připravená k publikaci pro širokou veřejnost. Lze k tomu využít následujících příkazů:

"/cesta/q3map2" -meta -patchmeta -v "/cesta/nazevmapy.map"
"/cesta/q3map2" -vis -v "/cesta/nazevmapy.map"
"/cesta/q3map2" -light -fast -patchshadows -samples 3 -bounce 8 -gamma 2 -compensate 4 -dirty -v "/cesta/nazevmapy.map"

Tyto příkazy lze modifikovat pro Vaše účely (například pro kompilaci mapy pro modifikaci či jinou hru). Případně můžete toto nastavení přenést do externího nástroje s grafickým rozvržením pro příjemnější manipulaci.

Pokud má hra ve výchozím nastavení proměnné r_overbrightbits hodnotu 1 (zapnuto; Quake III Arena je příkladem), měli byste použít parametry -gamma a -compensate. Jinak je lze z příkazu odstranit.

Tvorba modelu z geometrie mapy

editovat

Někdy je potřeba vytvořit dekorační model pro mapu, ale po ruce nejsou potřebné nástroje (například 3DS Max nebo Milkshape 3D). Na řadu přichází alternativní možnost tvorby modelu přes editor map a kompilátor Q3Map2.

  1. Vytvořte geometrii Vašeho modelu v GtkRadiantu. Nezapomeňte ji ohraničit bariérou otexturovanou shader texturou textures/common/caulk a přidat entitu info_player_start (či jakoukoliv entitu pro spawnpoint hráče).
  2. Uložte pod názvem Vašeho modelu s koncovkou map.
  3. Spusťte kompilaci s příkazem -meta -patchmeta -v. Pokud má geometrie plošných křivek příliš nízký počet polygonů, přidejte zápis -subdivisions 0 na řádek, případně zvyšte hodnotu parametru pro jemnější výsledek (vyšší počet polygonů). Zde není nutné kompilovat s použitím parametrů -vis a -light, protože mapa není určená k hraní. Nyní byste měli mít BSP soubor s názvem Vašeho modelu v adresáři maps.
  4. Spusťte převod BSP souboru do formátu ASE pomocí příkazu -convert. Po úspěšném převodu by měl být v adresáři maps soubor ASE s názvem Vašeho modelu.
  5. Vytvořte novou mapu, do které vložíte entitu misc_model. Budete vyzváni k výběru souboru. Zvolte formát ASE a najděte Váš model. Potvrďte výběr a spusťte kompilaci mapy. Nyní je Váš model hotov.

Za předpokladu, že Váš model se jmenuje statue, můžete použít následující příkazy:

q3map2 -meta -patchmeta -v statue.map
q3map2 -convert statue.bsp

V tomto případě budete mít k dispozici soubor statue.ase.

 
Rozdíly mezi hodnotami -subdivisions a absencí parametru
-subdivisions #
  • Zvyšuje počet polygonů geometrie. Použijte při kompilaci z pracovního souboru. Vyšší hodnoty zvyšují triangulaci, což může rapidně snížit výkon grafického procesoru.

Entita _skybox umí zkopírovat uzavřenou oblast do prostoru portálu s oblohou. Veškerá geometrie ve skyboxu bude vidět ve všech prostorách oblohy. Je jedno, kterou texturu oblohy použijete, geometrie Vašeho skyboxu ji nahradí. Podmínkou pro úspěšnou kompilaci je, aby byly prostory mapy zcela uzavřeny od okolního venkovního prostoru (nazývaný void), a oblast skyboxu musí být kompletně izolována od herní oblasti mapy. Skybox muže být jen jeden, stejně tak jako entita pro přenos geometrie. Pokud je mezi herní oblastí a skyboxem díra, dojde k chybě a poškození souboru BSP. Kompilace také zabere mnohem více času, než obvykle, samozřejmě úplně zbytečně. Pro vytvoření mapy s geometrickým skyboxem dbejte následujících pokynů:

  1. Vytvořte mapu obvyklým způsobem. Použijte fantazii, kterou si samozřejmě přizpůsobíte ke skyboxu.
  2. Zkontrolujte, že mapa je zcela uzavřena a že nikde není díra do okolního prostoru.
  3. Vytvořte menší oblast vzdálenou od herní oblasti pro skybox. Mezi skybox a herní oblsst nesmí přibýt žádná cestička, která by umožnila průchod do oblasti skyboxu. Oblast by měla být v dostatečné vzdálenosti, aby nebylo možné zahlédnout geometrii skyboxu v jejím původním umístění.
  4. Přibližně doprostřed této oblasti vložte entitu _skybox. Mějte na paměti, že střed entity představuje střed výsledného skyboxu. Ten je relativní vzhledem k oblasti mapy, kde se nachází textura oblohy. Trocha experimentování ukáže funkci entity.
  5. Uložte a spusťte kompilaci. Nyní máte mapu s geometrickým skyboxem.

Poznámky ke klíčovým slovům:

  • Klíč _scale definuje měřítko skyboxu vzhledem k jeho původním rozměrům. V závislosti na velikosti skyboxu vzhledem k velikosti herní oblasti zvolte měřítko v rozmezí 64 – 256 jednotek. Dobré je uvádět měřítko v mocninách dvou pro zachování vertexů geometrie v mřížce mapy.
  • Klíč angles lze použít pro rotaci skyboxu. Je možné ho otáčet podél jakékoliv osy, což umožňuje zmást hráče.
  • Skripty shader využívající deformaci povrchu pomocí rozdělení polygonů a pohybu vrcholů (tzv. vertexů) je možné taktéž použít ve skyboxu, ale hodnoty deformačních koordinátů musí být násobeny měřítkem.
  • Textury použité na geometrii skyboxu musí být menší, jinak budou textury příliš velké a rozostřené.

Dekompilace

editovat

Nástroj dokáže dekompilovat hratelný formát BSP zpět do pracovního formátu MAP. Výsledek je téměř identický zdroji, chybí jen informace o koordinátech textur a světla (entita light). Hodí se pro předělávky existujících map nebo pro lepší inspiraci struktury mapy (portály, geometrie, styl, atd). Jak dekompilovat mapu se dozvíte následováním těchto pokynů:

  1. Soubor BSP vložte do adresáře, kde máte program q3map2.
  2. Otevřete si příkazový řádek (případně konzoli) a přejděte do adresáře se souborem BSP a programem q3map2.
  3. Teď už stačí jen napsat příkaz q3map2 [-game <hra, ze které je soubor>] -convert -format map <soubor mapy>.bsp

Takže, pokud je BSP soubor pojmenován například waterfalls.bsp a dekompilujete ze hry Quake Live, potom bude příkaz vypadat takto:

q3map2 -game quakelive -convert -format map waterfalls.bsp

Pokud dekompilujete BSP ze hry Quake III Arena, není třeba psát parametr -game, použije se výchozí hodnota quake3.

Po úspěšném převodu by měl být v adresáři s programem q3map2 a souborem BSP nový soubor s názvem <soubor mapy>_converted.map.

Reference

editovat

V textu je použit překlad ze stránky na anglických Wikiknihách.

Externí odkazy

editovat