Ve hrách, které běží na Doom engine aka Id Tech 1, si můžete všimnout zajímavého pravidla - není možné hýbat se sektory. Můžete hýbat s podlahou (např. výtah) nebo se stropem (např. dveře), ale není možné třeba pohnout sloupem.
Avšak u Hexena už to tolik neplatí. Hned, jak začnete hrát první level, se objevíte před kaplí, do které můžete vstoupit. Když otevřete dveře od kaple, dveře nestoupají nahoru jako v Doomovi, ale obě křídla vrat se otevřou do stran. Navíc v kapli najdete takových objektů více. Hned za rohem je kamenná deska, která se otočí o 180° a začne na vás plivat firebally. V podzemí jsou pak drtiče, které vyjíždí ze zdí a mohou vás rozmáčknout.
Jak to, že Hexen najednou umí něco, co dlouho nebylo možné?
Tyhle pohybující se sloupy, dveře, stěny a jiné objekty jsou tzv. polyobjekty. A o těch bych vám chtěl dnes něco málo povědět. Jak tyhle polyobjekty fungují?
Popravdě nikdo doopravdy neví, jak polyobjekty fungují a mnoho lidí to do dnes považuje za černou magii. Každopádně když si načtete nějaký hexenovský level v editoru a podíváte na libovolný polyobjekt, zjistíte, že na daném místě vlastně není. Například dveře do kapličky na začátku prvního levelu nikde nejsou a vchod do kapličky je zcela bez dveří. Jak to?
Inu, ve skutečnosti se polyobjekty vytváří někde bokem mimo mapu v oddělené sekci, která se nazývá dummy sector. Stačí vymodelovat dveře nebo nějaký jiný objekt, otexturovat ho a je to. Teď ho musíte ale na dané místo přivolat.
Na daný objekt položíte speciální předmět, který je vidět pouze v editoru, ale ve hře přímo ne. Jmenuje se Polyobject Start Point. A pak na místo, kde onen objekt chcete vyvolat, položíte předmět jménem Polyobject Anchor. To ale není celé. Musíte ještě vybrat libovolnou stranu polyobjektu a nastavit jí funkci Polyobject Start Line. To furt ještě není všechno. Ještě je nutné propojit Start Point a Anchor. To se dělá za pomoci nějakých identifikačních čísel. Normálně se všechna ID různých objektů nastavují přes tagy, ale u polyobjektů se na to používá funkce direction, která za normálních okolností definuje u postav, kterým směrem budou koukat. Proč to tak je? Asi si to tvůrci přehnali s LSD, nevím. Každopádně by se polyobject měl v mapě konečně objevit.
Jenže nebude nic dělat. Jeho pohyb je pak nutné naprogramovat přes ACS (Action Code Script). Tj. jestli bude rotovat nebo se posunovat doleva, doprava a tak dále. Do jisté míry jdou některé akce pouze naklikat i bez programování, ale budete hodně omezeni.
Lze také nastavit tzv. mirror identifikační číslo, kdy dva polyobjekty budou dělat to samé zrcadlově, což se hodí třeba hned u zmíněných dveří do kapličky, kde je definována jen jedna strana dveří a druhá tu stejnou funkci zrcadlí. Toť vše.
Ještě pár zajímavostí. Za prvé, jednotlivé polyobjekty se musí skládat z "nicoty". Já totiž to, co je "mimo mapu", nazývám nicotou. A nicota může být i "uvnitř" v mapě. Dejme tomu, že vyrobíte sloup a dejme tomu, že ho vyrobíte tak, že nastavíte stejnou výšku podlahy a stropu. Nicméně sektor uvnitř ve sloupu stále existuje, jen není "vidět". Existuje ale i možnost vytvořit sloup, který je opravdu "nic". Stačí sloup vybrat, odškrtnout "double-sided", vypnout mu "druhou stranu" a pak uvnitř sloupu je "nic"... Když si pak ve hře aktivujete noclip cheat na procházení stěnami a vlezete do sloupu, octnete se "v nicotě". A polyobjekty musí být vždy "nicotou", jinak nebudou fungovat. S tím je spojen i fakt, že polyobjekty mají nekonečnou výšku. Není to tak, že třeba polyobjekt může být 1 metr vysoký. Ne ne... prostě je nekonečně vysoký. Právě proto, že je "nicotou".
Jednotlivé tvary polyobjektů jsou těžce omezené. Pokud vytvoříte jen nějaké dveře, tak fajn. Osobně jsem zkoušel třeba vytvořit rotující půlkruh a to celou mapu naprosto rozbilo. Tohle Hexen nedává - maximálně tak v GZDoom portu.
Celá tahle technologie působí hodně na sílu. Je poznat, že do hry byla implementovaná tak nějak všelijak, aby prostě nějak fungovala. Mnohdy je i zabugovaná a třeba přímo v Hexenovi v levelu Griffin Chapel je snadné bugnout hýbající se stěny tak, že se zaseknou, nebo vyletí "mimo mapu" apod.
Na druhou stranu to byl zajímavý způsob, jak trochu oživit umírající engine, který už brzy začaly nahrazovat pokročilejší nástupci. Zajímavé také je, že později si polyobjekty vypůjčil Doom. Modernější formáty jako ZDoom či UDMF umožňují v Doomovi tvořit vše, co uměl Hexen a dalších pár věcí navíc. Každopádně se v poslední době využívají spíše 3D modely exportované přímo do map, protože je s nimi trochu jednodušší práce. Takže tak.
Popravdě jak pro mne dnes je Doom především GZDoom ,tak jsem si těhle „vymožeností“ Hexena nikdy nevšimnul …Dobré ponaučení
No já o tom věděl, že je to hack jsem tušil, ale že je to až takováhle divočina, to je pro mě tedy novinka! :)
Hexena jsem moc nehrál, ale pamatuju si, že tito „přibastlené“ featury na mě udělaly dojem hned v prvním levelu.
Já jsem si vlastně pak až zpětně uvědomil, že Doom neumí normální dveře, při hraní mi to vůbec nedošlo, jelikož je to sci-fi zasazení, byl ten vertikální pohyb naprosto akceptovatelný :)
Tak na tohle si vzpomínám, v UDMF jsme takhle kdysi dělali objekty, šikmé plochy a sky boxy. Taky si pamatuju jaká to byla otrava když něco nechtělo fungovat, frustrovaně jsem to pak jsem to vytvořil stejně znova hned vedle a už to šlapalo. Jsem rád že už jsou tyhle dny pryč, zjistil jsem že s přibývajícím věkem mám daleko nižší toleranci k tomu když nefunguje něco co fungovat má :D
a co delat treba neco uzitecneho?
Tohle je hodně užitečné a poučné. Pollux patří za takovéto články velké uznání a slova díků.
Je zajímavé jak se s tím programátoři v té době popasovali a s jakými omezeními se museli potýkat a přesto vytvořili něco tak úžasného.
Hele ty vykopávko, když k tomu nemáš co říct, tak sem neser nesmyslný rady, který nikoho nezajímají a sám jdi dělat něco užitečnýho. Jestli si chceš zaspamovat, zkus to u mně :-D
Tyhle články jsou dobrý. Já jich sice většinu, protože to třeba není o hře, která by mně osobně zaujala, ale spousta lidí tady kolem se na tyhle články těší a rádi si počtou.
Cywe, dospeli chlapi a hrajou si jak maly smradi. Kdybyste radsi vynalezli perpetuum mobile nebo napsali nejakou operu…
A cos udělal mezitím ty, frajere? :-D
Jo, že je Doom vlastně 2D, jsem si poprvé všimnul taky v souvislosti s nějakým editorem. Iluze 3D byla dokonalá.
Takže, šly by dát normálně se otevírající dveře i do levelu v Doom?
Myšleno v originálním Doomu, ev. v základních extenzích jako MBF nebo EDGE.
Jen pokud ta mapa bude ve formátech Zdoom nebo UDMF..
A ty půjdou rozchodit jen v Gzdoomu…
Boom ani MBF ani Edge tohle nedávají.
Mám moc rád tenhle druh článků, díky.
Doom 1-2 som hral iba zlomkovite, nudne, takze Hexen ani tolko, silene nudne, takze som si ani nevsimol, ze tam su tieto gheto vychytavky.