Hrátky s Unreal Engine VI: Kamera, akce, jedem…
Článek Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Aleš Ulm

Aleš Ulm

6. 8. 2010 03:00 11

Už se pomalu rozkoukáváte v programování a experimentujete se věemi funkcemi Unreal Engine? V dnešním pokračování seriálu si povíme ještě něco málo o Matinee a opět zabředneme do tajů skriptování v Kismetu. Tím tuhle kapitolu prozatím uzavřeme a na přístě máme pro vás připravené překvapení.

Reklama
Reklama

První díl série Hrátky s Unreal Engine - Část I: První krok do nereálna najdete zde.
Druhý díl Hrátky s Unreal Engine - Část II: Příběh dvou místností najdete zde.
Třetí díl Hrátky s Unreal Engine Část III: Konec modrobílých kachlíků najdete zde.
Čtvrtý díl Hrátky s Unreal Engine Část IV: Skriptujeme s Kismet najdete zde 
Pátý díl Hrátky s Unreal Engine Část V: Trocha pohybu neškodí najdete zde
Šestý díl Hrátky s Unreal Engine VI: Kamera, akce, jedem… najdete zde
Sedmý díl Hrátky s Unreal Engine VII: Klid před bouří najdete zde

Buďte zdrávi, kolegové vývojáři. Co máme dnes před sebou? Dokončíme část věnovanou Matinee a několika závěrečnými postřehy uzavřeme i naši exkurzi do světa Kismetu. Ne snad, že by tím byl jejich potenciál zcela vyčerpán (to opravdu ani náhodou), nebo že by to znamenalo, že se k nim už nevrátíme. Budeme s nimi i nadále pracovat a průběžně odhalovat další z jejich skrytých zákoutí. Nicméně pokud se zdárně prokoušete až ke konci dnešního dílu, můžete o sobě s jistotou prohlásit, že ovládáte jak základy práce s Matinee, tak základy skriptování v Kismetu. Kromě toho, že to je určitě důvod k oslavě – přece jen už jsme nějaký ten kus cesty ušli – to je také důvod k zastavení a rozhodnutí se, kudy se budeme dál ubírat. V tomhle ohledu nás čeká jedna poměrně zásadní změna, kterou… si řekneme opravdu až v samém závěru dnešního dílu. Takže vzhůru do práce, protože žádná hra se ještě (zatím) sama neudělala.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Začneme u Matinee, kde nám zůstávají dva poměrně zásadní resty. Předně je to stopa s eventy (Event Track). Předpokládejme, že máme hotový klip a v určitý moment v jeho průběhu chceme spustit nějakou akci v Kismetu. Třeba se vám něco pohybuje místností a vy se rozhodnete, že až se ten objekt dostane doprostřed své dráhy, tak se vypíše nějaký text na obrazovku. Problém je v tom, jak to celé správně načasovat. V podstatě by se to dalo udělat už s tím, co teď umíme. Kdyby projetí dráhy trvalo objektu 5 vteřin, tak bychom snadno mohli pustit oba děje ve stejný moment a před vypsání textu vložit čekání (Delay) v délce 2.5s. Tím by proběhlo, až bude objekt v půlce cesty. Na obrázku si můžete prohlédnout dvě z možných řešení.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Takové řešení je sice možné, ale značně nepraktické. Představte si, že připravujete složitou cutscénu, kde podobných akcí spouštíte desítky. Pokud byste je všechny nastavili tímhle způsobem a pak zjistili, že někam do cutscény bude zapotřebí něco vložit a všechny akce od určitého času o nějakou dobu posunout, tak by vám nezbylo než všechny ty delaye najít, přepočítat a zeditovat. Vy navíc prostě potřebujete okamžitou vizuální kontrolu nad tím, co se kdy děje. A k tomu slouží právě Event Track.


