PDA

Zobrazit normální verzi : Teoretický základ na začátek



Grakon2702
25-05-17, 19:06
Tento článek popisuje základní teoretické informace ohledně her, jejich enginu a to konkrétně ke hře Counter-Strike a systému vytváření herních map. V článku se nedozvíte konkrétní informace, které mohou pomoct při vytváření map, nýbrž informace, které by mohly pomoct novým autorům k pochopení celého základu vytváření map a na čem je to všechno založené a postavené.



Co je to tzv. Engine?

Určitě jste někdy slyšeli, že je nějaká hra postavená na tzv. Enginu (česky motoru). Jedná se o počítačový program, jenž definuje způsob generování obrazu. Obraz se generuje v tzv. vektorové grafice.

Rastrová grafika využívá princip pixelů. Rastrové datové formáty popisují body, které mají nějakou barvu a souřadnice. Tento formát se nejlépe hodí k vizualizaci reálných objektů, využívá se tedy např. ve fotografiích nebo kinematografii. Nevýhodou tohoto formátu je to, že zabírá více místa na disku a že se při změně velikosti ztratí kvalita obrazu. Bohužel neexistuje způsob, jak rastrový formát využít v herním průmyslu, což znamená, že nikdy nebude možné vytvořit hru se stoprocentně reálnou vizualizací.

Díky vynálezu vektorové grafiky se můžeme k této vizualizaci pouze přiblížit. Vektorová grafika je totiž založená na principu příkazů/funkcí, které popisují nějaký objekt. Laicky řečeno, např. kružnici můžeme ve vektorové grafice popsat jednoduše jako "Kružnice o poloměru 5cm a červené barvy". V rastrové grafice bychom místo toho museli definovat každý pixel, který by kružnici vytvořil. Výhodou vektorové grafiky je tedy menší velikost souborů a možnost změny velikosti objektu bez ztráty kvality. Nevýhodou je těžká přenositelnost mezi různými softwarovými platformami, větší zátěž hardwaru při generování grafiky a potřeba masivnějšího softwaru pro vytváření nebo editaci souborů vektorové grafiky.

Různé enginy mají různý způsob generování obrazu, tj. i různý způsob využití hardwarových prostředků. Jeden engine může být náročný na procesorový čas, druhý engine může mít problémy s nakládáním s operační pamětí. Důvod vzniku enginů je ten, že se značně zjednodušil vývoj her. Vývoj samotného enginu je velice náročná a nákladná operace, ale jakmile je engine vytvořen, můžou na něm být mnohem snadněji vyvinuty stovky her. Kdyby enginy neexistovaly, byl by vývoj každé hry velice náročný a finančně nákladný, což by se odrazilo na cenové relaci her a času jejich vývoje. O aktualizačních balící opravujících různé chyby ani nemluvě.



Counter-Strike, Half-Life a jejich Engine

Legendární hra Quake běžela na svém enginu zvaném Quake engine. Základ tohoto enginu byl využit korporací Valve ve vývoji Goldsource enginu. GS Engine byl poprvé využit ve vývoji další legendární hry zvané Half-Life. Engine je dobře optimalizovaný a poměrně jednoduchý. Díky tomu mohlo Valve vytvářet další hry jako je HL: Opposing Force, HL: Blue Shift, Team Fortress, Day of Defeat, Portal a konečně náš milovaný Counter-Strike.

Právě díky využití stejného enginu ve všech výše zmiňovaných hrách nám dalo možnost využití stejných vizualizačních a programových prvků. To nám dalo možnost jednoduššího portu map a textur z jedné GS hry do druhé a možnost využití stejného nástroje pro vývoj map do všech GS her. V našem případě se jedná o nástroj zvaný Valve Hammer Editor (zkráceně VHE).



Z čeho se skládají mapy her založených na Goldsource enginu?

Mapy se skládají ze dvou prvků. Tzv. brushů a entit. Brushe jsou základními stavebními kameny celé mapy. Jsou to veškeré stěny, boxy, dveře, vodní objekty aj. Laicky to můžeme definovat jako veškeré "hmatatelné" objekty ve hře. Brushe můžou mít různý tvar a musí mít nějakou texturu. Textura je konkrétní vizuální obraz, který je "nakreslený" na každé stěně brushe. Textura tedy definuje obrazovou vizualizaci vody, dřeva, stěny a dokonce v případě GS enginu i oblohy. Je důležité rozenat rodíl mezi brushem a texturou, není to totiž to samé. V případě Counter-Striku se např. chybně používá výraz "bugování textury". Ve skutečnosti bychom měli říct "bugování brushů".

Druhým prvkem map jsou tzv. entity. Jsou to programově nastavitelné objekty, které definují např. zdroj světla nebo zvuku. Laicky můžeme říct, že se jedná o veškeré "nehmatatelné" objekty, tady je ale třeba dávat pozor. V případě entit to není tak černobílé, jak se to může na první pohled zdát. Entity se totiž rozdělují na dva druhy, a to na entity pointové (česky bodové entity) a entity brushové.

