Jste návštěvník číslo:

Chaser World Studio 2000 návod

 

 

Kapitola 7. - Portály a Visibility eye:

Portály a buňky tvořené z entit "visibility_eye" patří vůbec k nejdůležitějším součástem každé mapy, neboť nám level rozdělují na mnoho částí a zajišťují plynulost při vykreslování prostředí. Vždy se totiž bude vykreslovat jen ta buňka, v níž se právě nacházíte, a části těch buněk, do nichž z aktuální buňky vidíte skrze rozmístěné portály, které buňky od sebe oddělují. Abyste lépe pochopili důležitý význam těchto portálů a buněk, představte si situaci, kdy by se měl vykreslovat úplně celý level, a to včetně částí, které z vaší aktuální pozice v mapě ani nevidíte. Nejenže by to bylo zcela zbytečné, ale v takovém případě i naprosto nehratelné, neboť jeden level může obsahovat až 50 000 brushů, a to by při současném vykreslování značně zatížilo hardware počítače. Nejspíš natolik, že by se tak velký level ani nerozběhl. Je tedy třeba zajistit, aby se level vykresloval po částech a zatěžoval grafickou kartu co nejméně, respektive aby se vykreslovala jen ta část, ve které se právě nacházíte a kterou vidíte. To zajistí, že i přes značnou velikost, rozlehlost a složitost celého levelu bude hra běžet naprosto plynule a bez problémů.

U malých levelů, jako je naše zkušební místnost, není dělení nutné, jelikož neobsahuje příliš mnoho brushů. V takovém případě nevadí, že se nám vykresluje úplně vše, byť to třeba zrovna nevidíme. S rozrůstajícím se levelem však rozdělení na buňky bude nutností, kterou se rozhodně nevyplácí podceňovat. I když by se vám mohlo zdát, že na vašem počítači level běží plynule, jinému hráči se slabším hardwarem už by level při vykreslování pravděpodobně dělal problémy. Proto je třeba naučit se používat buňky a portály hned na začátku, třebaže level sám o sobě nikterak velký není.

Abychom si mohli před závěrečnou kapitolou základního kurzu práce v editoru WS 2000 vysvětlit funkci dělení map, je třeba k naší stávající mapě s jednou místností připojit místnost další. Myslím, že v současné době již práci s brushy ovládáte natolik obstojně, že vtvoření další místnosti a následné propojení chodbičkou pro vás nebude žádný problém. Takže neváhejte, a pusťte se do práce, protože druhou místnost budeme potřebovat. Klidně si i pohrajte s detaily, ať to dostanete pořádně do ruky. Inspirovat se můžete obrázkem vpravo, jak jsem to vyřešil já. V případě, že se po mém vzoru rozhodnete vyřádit a po podlaze poházíte jako já pár cihel, pak je dobré těmto brushům nastavit funkci průchodnosti. A to platí i pro vaši budoucí tvorbu. Možná si vzpomínáte na level v podzemí Malého Tokya, který je v původní hře a právě díky takovéto propracovanosti v podobě nekonečné suti po podlaze patří mezi nejzajímavější. Jistě si ale vzpomenete i na to, že díky stovkám cihel na zemi se hráč často při pohybu zasekával. Pokud nechceme, aby k něčemu podobnému docházelo i v našich levelech, pak je dobré u každé cihly pomocí tlačítka "B" nastavit parametr "Player No Clip", který nám zajistí průchodnost těchto brushů pro hráče, a "Bot No Clip", který zajistí průchodnost i pro NPC postavy - nepřátele, aby se nám také nezasekávali o nerovnosti v terénu. Vše potvrďte "Ok" a je hotovo. Ale vraťme se zpět k portálům a buňkám, o kterých je tato kapitola.

Pokud budete vycházet z mého řešení, pak bude nejlepší mapku rozdělit na tři buňky - první místnost bude jedna buňka, spojovací chodbička druhá buňka a druhá místnost třetí buňka. Buňkou je myšlena entita "visibility_eye" nebo soustava několika těchto entit. "Visibility_eye" je vlastně jakési oko, které určuje, co do buňky patří, neboli ještě jednodušeji řečeno - co tyto "oči" vidí, to patří do buňky. Tato buňka a vše, co do ní patří, se bude zobrazovat jen tehdy, když se v ní bude nacházet hráč, nebo její části v případě, budete-li se do buňky dívat z jiné skrze portály, kterými jsou jednotlivé buňky (soustavy entit "visibility_eye") od sebe odděleny.