Otevřete Matinee s klipem, na který chcete navázat event. Přidejte Event Track vyvoláním kontextové nabídky nad existující skupinou. Označte nový track, přesuňte se na pozici 2.5s (pokud byste měli problém s ovládáním editoru, prolétněte minulý díl seriálu) a vytvořte klíč Enterem nebo zmáčknutím příslušného tlačítka. Pojmenujte event podle libosti. Já jsem ho nazval “VypisText” – pokud chcete používat mezery, tak vám nic nebrání, ale počítejte s tím, že vám je engine nahradí podtržítky.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Teď zavřete/stáhněte Matinee a otevřete Kismet. Dobře si prohlédněte objekt klipu, ve kterém jsme právě přidali event. Vidíte ho tam? Stal se z něj výstup. V momentě, kdy klip dojede k námi vytvořenému klíči, se tento výstup aktivuje a pokud je na něj napojena nějaká vazba, skript po ní pokračuje dále. Takže mu jí tam hned dáme – navážeme tam ono vypsání textu. Když teď hru spustíte, stane se sice to samé, co v případě, kdy bychom použili některou z ukázaných metod a ne event track, ale s pár zásadními rozdíly. Skript je teď podstatně čistší (což oceníte, až budete připravovat složitější záležitosti).

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Ale hlavně: pokud do event tracku přidáte na jiné časy různé eventy, můžete je v Matinee snadno přesouvat (při držení CTRL) a to i několik najednou. Snadno a přehledně tedy označíte třeba poslední dva z řady eventů a posunete je o vteřinu dál na časové ose. No není to úžasně jednoduché? Pro úplnost ještě upozorním, že vás nikdo nenutí dělat v jednom Event Tracku, ale můžete jich mít víc, což se hodí přinejmenším k tomu, že pak můžete celý track kompletně vypnout (zaškrtávátkem vlevo od něj). Taky si určitě všimněte dvou malých žlutých šipek v řádku Event Tracku. Jejich vypínáním určujete, jestli se eventy ve stopě pouští, když klip běží přímo nebo pozpátku (to samé lze určit ve vlastnostech stopy zobrazených dole v editoru).


Druhou věcí, kterou nemůžeme v Matinee přejít, je práce s kamerami. Bez nich bychom nějakou tu cutscénu asi udělali poměrně těžko, že? Ukážeme si proto základní postupy (těm pokročilejším se budeme věnovat už velmi brzy, takže amatérští režiséři nemají důvod k zoufalství). Nejprve ale upozorním na to, že pro náš příklad Vás nebudu směřovat k vytvoření nějaké příliš smysluplné cutscény. Chci vám ukázat čistě, jak to funguje, tak to tak prosím berte a přímo její užitečnost neřešte.

Práce s kamerami spočívá v animování jejich pozice, nablížení a přepínání mezi nimi. Takže si pro ukázku vytvoříme rovnou dvě, abychom mezi nimi mohli stříhat. Otevřete Content Browser, v horních záložkách vstupte do Actor Classes. Označte CameraActor, klikněte pravým tlačítkem do scény a vložte kameru pomocí volby Add CameraActor Here. Na vybraném místě se objeví model kamery, který můžete libovolně rotovat a přemísťovat.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Protože by ale bylo lehce nepraktické kameru pozicovat, aniž bychom přesně viděli, co zabírá, musíme se podívat na scénu “jejíma očima”. K tomu využijeme postup, který se nám může hodit i jinde. Zatímco máme objekt kamery vybraný, klikneme na ikonu oka v liště aktivního viewportu (Lock Selected Actors To Camera). To způsobí, že jakmile začneme hýbat “kamerou editoru”, tedy vlastně naším pohledem v okně, vybraný objekt(y) skočí do pozice a rotace našich očí a bude se pohybovat s námi. Když si nastavíme pohled tak, aby odpovídal našemu prvními záběru, kliknutím na tu samou ikonu tento mód vypneme. Když pak odjedeme pohledem zpět, uvidíme, že na původním místě je skutečně správně nastavený objekt kamery.Teď stejným způsobem vložte do scény druhou kameru a umístěte jí na jiné libovolné místo. Pro její vytvoření ale nemusíte nutně znovu do Content Browseru – klidně si vytvořte kopii té první pomocí klasického copy & paste přes schránku.

