Herní engine (někdy také herní motor) je softwarovýframework, který soustřeďuje obecné funkce používané v počítačových hrách, díky čemuž dovoluje zrychlit a zlevnit vývoj nových her.[1] Rozsah funkcí se u různých enginů liší a lze tak nalézt jak jednoduché knihovny omezující se na vykreslování, tak rozsáhlé enginy i s vlastní sadou vývojových nástrojů. Některé herní firmy si vyvíjejí enginy vlastní, jiné si je licencují. Většinou lze snadno zjistit, jaké procesy ve hře jsou podporovány herním enginem, a co je vytvořeno speciálně pro konkrétní hru. Vyskytují se případy, kdy je hra s herním enginem propojena. Jako příklad je možno uvést hry MMOG (zkratka pro Massively multiplayer online game), online hry pro mnoho hráčů hrajících současně ve virtuálním světě,[2] nebo herní engine, který je vytvořen na míru konkrétní hře.[3]
V počátcích herního průmyslu byly hry programovány pro konkrétní počítač s ohledem na možnosti hardwaru.[4]
Scumm engine (1987–1998)
Herní vývojářská společnost LucasArts vytvořila a používala mezi lety 1987 až 1998 vlastní engine SCUMM (Script Creation Utility for Maniac Mansion). První grafická adventura od LucasArts, která byla postavena na tomto enginu byla Maniac Mansion (1987). Za 11 let společnost postavila na tomto enginu asi třináct her, které se zařadily do historie herního průmyslu.
V průběhu času se měnilo ovládací schéma her (například ovládání pomocí menu nahradil interaktivní kurzor). Engine se také rozšířil o nástroje pro prodporu dabingu a filmových sekvencí. Portování na jiné platformy nebylo složité a proto se hry se SCUMM enginem mohly objevit na téměř všech dobových platformách (nejznámější hry: Maniac Mansion, Monkey Island, Indiana Jones, Full Throttle).[5]
Doom engine (1993–1996)
Vytvoření herního enginu společností id Software v roce 1993, kdy byly programovány hry s 2D grafikou, přineslo zásadní technologickou změnu. Společnost používala funkční engine pro plynulou pseudo 3D grafiku ve hře Catacomb nebo Wolfenstein 3D a ještě komplexnější pro kultovní hru Doom. Pro vykreslování grafiky byl použit algoritmus ray casting, který transformuje 2D herní svět do 3D zobrazení. Každé políčko na mapě nese informaci o konkrétním objektu a podle typu objektu je aplikovaná jiná textura. Vykreslovaná grafika pak vytváří dojem skutečné 3D grafiky. Do doby, než se na trhu objevil hardware, který dokázal pracovat se skutečnou 3D grafikou, vzniklo mnoho dalších her inspirovaných vykreslovacím algoritmem společností Id Software.[3]
VoxelSpace (1994–2000)
Popularní Doom přinesl mnoho napodobovatelů, jejichž enginy vycházely ze stejné myšlenky (např. Dark Forces s Jedi Engine). Ale engine, který přinesl další zásadní změnu, vytvořila firma NovaLogic. Grafika se generovala místo klasických 2D pixelů z 3D voxelů. NovaLogic vytvářela vojenské simulátory, kde byly třeba používat velké a otevřené mapy. Proto přestaly vyhovovat běžné enginy. V roce 1994 se objevil vrtulníkový simulátor Comanche, jehož engine se vedle „hezké grafiky“, vyznačoval i neomezenou herní plochou (za okraji mapy se krajina opakovala).
V roce 1993 programátor Ken Silverman pracoval na vlastní hře Ken's Labyrinth. Ta ve své době patřila mezi nevýznamné klony hry Wolfenstein 3D. Silverman však vytvořil nový prvek – interaktivní sprity a textury, který ve hrách té doby chyběl. Postava v jeho hře např. prostřílela zeď nebo hrála na automatech, což umožňovala jednoduchá animace, kdy postava zmizela. Za tři roky představil nový Build Engine pro střílečkuDuke Nukem 3D.[6] Velkou změnou byla možnost dynamické změny herního prostředí v reálném čase. Byl to zase další trik, nikoli skutečně „počítaná fyzika“. Ale s ohledem na uvěřitelnost prostředí (bylo možné probořit se přes zeď, potápět se pod vodu apod.) se jednalo o velký posun. Silverman svůj engine aktualizoval delší dobu, až po podporu vyšších rozlišení a později také podporoval OpenGL.[5]
Quake engine (1996–2000)
Quake bylo první skutečné 3D herní prostředí. Všechny objekty ve hře se počítaly z polygonů, ve hře lze nalézt dynamické osvětlování a další zabudované nástroje umožňující modifikovat hru atd. John Carmack vytvořil řadu změn, které snižovaly také hardwarovou náročnost. Prováděly se výpočty pouze oblasti, která se zobrazovala hráči, například Half-Life. Mezi další enginy z přelomu tisíciletí lze jmenovat například Source engine atd.
Unreal nebo Unity (21. století)
Unreal Engine i Unity patří v druhém desetiletí 21. století mezi vysoce kvalitní a lze je použít pro vývoj většiny her. Unreal Engine byl již v roce 1996 licencovaný herními studii. Historicky se používal a byl designován pro počítače. S ohledem na vývoj her, které byly zpočátku výsadou studií s vysokými rozpočty až po zpřístupnění širokému poli vývojářů v roce 2015 došlo také k velké změně licencování. Důvodem byl mimo jiné i Unity, vytvořené roku 2005 původně pro Mac OS X a následně zpřístupněné široké veřejnosti vývojářů. Během pěti let se Unity stalo herním enginem pro vývoj her na většinu platforem za příznivou cenu i pro jednotlivce.
Během let při vývoji obou enginů došlo ke sjednocení zásadních vlastností a kvality. Vedle tvorby her jsou používány v široké oblasti od vývoje aplikací, přes architektonické a jiné vizualizace, virtuální realitu či simulace.[7]
Architektura
O architektuře herního enginu existuje minimum literatury. Tvůrci enginů detaily většinou tají. Obecně se skládá z běhového prostředí (runtime) a nástrojů na tvorbu dat nebo na jejich konverzi z jiných formátů. Data představují textury, 3D modely, animace, zvuky, skripty apod.[8]
Běhové prostředí
Engine je postavený na vrstvách, vyšší vrstvy využívají nižší vrstvy.
Vrstva platformní nezávislosti se používá jako společné rozhraní pro vyšší vrstvy, respektive jeho implementace pro různé platformy, tato vrsta byla vytvořena, protože herní enginy fungují na více platformách.
Správce zdrojů zpřístupňuje data ostatním subsystémům.
Renderer je část enginu sloužící k vykreslování (nebo renderování) obrazu z výchozích datových struktur (3d modely, textury, osvětlení). Patří mezi nejkomplexnějších subsystém a výrazně se odlišuje v různých enginech. Jeho design se také zásadně mění s vývojem grafického hardwaru. Skládá se opět z vrstev. Nízko-úrovňový renderer řeší vykreslení geometrických tvarů co nejrychleji, bez ohledu na viditelnou scénu. Jeho hlavní činností je správa a inicializace grafického zařízení. O viditelnost vykreslených objektů a jejich umístění na scéně se stará správce scény. Další vrstva speciální efekty, jak plyne z názvu řeší efekty (například: simulaci kouře, ohně, systém kreslení otiskování stop, korekci barev nebo ostrost objektů. Většina enginů má zabudovány funkce pro vykreslování 2D grafiky, např. k zobrazování informací bez zakrytí aktuální scény, pro vytvoření menu ve hře i grafické uživatelské rozhraní pro manipulaci s inventářem postavy. Obsahuje-li engine systém přehrávání videa, pak je zahrnut také do této vrstvy.[8]
K profilování a optimalizaci her se používají často nástroje třetích stran (například VTune, PurifyPlus, PIX). Ale většina enginů používá i vlastní nástroje, které umožňují přesné měření části kódu, nebo určení nároků na paměť konkrétního subsystému. Optimalizují se odezvy hry v reálném čase nebo využitelné množství paměti. K detekci kolizí a fyzice (dynamika pevných těles) se používají většinou systémy třetích stran (Havoc, PhysX a ODE). Na rozdíl od detekce kolizí, která se objevuje ve většině her, fyzikální výpočty nejsou nezbytnou součástí. Většinou se nalezené kolize řeší jako součást simulace fyziky.
Ve hře se většinou objekty (lidé, zvířata...) pohybují a to s využitím systému animací. V moderních hrách se nejčastěji používá Skeletal himation (pohyb postavy) nebo Morph target (animace obličeje). Kvalitní animace patří při tvorbě hry také mezi důležitý subsystém s ohledem na věrné zobrazení reality.
Vzhedem k interaktivitě hry se zpracovávají vstupy nejen od hráče, který používá běžně známé vstupní zařízení (klávesnice, myš, gamepad nebo joystick), ale i herní zařízení jako volant, pedál…, ale je třeba zpracovat i zpětnou vazbu od některých zařízení ( síla působící v určitém směru, vibrace i zvukové signály). Herní enginy někdy umožňují konfiguraci vstupních zařízení.[8]
Zvukový systém je pro hru stejně důležitý jako grafika nebo fyzika. V herních enginech se audio systémy podstatně liší v nabízených funkcích (od obyčejného přehrávání zvuku, přes prostorový zvuk k přehrávání více zvuků najednou nebo opakované přehrávání… Profesionální zvukový systém FMOD, který je zabudován v herních enginech Unity a Unreal, podporuje řadu zvukových formátů a podporuje ho většina herních platforem.[3]
Některé (MMO) hry umožňují zapojení více hráčů do stejného virtuálního světa. Multiplayer lze rozdělit do čtyř základních skupin: kategorií: Single-screen multiplayer – dva nebo více hráčů používá jedno herní zařízení. Jedna kamera snímá stejný virtuální svět, ve kterém se všechny objekty nachází. (Lego StarWars). Existuje ještě zvláštní varianta nazvaná hot-seat. Při tomto způsobu hraní se hráči postupně střídají o jeden herní ovladač a jedno herní zařízení. Split-screen multiplayer – více hráčů sdílí stejný virtuální svět, ale každý má svůj herní ovladač, který je připojen ke společnému hernímu zařízení. Obrazovka je rozdělena na několik oken a každý hráč vidí svoji postavu. Networking multiplayer – každý hráč hraje na svém počítači a ty jsou propojeny v síti.[8]Massively multiplayer online games – stovky i tisíce hráčů hrají v otevřeném herním světě, který je hostovaný na výkonných centrálních serverech (World of Warcraft od společnosti Blizzard Entertainment, Fortnite nebo Guild Wars 2 od společnosti ArenaNet.[3]
Vrstva herní svět a základní objekty obsahuje obvyklé objekty, které jsou potřeba pro většinu her např. statické objekty (budovy, terén), dynamické objekty (kameny, židle, barely …), objekty reprezentující charakter hráče, objekty reprezentující postavy ovládané počítačem, zbraně, vozidla, dynamická a statická světla a další …
Systém událostí a zpráv umožňuje komunikaci mezi objekty. Jednodušší je systém zpráv, kdy objekt, který chce zaslat zprávu, přímo zavolá funkci objektu, který zprávu přijme. Princip zpracování událostí je běžný způsob řešení komunikace mezi objekty. Mezi výhody systému událostí patří ukládání zprávy do fronty a jejich postupné zpracování. Někdy se použije také doručení zprávy v konkrétním čase.
Často hry využívají skriptovací systém pro urychlení nebo zjednodušení vývoje herní logiky nebo obsahu. Přeložení krátkých skriptů je rychlé. Bez skriptovacího systému by po každé změně bylo třeba přeložit celou aplikaci, napsanou ve zdrojovém kódu do spustitelného souboru. Což s ohledem na časovou náročnost by mohlo způsobit výrazné zdržení. Někdy enginy umožňují i znovu nahrávání skriptů za běhu aplikace. Používají se skriptovací jazyky Eclipse Scripting Language nebo Lua.
Umělá inteligence vytvářela svět hry. Postupně byly objevovány algoritmy pro stejné postupy umělé inteligence ve hrách a tak mohly být implementovány do herních enginů. Mezi základní postupy umělé inteligence v herních enginech patří algoritmus hledání nejkratší cesty, který používají herní objekty při přemísťování z místa A do místa B (algoritmus A*). Společnost Kynogen vytvořila systémový vývojový nástroj Kynapse, který poskytuje nízko úrovňové funkce pro vytvoření umělé inteligence. Například hledání již výše zmíněné cesty nebo vyhýbání se statickým a dynamickým překážkám. Také poskytuje rozhraní mezi umělou inteligencí a animací postav.[8]
Nad vrstvami, které jsou popsány výše jsou již navržené subsystémy pro konkrétní hru, nebo typ hry. V mnohých enginech však zasahují specifické funkce konkrétní hry i do nižších vrstev. Zaleží na univerzálnosti enginu.
Nástroje enginu
Herní engine používá většinou specifické formáty dat, a proto musí mít nástroje na tvorbu těchto dat, nebo na jejich konvertování z jiných formátů. Pro tvorbu digitálních dat se používají speciální nástroje (Digital Content Creation - DCC). Například software Maya a 3D Studio Max (firma Autodesk) vytváří 3D modely i animace. Na tvorbu a editování textur se používá mimo jiné bitmapovýAdobe Photoshop – to jsou příklady použití softwaru třetích stran.
Způsob zpracování částicových efektů (výstřel zbraně, oheň, kouř, exploze, tekoucí voda, unikající palivo…) se liší u většiny enginů. Formáty používané DDC jsou nevhodné pro přímé použití ve hře, jsou komplexnější než se využije pro engine a s ohledem na složitou strukturu se velmi pomalu načítají, proto má většinou každý engine vlastní editor.[8]
Odkazy
Reference
↑ Co je to herní engine. www.ceskemody.cz [online]. [cit. 2022-04-21]. Dostupné online.
↑ Co je to MMO? - IT Slovník. it-slovnik.cz [online]. [cit. 2022-04-09]. Dostupné online.
↑ abcdMARTINEC, Petr. Návrh a realizace 2D herního engine [online]. Diplomová práce. Univerzita Pardubice, Fakulta elektrotechniky a informatiky, 2019 [cit. 2022-04-09]. Dostupné online.
↑KAVLÍK, Richard. Herní enginy ve výuce na ZŠ. 2018 [cit. 2022-04-09]. Masarykova univerzita, Pedagogická fakulta. Dostupné online.
↑ ab Ohlédněte se s námi za nejpopulárnějšími enginy herní historie. iDNES.cz [online]. 2015-12-18 [cit. 2022-04-09]. Dostupné online.
↑ Unreal vs Unity - srovnání áčkových herních enginů. VRapps.cz [online]. [cit. 2022-04-10]. Dostupné online.
↑ abcdefSKALSKÝ, Michal. Eclipse engine [online]. Západočeská univerzita v Plzni, Fakulta aplikovaných věd, Katedra informatiky a výpočetní techniky, 2010 [cit. 2022-04-10]. Diplomová práce. Dostupné online.