Nejprve začneme se samotnými "portály", které buňky oddělují. Tyto portály se musejí umístit všude tam, kde je vidět či je možno projít do jiné buňky. V našem případě, kdy máme dvě místnosti propojené chodbičkou, tedy přijdou portály umístit na oba konce chodbičky, konkrétně jeden do futer dveří a druhý do vybourané příčky. Portál vyberete na hlavní liště v nabídce brushů (ikona zeleného kvádru). Vkládá se a pracuje se s ním naprosto stejně, jako s brushy, takže jakmile ho budete mít v mapě, přesuňte jej na určené místo a přesně zarovnejte ke stěnám. Přesné zarovnání je velmi důležitě, protože byť malinká škvíra mezi stěnou a portálem může způsobit při průchodu hráče fatální následky v podobě přehození vykreslování. Pak se může totiž stát, že buňka, ve které se hráč nachází, se vykresluje jen částečně, zato sousední se vykresluje celá. Je to důsledek toho, že při průchodu špatně umístěným portálem jste se pravděpodobně trefili rovnou do té škvíry, kde kus portálu chybí, a průchod skrze portál se tak nezapočítal, takže byť už jste v jiné buňce, jejich vykreslování zůstalo v nezměněném stavu, a někdy bývá značný problém trefit se zase zpět. Tudíž věnujte zvýšenou pozornost, aby se portál v každém průchodu skutečně přesně dotýkal stěn, stropu i podlah, a nikde nevznikaly nežádoucí mezery. Co se týče tloušťky portálu, ta by měla být co nejmenší, takže v případě potřeby si zvyšte hustotu mřížky (přidržet "levý Shift" a točit "kolečkem myši"), abyste jej mohli zužit na nějakou rozumnou tloušťku. Viz. obrázek.

Někdy nastanou ovšem případy, kdy je třeba portál umístit přímo do brushu, a to především v případě oken se skleněnými výplněmi či v uzavřených dveřích. Jelikož entita "visibility_eye" - naše virtuální oko - musí vidět na každý portál spadající do stejné buňky, je třeba překážku v podobě brushu vytvářejícího skleněnou výplň či dveře opatřit příslušným parametrem. Jak jsem již nakousl v druhé kapitole, brush, v němž je portál umístěn, si označte a poté stiskněte klávesu "B". Mezi parametry pak zaškrtněte políčko "See Through", což zajistí průhlednost brushu pro buňky a tím pádem i viditelnost portálu skrytého uvnitř brushu. Kdybyste tak neučinili, "visibility_eye" by portál neviděly a brush tvořící sklo či dveře by braly jako konec buňky a nikoliv jako průchod s portálem do další buňky. Po nahlédnutí oknem či po otevření dveří byste tedy na druhé straně nic neviděli, neboť díky nezapočítanému portálu by se sousední buňka nevykreslovala, dokud byste do ní sami nepřešli.

Nyní máme rozmístěné portály k oddělení jednotlivých buněk, takže se již můžeme vrhnout rovnou na samotné entity "visibility_eye". Nejlepší pravděpodobně bude, když začneme s buňkou v chodbičce, neboť tam nám k jejímu vytvoření s ohledem na velikost prostoru postačí pouze jediná entita. Otevřete si již tradičním způsobem, klávesou "E", okno s nabídkou všech entit. V levém sloupci "Entity_list" otevřete kategorii "helpers", pod níž je několik systémových entit včetně "visibility_eye". Tu si označte, okno opět uzavřete a poté entitu vložte do prostoru chodbičky, nejlépe někde do jejího středu. Viz. dva obrázky níže.

 

 