Teď pro každou z kamer vytvoříme speciální skupinu v Matinee. Buď můžete použít již existující klip (jako já) s nějakou animací nebo vytvořit nový. Klikněte pravým tlačítkem do prázdného prostoru u stop a tak jako jsme minule vytvářeli New Empty Group, teď vytvořte New Camera Group. V tento moment je důležité mít vybraný objekt kamery, protože tuto skupinu vytváříte pro ni. Stejně vytvořte track i pro druhou kameru. Nově vytvořené skupiny mají dvě stopy – Movement a FOVAngle. V prvním animujete pozici a rotaci kamery, ve druhém její zoom (či přesněji Field of View – FOV).

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Nejprve naanimujeme kameru 1. Označte její Movement Track a pak klikněte na zčernalou ikonu kamery vedle názvu její skupiny. Ikona zežloutne a vy teď sledujete scénu skrze vybranou kameru. Dojeďte ukazatelem času na konec vašeho klipu. Ve scéně napozicujte váš pohled tak, jak by měl vypadat finální záběr této kamery a vytvořte klíč (Enter). Když teď budete jezdit myší po časové ose nebo pustíte animaci pomocí tlačítka Play v horní liště, uvidíte, jak se pozice kamery animuje.


Nyní označte FOVAngle track druhé kamery a klikněte na ikonku kamery této skupiny, abychom se přepnuli do jejího pohledu. Přesuňte se v čase na začátek animace a vložte klíč (v tomto typu tracku se automaticky v čase 0 klíč nevytváří). Přesuňte se na konec animace a vložte opět klíč. Protože jsme s kamerou nic neudělali, má ve vložených klíčích stejné hodnoty a tedy v čase nic neprovádí. Proto si hodnotu na druhém klíči zeditujeme a tím si zároveň ukážeme další způsob, jak editovat klíče v Matinee. Klikněte na druhý klíč pravým tlačítkem a zvolte Set Value (pomocí Set Time byste ho mohli přesně přesunout na časové ose). Objeví se vám hodnota Field of View (FOV), kterou má kamera v tomto klíči (a tedy i tom prvním) – tedy jak moc je „nazoomovaná“.

Pokud jste 3D grafikou zcela nepostiženi, tak vám zobrazená hodnota 90 stupňů (jedná se o úhel) nejspíš nic neříká. V podstatě asi není důvod, proč by musela – postačí vám vědět že, čím menší tuto hodnotu nastavíte, tím „blíž“ kamera bude. Každopádně pokud to s prací s kamerou myslíte vážně, zkuste si o FOV něco málo načíst, opravdu se vám to bude hodit. Teď nastavte třeba 45 a zkuste animaci pustit. Vidíte, jak kamera zoomuje?

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

V tuhle chvíli tedy máme dvě naanimované kamery – jedna někam jede a druhá zoomuje (samozřejmě by každá z nich mohla dělat obě tyhle věci najednou). Kdybyste teď zkusili vstoupit do hry a spustit náš klip, nic by se nestalo. To proto, že jsme sice připravili hned dvě kamery, ale engine netuší, která z nich má být kdy aktivní. Proto musíme do Matinee vložit ještě jednu speciální skupinu - Director Group (Add New Director Group). Ve stopě této skupiny určíme, kdy se má pro zabírání scény použít která kamera. 

Ujistěte se, že jste na začátku animace a máte vybranou stopu Director. Zmáčkněte Enter, jako byste do ní chtěli vložit nový klíč. Objeví se okno s dotazem, na kterou skupinu se má v tuto chvíli střihnout (tedy která kamera se má aktivovat). Vyberte kameru 1. Třeba o dvě vteřiny později střihněte na Kameru 2 a o další dvě vteřiny zpět na Kameru 1. Teď už můžete hru spustit a pokochat se svým výtvorem. Netuším, nakolik váš výtvor dává nějaký smysl, ale rozhodující je, že to funguje!

Hrátky s Unreal Engine VI: Kamera, akce, jedem…


