Optimalizace levelu (rychlejší a stabilnější level)

Pokud editujeme levely do UT musíme hlavně dbát na rychlost hry. Pokud do levelu vložíme spoustu dekorací a světel, hra se tím zbytečně zpomalí a na pomalejších PC může být i nehratelná. Proto je lepší myslet na optimalizaci ihned od prvotního návrhu levelu. Může se i stát, že celou dobu designování jde level výborně plynule, ale po rozmístění světel je nehratelný. Proto se musíme snažit dosáhnout co nejmenšího počtu polygonů a tím pádem maximální možné rychlosti a plynulosti hry (samozřejmně že ne na úkor vzhledu levelu). Oficiální počet polygonů/nodů byl pro UT stanoven na 160/350 a proto je dobré se okolo těhto čísel držet (zobrazit lze ve hře pomocí konzole a příkazu "stat fps").

Pro zkrášlení levelu lze využít předem vytvořené dekorace (actor->decoration). Pokud např potřebujete umístit do místnosti nějaký zdroj světla, systém bude méně zatěžovat jednoduchá zářivka z dekorací, než složité světlo vytvořené z několika válců kvádrů a podobně. Bohužel pro tyto dekorace nefunguje standartní kolize jako pro pevná tělesa která jsou do levelu přidána pomocí add, ale lze jim pouze nastavit kolizní radius, a kolizní výšku (nejsou na nich vidět díry po střelách).

Další možnost je využití takzvaných polopevných těles.

Pokud do levelu vložíme např. box někam ke stěně nebo na podlahu, klasicky tlačítkem add, automaticky se rozpadnou polygony v předmětu ke kterému něco vkládáme (obr. 1 na zdi se rozpadají polygony) u tak banálního případu jako je box na obrázku se výkon nikterak nesníží, ale pokud bude najednou viditelných dekorací vícero výkon klesne. V takovémhle případě je vhodné použít polpevné těleso které nikterak nenarušuje strukturu levelu (je na něm nezávislé obr. 2). Proto polopevné těleso nelze z levelu odebrat (substract) ale pouze přidat (specialbrush->add semisolid). O tom že polopevné těleso nikterak nenarušuje strukturu levelu se můžeme přesvědčit např. pokud ve hře napíšeme do konzole příkaz "ghost" (průchod zdí) a "vejdeme" do polopevného tělesa, zeď za ním je vidět, pokud vejdeme do pevného tělesa zeď za ním zmizela a je vidět pouze do prázdna.

Též se nedoporučuje používat složitější objekty jako je koule a pod. protože se skládají z hodně polygonů a zbytečně zatěžují level.

Trocha stability...

Je nehezké, pokud máme level kompletně dokončen a najednou při testování zjistíme, že nám z určitého úhlu pohledu sem tam zmizí kus zdi, nebo dokonce levelu. Proto se budeme takovýmto chybám snažit vyvarovat.

První taková chyba se snadno vyskytne při tvorbě různých mříží a pod.

Např. chceme-li zamřížovat nějakou díru v podlaze, vytvoříme si nepevnou (nonsolid) mříž a abychom skrz ní nepropadávali musíme vytvořit i nějaký kolizní blok (nejčastěji invisible collision hull) Tady musíme bedlivě dbát na to aby kolizní blok nikde nepřesahoval mimo level (skrz zdi), ani nesmí být umístěn skrz mříž, protože se stane že nám bude mříž při určitém úhlu pohledu mizet. Na obrázku je kolizní blok umístěn správně.

Další z nepříjemných chyb je posunutý bod.

Pokud upravujeme tvar nějakého tělesa, pomocí posouvání bodů, musíme dbát na to aby jsme zachovali všude roviny. Pokud se nám podaří vytvořit něco podobného, co je na obrázku v nejlepším případě z nějakého úhlu pohledu neuvidíme část boxu, v horším neuvidíme část celého levelu. Jelikož Unreal Engine s něčím takovým nepočítá, může se nám stát, že v jedné části levelu máme nepatrně posunutý nějaký bod a v druhé nám mizí objekty které s tou první nemají nic společného. Taková chyba potom není na první pohled viditelná a špatně se hledá. Už jenom to, že např. nějakou stranu boxu sešikmíme narušuje celistvost levelu. Pokud se jedná o level malý je malá pravděpodobnost, že by se mohl nějak hroutit, ale pokud tvoříme level rozsáhlejší mohou se později vyskytnout problémy.


Bob "Venca12 de Sade" Hazard