Nyní máme vytvořenou první jednoduchou buňku. K vytvoření další postačí, když označenou "visibility_eye" zduplikujeme mezerníkem (klávesa "Space") a poté ji myší přesuneme do sousední místnosti. Já vybral místnost pravou, a to z toho důvodu, abych vám vysvětlil jednu z dalších důležitých věcí ohledně tvorby buněk. "Oči" totiž skutečně vidí, a jestliže jim něco stojí ve výhledu, předměty za překážkou neuvidí a ve hře se nevykreslí, byť fyzicky tam budou. Můžete si všimnout na obrázku vpravo, že jsem pro názorné předvedení této vlastnosti "visibility_eye" do středu pravé místnosti umístil sloup a "oko" jsem umístil od vybourané příčky až za něj. Jak můžete vidět na přiloženém obrázku, "oko" ve své pozici by přes sloup uprostřed místnosti nevidělo ani portál, který buňka vidět musí, ani některé cihly. Takovéto umístění buňky s jedním "okem" v místnosti by mělo za následek nevykreslení cihel zakrytých sloupem, nebo rovnou neúspěšnou kompilaci mapy, protože by portál pro "oko" skrytý za sloupem nebyl z jedné strany "viděn", což je podmínkou pro úspěšnou kompilaci. Nelze ale ani "oko" umístit blíže vchodu, protože pak by zase nebyly vidět předměty skryté za sloupem z druhé strany. Je tedy třeba buňku opatřit více "očima" a umístit je do takové pozice, ze které budou pokryty všechny předměty a části místnosti. Jedině tak lze dosáhnout toho, aby se vykreslilo vše tak, jak má.

Označte si tedy "visibility_eye" a opět ji zduplikujte. Poté ji přesuňte k protějšímu rohu místnosti, který je pro první "oko" v zákrytu. Nyní máme v místnosti již dvě "oči", které bohatě stačí k pokrytí celého prostoru. Nemůžeme je ale nechat tak, jak právě jsou, neboť pak by se započítávaly jako dvě samostatné buňky, což v jednom a tom samém prostoru odděleném od ostatních portály nejde. Musíme tedy ještě obě "oči" vzájemně propojit a vytvořit z nich tak jednu celistvou buňku.

S propojováním několika entit se setkáte při tvorbě levelů poměrně často, a to především při tvorbě různých efektů, skriptů či pohyblivých předmětů, které pro svou funkci vyžadují celou soustavu nejrůznějších a vzájemně propojených entit. Entity se propojují takzvanými "linkami".

U naší buňky potřebujeme jen propojit linkou dvě oči "visibility_eye". Na tom není nic složitého a jistě velmi rychle pochopíte, jak na to. Důležité je si především označit entity, které chcete k sobě nalinkovat. To provedete klasickým podržením "levého Ctrl + Shift" a ve 3D pohledu klikem "pravého tlačítka myši" na jednu a poté na druhou entitu "visibility_eye" Pořadí, v jakém entity po sobě označujete, pak určuje směr propojovací linky. Při tvorbě buněk z "visibility_eye" ale směr není důležitý.

Jakmile máte obě entity označené, stiskněte kombinaci kláves "levý Alt + E", čímž se vytvoří linka a obě entity se navzájem propojí. Všimnout si můžete, že linka je uprostřed opatřena směrovkou, jak jsem o tom hovořil výše. V našem případě ale směr linky nehraje roli. V případě, že vaši buňku tvoří více jak dvě "visibility_eye", však postupujte při označování postupně. Vždy propojujte jen dvě entity a nikoliv všechny najednou. Došlo by totiž k hromadnému nalinkování, kdy by z každé "visibility_eye" směřovala linka ke každé "visibility_eye" v buňce. Takové propojování však u buněk nepoužívejte, neboť by to mohlo způsobit problémy ve hře. Správné propojení "visibility_eye" v buňce by mělo být jednosměrné a v jedné řadě - vždy od jednoho "oka" k druhému, od druhého "oka" k třetímu atd. Pokud budete nějakou linku chtít zrušit, pak si entity, mezi nimiž má být linka zrušena, označte, a poté stiskněte kombinaci kláves "levý Ctrl + E" pro zrušení.

Nyní nám již zbývá rozmístit "visibility_eye" ve třetí, poslední místnosti. Mohlo by se zdát, že by nám k vytvoření buňky stačilo jen jedno "oko", když v místnosti není žádná překážka, ale pravdou je, že jedno by bylo již nejspíš málo. "Visibility_eye" totiž mají omezený dosah svého vidění, který se dá nastavovat před kompilací mapy. Proto v případě, že je místnost velká, dlouhá, široká či vysoká, se více "očím" nevyhnete. Do této místnosti tedy umístíme alespoň tři "visibility_eye" a navzájem je v jednom směru propojíme. Tím zajistíme dostatečné pokrytí celé místnosti. Viz. obrázek vpravo.