V Kismetu si ukážeme ještě pár zajímavostí, a abychom pracovali s konkrétními příklady, podíváme se třeba, co by se dalo udělat s některými akcemi v sekci Actor.

Začneme u akce s poetickým názvem a celkem zřejmým účelem – Destroy. Na ní si jen tak rychle ověříme, že jsme zatím nic nezapomněli. Vytvoříme event New Event → Level Startup, který se pouští při startu úrovně. Pak vložíme zmíněný Destroy (New Action → Actor → Destroy). A na závěr objekt, který budeme likvidovat. Vyberte libovolný objekt typu InterpActor (ne StaticMesh) ve scéně, klikněte do Kismetu pravým tlačítkem a vytvořte reprezentanta našeho objektu pomocí New Object Var Using NázevNašehoObjektu. Teď všechny nody pospojujte tak, aby to dávalo smysl (pokud máte pochybnosti, podívejte se na obrázek).

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

U startovního eventu by asi bylo ještě dobré nastavit nějaké to zdržení, abychom měli dost času zmizení objektu pozorovat. Povedlo se vám to? Pokud si ještě vybavujete poslední lekci, tak by to neměl být problém. Teď hru pusťte. Tak co, zmizel, že? Dokonce pokud používáte úroveň, kterou jste si vytvořili v minulém díle a jako objekt jste vložili rozanimovanou desku, tak zmizí v průběhu své animace. Hezké a čisté. Je však třeba vědět, že ne každý objekt v úrovni je takto zničitelný. To, jestli je objekt možné zničit (případně v runtimu vytvořit), je uloženo v jeho definici a podrobně se k tomu ještě dostaneme.

Takže to bylo něco pro zahřátí, pojďme dál. Další pěknou akcí, která by se vám mohla hodit je Attach To Actor. Její pomocí „upevníte“ jeden objekt (označovaný jako Attachment) ke druhému (Target). Pokud pak target změní pozici, bude se připevněný objekt pohybovat s ním. Snadno tak například upevníte něco k naší pohybující se desce. Výsledný skript si můžete prohlédnout na obrázku.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Pokud byste připravili oba výše zmíněné skripty, může vám začít být v okně Kismetu trochu těsno. Jistě, můžete libovolně odjíždět a nabližovat se kamerou. Jenže pokud byste měli takovýhle skriptů více, rychlé orientaci to stejně nepomůže. Proto si z těchto dvou skriptů (pokud bychom měli mluvit přesně, tak to nejsou dva skripty, ale asi víte, o čem mluvím) uděláme dvě sekvence. Označte si všechny prvky prvního skriptu tažením zmáčknuté myši současně s tlačítky CTRL a ALT. Pak vyvolejte kontextovou nabídku pravým tlačítek a vyberte Create New Sequence. Zadejte libovolný název. Celý vámi označený skript se teď sesunul do jediné položky. Můžete si to představit tak, jako kdybyste pro skript vytvořili adresář a nakopírovali ho tam.

Sekvence mohou být (stejně jako adresáře) různě vnořené do sebe a jedním ze způsobů, jak jimi procházet, je použití okna s jejich soupisem nacházejícím se vpravo dole. Objekt sekvence má své vlastnosti – mimo jiné mu můžete přiřadit také komentář, který se pak nad ní zobrazí a vám ještě více usnadní orientaci. Stejně jako u běžných objektů je také důležitý přepínač Enabled. S jeho pomocí můžete kompletně vypnout provádění celé sekvence. To samé můžete udělat s druhým skriptem a pak obě sekvence srovnat vedle sebe.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

A rovnou si ukážeme ještě jednu vychytávku. Označte obě sekvence (nebo libovolný počet objektů z jakékoliv skriptu, v podstatě cokoliv) a zmáčkněte klávesu C. Vložte nějaký komentář a potvrďte. To co teď vzniklo je vámi specifikovaná oblast se zadaným komentářem. Je to v podstatě okno, které můžete pomocí myši libovolně zvětšovat i přesouvat. V jeho vlastnostech je možné upravovat okraj, nechat ho vyplnit barvou či texturou. Díky tomu si můžete vytvořit ve skriptu vizuálně snadno identifikovatelná místa. Dají se tak třeba seskupit sekvence, které souvisí s nějakým místem hry, nebo jen zvýraznit některé části vašeho skriptu.


