Hrátky s Unreal Engine VIII: Můj dům, můj hrad | Kapitola 7
Seznam kapitol
Minulý značně teoretický díl našeho seriálu zakončil zběžné seznámení se základními funkcemi UDK editoru a jeho součástí. Dneska už začneme pracovat na konkrétním projektu a jako základ vystavíme našemu virtuálnímu hrdinovi útulný domov. Vylepšíme ho vlastními texturami a také pěkně osvětlíme. Příště ho pak vypustíme i dále.
Jak už bylo řečeno v úvodu, počínaje tímto dílem, najdete zde vždy kratší část věnovanou skriptování. Dnes to bude pořád ještě trochu zahřívací kolo – což ale neznamená další teoretizování, právě naopak.
Shrňme si rychle co o skriptování víme a trochu to rozšiřme:
Zásadní prvek jsou třídy objektů jako je například Light, InterpActor, StaticMesh atp. Třída je vlastně vzor, který říká, jaký takový objekt je, jaké jsou jeho vlastnosti a co se s ním dá dělat. Třídy jsou uloženy v různých podadresářích adresáře Development – každá třída je přitom soubor s koncovkou uc. Jméno toho souboru je stejné jako název této třídy. Proto, kdybyste si dali tu práci, našli byste tu InterpActor.uc, Light.uc, PointLightMovable.uc atp. Třídy existují v určitém stromu dědičnosti – PointLight rozšiřuje třídu Light, PointLightMovable rozšiřuje třídu PointLight. Když otevřete soubor se třídou hned v úvodu uvidíte, z čeho tato třída vychází.
Problém samozřejmě je, že při stovkách tříd (nenechte se vystrašit – i až budete dělat pokročilé věci, budete pracovat s jejich nepatrným zlomkem) je dost těžké si představit, jak vlastně ten celý strom vypadá. A v tu chvíli přichází na pomoc (jak už dle fóra někteří uživatelé vědí) mimo jiné i prográmek UnCodex, stáhnutelný zde. Ten je schopný načíst celou strukturu tříd v UDK a přehledně vám je zobrazit.
Využití tohoto programu není nezbytné, ale pro pokročilejší práci je neocenitelné.
Když budu mluvit o skriptování, budu tím myslet vytváření nových nebo editaci existujících tříd. To v praxi znamená vytvářet a editovat právě tyto uc soubory, jejichž návaznost UnCodeX zobrazuje. Protože se jedná o běžné textové soubory, stačí k jejich editaci standardní Notepad z Windows, ale věřte mi, že práce s ním vás neskutečně zpomalí. Pokud jste to ještě neudělali, stáhněte si libovolný pokročilejší textový editor nahrazující notepad. Sám používám k práci Notepad++. Netroufám si posuzovat jeho kvality vůči jemu podobným, ale mně zcela vyhovuje.
Tak a teď, abychom alespoň vlastního udělali, vytvoříme vlastní třídu. Bude to sice jen kopie třídy již existující, ale to nevadí – ukážeme si tak, jak funguje kompilace a kde se naše třída pak objeví.
Nalezněte soubor PointLightMovable.uc. Udělejte jeho kopii na stejném umístění a nazvěte ji PointLightMovableTest.uc. Tento soubor nyní otevřete. Název třídy je zadán vždy v souboru (předchází slovu extends, takže vy tam teď uvidíte původní PointLightMovable) a soubor se musí vždy jmenovat stejně jako třída. Pokud byste na to zapoměli, engine vám to neodbytně připomene. Takže v našem souboru zaměňte PointLightMovable extends… za PointLightMovableTest extends… a soubor uložte. Zdrojové soubory UDK jsou standardně read-only, takže vaše kopie zřejmě také – tuto ochranu musíte nejprve odstranit (buď přímo ve vašem textovém editoru, pokud to umožňuje, nebo z Exploreru, Total Commanderu nebo něčeho podobného).
Když teď zkusíte spustit editor, stane se následující: engine projde automaticky adresáře se třídami, objeví novou, vámi vytvořenou a upozorní vás, že zkompilované skripty jsou zastaralé a je nutné je znovu skript zkompilovat (zjednodušeně: převést z formy textu do svého interního formátu). Potvrďte, že chcete provést kompilaci. Objeví se textová konzole a proběhne kompilace. K tomu je třeba si říct pár drobností:
- rekompilaci je nutné udělat jen tehdy, když dojde ke změně ve skriptech a v tomto případě bude trvat déle, než naše pozdější snažení z důvodu, ke kterému se teprve dostaneme
- pokud kompilace skončí úspěchem – to poznáte ze závěrečné (v případě úspěchu zelené, jinak červené) hlášky Compilationi succeeded – konzoli zavřete a zkuste znovu spustit editor. Teď to již půjde.
- pokud se v konzoli objeví chyba, zkuste z ní odhadnout, v čem je problém – s největší pravděpodobností tam bude uveden soubor a číslo řádku, kde k chybě došlo.
- pokud se vám nepodaří chybu najít a odstranit (což by snad, vzhledem k tomu, že jsme zeditovali jediné slovo, nemělo nastat), inkriminovaný soubor prostě smažte a tím se vrátíte k původnímu stavu.
Protože jsme vytvořili duplikát třídy PointLightMovable, můžete ji používat úplně stejně, jako originál. V seznamu tříd ji také naleznete na příslušném místě.
Takže teď už zřejmě chápete, co konkrétně taková třída je, jak se edituje a kde jí můžeme hledat. To je dost pro to, abychom se příště podívali na zoubek herní kameře…