Některé entity, například "corona" světel či "particle", vyžadují vzájemné propojení s nejbližší "visibility_eye", aby se definovalo, k jaké buňce tyto entity patří. V případě, že je s buňkou nepropojíte, nebudou ve hře vykresleny nebo dojde k chybě při kompilaci mapy. To se týká taktéž entit, které běžně propojení nevyžadují, ale v některých případech při kompilaci editor nerozpozná, ke které buňce je má přiřadit. Jde například o entity jakéhokoliv druhu, které jsou někde skryty a žádné "oko" buňky je nevidí, nebo které jsou umístěny uvnitř nějakého brushu a buňka je opět nevidí. Pak je taktéž třeba entitu propojit s nejbližší "visibility_eye", aby se definovalo, ke které buňce ji má editor přiřadit.

My takové entity, pokud jste postupovali přesně jako já, máme v naší zkušební mapce dvě. Jedná se o entity "ambient_sound" produkující zvuk hučícího potrubí. Umístili jsme je totiž přímo do válce trubky a editor by tedy nerozpoznal, k jaké buňce patří, neboť žádné oko buňky tyto dvě entity nevidí. Proto je propojte s nejbližší "visibility_eye" linkou, jak jsme si to již vysvětlovali u tvorby samotných buněk. Dejte ale pozor na směr linky, neboť zde na něm již záleží. Linka by měla směřovat od entity "ambient_sound" k "visibility_eye". To docílíte tak, že si nejprve označíte "ambient_sound" a teprve poté "visibility_eye". Po vytvoření linky klávesami "Alt + E" pak bude linka ve směru, v jakém pořadí byly entity označeny. Správná linka by měla být tmavě růžová. V opačném případě by byla žlutá, a taková linka slouží hlavně k aktivaci entit. O těch si ale budeme povídat až tehdy, kdy se budeme učit vytvářet různé mechanismy.

Jedna z posledních věcí, které je třeba učinit, je nepatrná úprava entit s globálním efektem - tedy s efektem, který má platit pro celý level. Jedná se především o entity "global_ambient_sound", "ambient_light", popřípadě i "sound_effector" a "music". Pokud je totiž mapa rozdělena na buňky, jak jsme si to vysvětlili v této kapitole, je třeba zajistit, aby tyto entity měly vliv na všechny buňky v mapě. Pokud bychom je ponechaly tak, jak jsme je do mapy vložili, pak by se jejich efekt uplatňoval pouze na tu buňku, v níž se nacházejí a jsou k ní přiřazeny. K tomu, aby se efekt přenesl na všechny ostatní buňky v mapě, stačí pouze v nastavení entit vyplnit "Name" (jméno - standardně "none") jako "world". S tímto jménem pak budou entity tohoto druhu rozpoznány jako globální a budou fungovat bez problémů v každé buňce. Viz. obrázek vpravo.

 

Na závěr této kapitoly ještě zmíním druhý typ portálu, který je v nabídce pod ikonou žlutého kvádru. Tento portál již s buňkami nemá nic společného, ale jeho funkce je podobná. Tento portál se zpravidla umisťuje do různých předmětů, u kterých chcete, aby to, co se nachází za ním a není v danou chvíli vidět, nebylo vykreslováno. Jak jsem řekl - buňka, ve které se právě nacházíte, se vykresluje celá se vším, co je do ní díky "visibility_eye" započítáno, a to bez ohledu na to, zda to zrovna vidíte či nikoliv. Takže v případě, že máte přes místnost tvořící jednu buňku postavenou dvoumetrovou zástěnu, se stejně bude vykreslovat to, co se za ní nachází a vy nevidíte. Pokud ovšem bude do této zástěny umístěn tento portál, pak vše, co se z vašeho pohledu za tímto portálem nachází, nebude vykreslováno. Je to tedy další způsob, jak částečně ulehčit práci počítači a tím i zajistit ve složitých scénách plynulý chod. Osobně ale tento portál využívám jen zřídkakdy, protože příležitostí pro jeho smysluplné umístění do mapy se naskytne jen málokdy. Ovšem pokud se pro jeho použití někdy rozhodnete, vždy dbejte na to, aby byl úplně celý schován v daném objektu, za kterým předměty nechcete vykreslovat.

 

 

<< Zpět na úvod <<    >> Další kapitola >>

 

 

Autorovy stránky: Vixey.cz, Kamenitý vrch, DoomMap.

Stránku vytvořil Duke, 2010.