Další akcí, na kterou se podíváme, je Get Distance. Není asi překvapením, že s její pomocí zjišťujeme vzdálenost mezi dvěma objekty. Podívejte se, prosím, na příslušný obrázek.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Tohle vypadá už trochu složitěji, že? Takže co se tam vlastně děje? Zjišťuji vzdálenost mezi dvěma objekty, a když je menší než vzdálenost, kterou jsem předem určil, jeden z objektů nechám zmizet. Popíšeme si to pěkně postupně. Při startu úrovně se spustí event Level Startup (pro naše potřeby by šlo použít i Level Loaded). V tu chvíli se spustí akce Get Distance, ze které získám vzdálenost mezi dvěma objekty. Objekty jsem do skriptu vložil způsobem, který jsem popsal o něco výše (i v minulém díle). Napojil jsem je do odpovídajících vstupů na akci. Tady upozorním na jednu užitečnou drobnost. Pokud jste si toho ještě nevšimli, vstupy a výstupy (kromě toho, že jsou tvarově odlišné – čtvereček vs. trojúhelník) mají různé barvy, které odpovídají barvám objektů, které do nich lze připojit. Pokud barva neodpovídá, něco děláte špatně. Příkladem může být, pokud si vytvoříte proměnou typu Int (celé číslo) a pokoušíte se ji připojit do vstupu či výstupu který očekává proměnou typu Float (desetinné číslo) – barvy se liší (a pokud vstup/výstup typu Int nikde nevidíte, zkuste si ho přidat pomocí volby Expose Variable v kontextové nabídce akce tak, jak jsme to udělali minule).

Dál jsem si vytvořil novou prázdnou proměnnou typu Float (buď New Variable → Float → Float nebo rychleji kliknutím pravým tlačítkem na výstup, který podle svého typu rovnou nabídne vytvoření proměnné) a připojil ji k výstupu Distance. Právě do ní mi akce pošle naměřenou vzdálenost. Po získání vzdálenosti skript pokračuje dál do speciální akce Compare Float. Tu jsem vytvořil z New Action → Math, kde můžete nalézt různé akce pro práci s číselnými proměnnými. V tomhle případě budu porovnávat dvě desetinná čísla. Jedním z nich je naměřená vzdálenost a druhé je mnou zadaná vzdálenost, pod kterou nechám jeden z objektů zničit. Toto druhé číslo jsem také vytvořil jako proměnnou typu Float, avšak s tím rozdílem, že jsem ji v jejích vlastnostech rovnou zadal hodnotu 200 (ale stejně dobře bych ji mohl „naplnit“ třeba z jiného místa skriptu atp.)

Do akce Compare Float jsem napojil jak proměnnou, ve které je v tuto chvíli vzdálenost, tak proměnou se mnou zadaným číslem. Vidíte všechny ty výstupy? Program bude pokračovat dál těmi z nich, které jsou splněny. Nás zajímá A < B. Pokud to bude platit a naměřená vzdálenost (vstup A) bude menší než mnou zadaná vzdálenost 200 (vstup B), program vyjede tímto výstupem a bude pokračovat do akce, která zničí druhý objekt. V jiných případech program „vjede“ do slepých výstupů a nic se nestane.

Pěkné, ne? Přišlo vám to pochopitelné? Jakže? Slyším snad zívání? Kdo to zavolal „levou zadní“? Nuže tedy dobrá. Podívejte se na další obrázek!

 Co byste řekli, že to je? Co to způsobí? Schválně…
Co byste řekli, že to je? Co to způsobí? Schválně…