Pointová entita je entita, která definuje programovou událost ve hře založenou na jednom bodě na mapě. Pointová entita může taky definovat vlastnost konkrétní mapy a v jednom případě "mappingu" můžeme narazit na pointovou entitu, díky níž můžeme definovat skripty událostí např. časově řízených výbuchů různých objektů. Pointová entita může třeba fungovat jako neviditelný zdroj světla, který když umístíme k textuře světla, tak to ve hře vypadá, jako by svítilo to světlo. Můžeme přidat pointovou entitu sloužící jako zdroj zvuku k rádiu, což pak ve hře vypadá, jako by to rádio hrálo.

Brushová entita je něco jiného. Může se stát, že budeme chtít do mapy přidat vodu, žebřík nebo sklo. Toto jsou v podstatě obyčejné brushe, které mají kromě textury pár vlastností navíc. Ve VHE to funguje tak, že si nejdříve vytvoříme nějaký brush (např. vodu), dáme mu texturu vody a pak ten celý brush označíme a převedeme na brushovou entitu vody. V takovém případě se nyní můžeme do vody ponořit a plavat v ní. Díky tomu, že jsme brush převedli na entitu, můžeme definovat i různé vlastnosti, jako je vlnění vody nebo průhlednost vody.



Valve Hammer Editor a soubory hry

VHE je univerzální program vyvinutý společností Valve a slouží k vytváření map pro hry založené na Goldsource enginu. Tento nástroj byl původně dostupný vývojářům her od Valve, později byl zpřístupněn veřejnosti. Díky tomu mohly a můžou vznikat komunitní mapy a díky tomu mohly vycházet i komunitní módy jako Jump, Capture the Flag nebo Jailbreak. Jedná se o velice starý editor pro již velice starý engine. Jeho kouzlo spočívá v jeho jednoduchosti. Lidé se tak mohou učit vytvářet mapy pro GS hry jednoduše a efektivně.

Všechno, co vytvoříme ve VHE, se dá využít ve všech GS hrách. Všechny GS hry jsou založené na stejných datových formátech, což nám zjednodušuje práci právě se soubory těchto her. Např. soubory formátu WAD slouží jako kontejnery pro textury. Pokud naimportujeme soubory s texturami např. ze hry Half-Life do VHE a vytvoříme mapu pro hru Counter-Strike, nevznikne zde žádný problém s kompatibilitou. Určitě jste si někdy všimli, že některé mapy v csku využívají stejné textury, které nalezneme ve hře Half-Life nebo Portal. Je tu však jedna podmínka, kterou musíme splňovat. Pokud použijeme textury vytvořené komunitou, musíme je přesunout do složky Half-Life a nejlépe do složky příslušné herní modifikace. To souvisí s další věcí. Všimli jste si, že se někdy při stahování mapy v Counter-Striku stahují i jiné soubory? To je přesně to, o čem jsem psal předtím. Hra potřebuje konkrétní použité soubory právě ve své složce, jinak bychom nebyli schopni hru s konkrétní mapou spustit. Naštěstí máme možnost při kompilaci mapy připojit soubor s texturami dovnitř souboru mapy, což znamená, že nemusíme společně s mapou zveřejňovat i soubory s texturami.

Soubor konkrétní mapy nese formát BSP. Všechny mapy ve všech GS hrách nesou stejný datový formát. Dalším univerzálním formátem je např. formát MDL, který v sobě nese modely zbraní či postav. Pak tu máme formáty určené pouze pro VHE. Jedním z nich je například formát FGD, který v sobě nese entity určené pro konkrétní hry. Mimochodem postavy ve hře jsou také entity. Zatímco ve hře Half-Life máme postavy různých nestvůr, tak v Counter-Striku máme postavy Teroristů a Counter-Teroristů. Pokud tedy pracujeme na mapě určenou pro konkrétní hru, měli bychom pracovat pouze s FGD soubory pro tu hru určenými. Pak tu máme dva formáty, které definují rozpracované soubory VHE. Tyto lze otevřít a pracovat s nimi pouze ve VHE. Těmito formáty jsou MAP a RMF. Při stahování map při napojování na server se někdy stáhnou i soubory formátu MAP, které můžeme využít pro editaci ve VHE.



Zajímavosti na konec

1. Mapy musí být pří vývoji naprosto uzavřené prostory. Dokonce tu máme i texturu nebe, která se ve hře chová jako normální nebe a tedy máme pocit, že hrajeme v neuzavřeném prostoru. Pokud se při kompilaci najde nějaká díra, kterou by se hráč mohl dívat do prázdného prostoru (tzv. Leak), VHE nás při kompilaci upozorní chybovým hlášením a mapa se nezkompiluje.

2. Některé textury mají i speciální vlastnosti, aniž by byly převedeny na entity. Například některé textury světla už samotné světlo vydávají, nemusíme tedy ke každému světlu dávat pointovou entitu světla. To samé platí i pro výše zmiňovanou texturu nebe.

3. Mapy nesmí být ohraničeny žádnou brushovou entitou. V takovém případě se nám mapa nezkompiluje.