Pokud jste poznali, skvělé. Pokud ne, pak vězte, že tahle „věc“ posune zadaný objekt náhodně o 100 až 500 jednotek vzhůru. V podstatě by to šlo udělat i jednodušeji, ale na tomhle si vysvětlíme posledních pár drobností. Akce Get Location And Rotation má asi pochopitelný význam. Naplní zadané proměnné pozicí a rotací objektu, který je napojen do vstupu Target. Tady by možná mohli někteří méně znalí z vás trochu zatápat. Pokud jste dosud žili v domnění, že proměnná je jedno číslo, tak se váš svět zřejmě otřese v základech. Ty dvě proměnné jsou typu Vector (vektor) a každá se skládá ze tří hodnot. Může tedy nést informaci mimo jiné o pozici nebo rotaci objektu, protože tyto vlastnosti jsou popsány právě třemi hodnotami (rotace se dá zadat i jiným, poněkud komplikovanějším způsobem, ale o tom až někdy později).


Takže jsme do vektoru získali pozici a rotaci. Rotaci nakonec nijak nevyužijeme, tak ji tam necháme (ani jsme ji nemuseli vytvářet a napojovat, ale třeba se ještě bude hodit), zato s pozicí si pohrajeme. Potřebujeme upravit třetí hodnotu vektoru, která udává pozici v ose z (tedy jak vysoko je objekt ve scéně). Proto si nejdřív vektor rozložíme na jednotlivé složky pomocí Get Vector Components a ty uložíme do prázdných nově vytvořených proměnných typu Float. Dál použijeme akci Add Float, která sečte dvě proměnné typu Float dohromady. Hodnotu, kterou budeme přičítat k aktuálně získané hodnotě pozice na ose z uděláme jako proměnnou typu Float s náhodně určenou hodnotou (New Variable → Float → Random Float) v rozsahu 100–500, což nastavíme v jejích vlastnostech. Výsledkem pak přepíšeme původní hodnotu v proměnné (používáme výstup Float Result. Výstup Int Result by nám výsledek rovnou převedl na celé číslo). Pak pomocí akce Set Vector Components zase složíme jednotlivé rozložené hodnoty do původního vektoru. S jeho pomocí pak změníme pozici objektu v akci Set Actor Location. Spusťte hru, vyzkoušejte.

A teď se podívejme ještě jednou na ten obrázek. Co vidíte? Skript, který začíná být dost nepřehledný. Už jen napozicovat jednotlivé prvky tak, aby bylo křížení vazeb minimální, je celkem oříšek. A co kdyby se toho v tom skriptu dělo víc? Dalo by se v té pavučině ještě vůbec orientovat? Takže co ten další obrázek. Vidíte ten rozdíl? Tak trochu doufám, že ano…

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Tohle zjednodušení je důvod, proč jsem nejprve udělal ten zbytečně komplikovaný skript. Jak to funguje? Otevřete si vlastnosti nějaké proměnné. Někde dole naleznete Var Name. Máte totiž možnost proměnnou pojmenovat (to jsou ty červené texty) a pak udělat v podstatě jejího „zástupce“ nebo přesněji „odkaz“ na ni. Poté co jste zadali název, vytvořte novou pojmenovanou proměnou New Variable → Named Variable.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Uvidíte červeně přeškrtnutou ikonu s otazníky. Otazníky jsou tam proto, že jste ještě nezadali název proměnné, na kterou se má odkazovat. Vložte tedy stejný název, jaký jste při pojmenování použili do pole Find Var Name ve vlastnostech této proměnné. Pokud se přeškrtnutí změní v zelené zaškrtnutí, znamená to, že byla nalezena proměnná s tímto jménem a naše nově vytvořená už má její hodnotu. Pokud by přeškrtnutí nezmizelo, zřejmě jste se v názvu proměnné zmýlili.


Už jsme se společnými silami prokousali poměrně hluboko do útrob UDK. Jistě, je toho ještě vážně hodně, co nás čeká, ale jsme na dobré cestě. Jestli jste až doteď všechno pochopili bez větších problémů, pak nemám sebemenší pochybnost, že zbytek vás už nerozhází. Stojíme ale před poměrně zásadním problémem. Už musíme začít pronikat do skutečného skriptování. To ale bohužel není věc, která by se dala „sfouknout“ jedním dvěma díly a jestli ji pořádně rozjedeme, není možné (či spíše žádoucí) v ní dělat pauzy pro jiná témata. Je mi jasné, že tahle část nemusí být pro každého přiliš zábavná… Na druhé straně je kromě skriptování i dost jiných věcí, které si zaslouží pozornost, jako práce s terénem, pokročilejší postupy při práci s cutscénami, alespoň základy částicových systémů atd. atd. Takže jsem se rozhodl to vyřešit šalamounsky (alespoň si to budu myslet do doby, než si přečtu první reakce ve fóru). Od příštího dílu bychom mohli začít… dělat uživatelskou RPG hru.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Pokud Vám teď zcela uniká logika tohoto kroku, dejte mi chvilku na vysvětlení. Výhoda toho je, že nám pod rukama začne růst něco konkrétního na rozdíl od polotovarů příkladových scén. V každém díle budeme řešit několik různých věcí, které nás přinutí zopakovat si vždy něco z toho, co už jsme probrali a zároveň se naučíme něco nového. Můžeme si dát třeba za úkol udělat louč, kterou aktivujeme vstupem do pokoje nebo kouzlem. Práci s triggery a pouštění akcí v Kismetu už máme v malíčku, takže tam pojedeme ve známých kolejích (a vysvětlováním těhle věcí nebudeme ztrácet čas ani místo) a k tomu si ukážeme, jak udělat jednoduchý oheň pomocí emitoru partiklů a jak ho ovládat ze skriptu. K tomu můžeme přidat ještě dynamické rozsvěcení a zhasínání světla. Až bude louče hotová, nezůstane někde v testovacím levelu, ale pěkně na stěně v příbytku Vašeho hrdiny, který si každý připraví, jak nejlíp bude umět a postupně, jak se bude učit nové věci, ho bude vylepšovat. V každém díle taky věnujeme kousek místa skriptování a raději než větší množství teorie si ukážeme menší množství praxe.

Ti, kteří RPG nemají v lásce, nebo je zajímá jiný druh hry, nemusí zoufat. RPG jsem vybral proto, že v sobě nese i aspekty jiných žánrů. Kdo bude chtít vyvíjet realtime strategii, ten si ze hry odnese pohyb hráče (tedy vlastně jednotky) na místo kliknutí. Pro toho, kdo bych chtěl plošinovku, uděláme mezi módy kamery i takový, kde bude kamera snímat naši postavu z boku a v tomhle módu její pohyb zamkneme do dvou os.

Hrátky s Unreal Engine VI: Kamera, akce, jedem…

Důležité je, že si každý bude vytvářet podle sebe svou vlastní hru. Ukážeme si, jak udělat louče, ale nebudeme řešit, kam si je ve Vámi vytvořeném domě dáte, kolik jich tam bude, jestli si jejich funkčnost změníte nebo rozvinete (a nebo jestli je vůbec nepoužijete a tuhle konkrétní pasáž přeskočíte). Řekneme si, jak propojit váš dům s venkovním terénem, ale jaké modely tam použijete, jestli bude váš dům uprostřed pouště, na kraji lesa nebo jen mezi neotexturovanými kostkami bude čistě na Vás. Ukážeme si, jak přidat a nasetupovat nepřátele – ale jaké modely použijete, kolik jich bude (nebo jestli je tam vůbec budete nějaké mít) bude opět Vaše volba. Proto bych také jeden z prvních dalších dílů věnoval čistě tomu, jak do hry dostat vlastní data. A komu se tohle líbit nebude, nemusí jít „s námi“, ale může si „vyzobávat“ kusy toho, co ho bude zajímat a používat ve svém projektu.

Reklama
Reklama
Reklama
Reklama

Byl detekován AdBlock

PCTuning je komunitní web, jehož hlavním příjmem je reklama. Zvažte prosím vypnutí AdBlocku, ať můžeme všem čtenářům i nadále přinášet kvalitní herní zpravodajství, články a videa.

Děkujeme!

Váš tým PCTuning