Ptero-Engine
Ptero-Engine je série proprietárních interních herních enginů vyvíjených českou společností Pterodon a určených primárně pro 3D střílečky. Po dobu svého fungování Pterodon vydal tři generace těchto enginů, přičemž každý z nich byl určen pro jednu z jeho her.
Vývojář | Pterodon |
---|---|
První vydání | 30. duben 2000 |
Poslední vydání | 19. prosinec 2005 |
Aktuální verze | 0.02.213 (23. srpen 2006) |
Operační systém | Microsoft Windows |
Vyvíjeno v | C, C++ |
Typ softwaru | herní engine |
Licence | proprietární |
Některá data mohou pocházet z datové položky. |
Hry využívající Ptero-Engine
- Flying Heroes (2000)
- Vietcong (2003)
- Vietcong 2 (2005)
Jádro
Jádro enginu, napsané v programovacích jazycích C a C++, které dohromady sjednocuje renderování, detekci kolizí, chování umělé inteligence či správu souborového systému je v každé verzi přizpůsobeno pro danou hru. Každá verze však používá vykreslovací API DirectX a stejný souborový systém, který pracuje s archivy ve vlastním formátu CBF (Compressed Big File) používajícím kompresi LZW[1], v nichž jsou uložena data pro danou hru.
Ptero-Engine-I
První generace enginu je určena pro střílečku Flying Heroes, kde proti sobě hráči bojují v arénách ze sedla různých létajících strojů. Hru je možné ovládat jak klávesnicí a myší, tak i joystickem.
Renderování
Pro renderování je používáno vykreslovací API DirectX 7.0. Engine nabízí podporu shadow map, předgenerovaných i reálných stínů, částicových efektů či odrazů pomocí environmentálních textur.[2] Mimo světelných map působí na povrchy modelů i dynamická světla, která využívají Gouraudova stínování.
3D modely
Engine nabízí podporu modelů ve vlastním formátu CO pro objekty, které se ve hře vyskytují vícekrát, jako lodě či bedny s municí. Pro velké modely scény engine používá formáty SDIF obsahující čistý model scény pro difúzní nasvětlení a SLMS obsahující model scény i s vygenerovanými světelnými mapami, které jsou při renderování aplikovány na geometrii. Modely sestávají z více trojúhelníkových meshů, kterým lze nastavit vlastní transformaci (translace, rotace, měřítko), přiřadit právě jeden LOD s nižším počtem trojúhelníků.
Animace
Engine podporuje jednoduché animace pomocí skriptů (translace, rotace, měřítko) či pomocí per-vertexových morfových animací, kdy jsou pevně stanované pozice vrcholů geometrie napříč časovou osou. V mezičasech dochází k interpolaci pozice vrcholu mezi předchozí a následující polohou.
Textury
Engine používá textury ve formátu PCX a ve vlastním formátu TFM, který umožňuje uložit texturu až s maximálním rozlišením 256x256 i s vygenerovanými Mipmapami. TFM nabízí čtyři možnosti pro zápisu pixelů:
- 8 bitů na pixel, 24bitová paleta
- RGB565 – 16 bitů na pixel
- ARGB4444 – 16 bitů na pixel (RGB + alfa kanál)
- ARGB1555 – 16 bitů na pixel (RGB + 1bitový alfa kanál)
Video
Engine videa používá pouze v podobě renderovaných filmových sekvencí. Všechny herní filmy používají proprietární formát AVI.
Zvuk
Engine podporuje prostorový zvuk zprostředkovaný prostřednictvím rozhraní DirectSound s podporou EAX.[2]. Všechny zvukové efekty jsou načítány ze standardního formátu WAV.
Skripty
Engine nabízí podporu jednoduchých skriptů v podobě textových souborů.
Příklad jednoduchého skriptu sloužícího pro animaci:
`anim_init 2 0.25 0
`stage 0.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 0
`stage 0.125 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1
`vertex_uv -1 -0.2 0
Optimalizace
Engine je optimalizován pomocí z-buffering algoritmu s využitím předgenerovaného oktalového stromu pro každou ze scén, který slouží rovněž pro detekci kolizí. Z-buffer rozhoduje o tom, které polygony jsou a které nejsou v zorném poli aktivní kamery, nedochází tak k zahlcování GPU nadbytečnými pokyny pro renderování. Podobným způsobem jsou optimalizovány i další generace enginu.
Ptero-Engine-II
Druhá generace přichází společně s hrou Vietcong. Ve hře hráč ovládá vojáka z první osoby a bojuje v hustých džunglích Vietnamu. Engine je stavěn na zkušenostech z první generace, avšak nejen odlišný koncept hry, ale i rozsah zpracování přírodních levelů a požadované schopnosti umělé inteligence nutily vývojáře původní engine z velké části upravit.[3][4] První funkční verze, nazývaná už jako druhá generace, přichází na konci roku 2000.[5]
Engine poprvé nabízí oficiální podporu vývojářů pro modifikování hry v podobě vydání editoru pro tvorbu uživatelských map, nástrojů pro přípravu 3D modelů či SDK skriptovacího API enginu.
Renderování
Pro renderování je využíváno vykreslovacího API DirectX 8.0, které přineslo možnost psaní vlastních shaderů v HLSL, což vývojářům umožnilo napsat si vykreslovací program přímo na míru. Mimo dosud používaných světelných map je stínování obohaceno o stínový strom neboli o pomocnou mřížku v 3D prostoru, která je tvořena několika buňkami nesoucími informaci o intenzitě světla včetně vržených stínů v ní. Data se následně použijí pro nasvětlování dynamických objektů, jakou jsou hráči, zbraně či vozidla.[6]
Grow
Engine nově podporuje technologii grow, která umožňuje automatické posetí vegetace na vybraných oblastech terénu, která usnadnila práci designerům a přispěla tak k realističtější iluzi husté džungle.
3D modely
Nová generace přichází s novým formátem BES, který přináší podporu několikavrstvového materiálu v podobě základní diffuse textury, detailní textury, overlay textury, environmentální textury a textury světelné mapy, podporu kostí a samotného skeletona pro animaci, nebo možnost vytváření více instancí jednoho meshe v rámci modelu.[7]
Nově přibývá také možnost tvorby sektorů, portálů, occluderů, kolizních tvarů či dalších pomocných objektů. Pro objekty v rámci modelu je možné vytvořit strukturu LOD, či jim nadefinovat další vlastnosti, jako vlastnosti týkající se fyziky, dynamické kolize, výpočtu světla pro daný objekt a mnoho dalších.[6]
Animace
Dosud používaná technologie per-vertexových animací je nahrazena skeletálními animacemi, kdy se 3D model animuje podle stanovené kostry. Mimo nich hra používá také faciální animace včetně animace očí a synchronizace rtů se zvukem.[8]
Modelové animace
Engine nabízí rovněž podporu modelových animací ve formátu MANM, v němž je uložena transformace (translace, rotace, měřítko) objektů modelu napříč časovou osou.[9]
Kamerové animace
Možnost tvorby kamerových animací umožnila vývojářům vytvořit kvalitní filmové sekvence renderované v reálném čase, aniž by musely být předrenderované v podobě filmu.
Mimo těchto účelů našly kamerové animace uplatnění i pro definování dráhy helikoptér či zvukových křivek.[10]
Podobně je tomu také v případě formátu WAY, který slouží pro uložení dráhy pozemních vozidel.[11]
Textury
Engine načítá textury z formátů DDS, TGA či BMP. Maximální rozlišení textury se zvýšilo na 2048x2048.[6]
Umělá inteligence
Umělá inteligence se pohybuje po takzvaných way pointech, které jsou různě rozmístěny po scéně a vzájemně propojeny (jednosměrně či obousměrně). Way pointu lze nastavit, zda jím musí umělá inteligence projít, či zda zde může hledat dočasný úkryt. Ve scéně jich může být najednou až 2500.[6]
Fyzika
Do enginu je poprvé implementována vlastní náročnější fyzika s větším množstvím parametrů pro konkrétní fyzikální objekt. Parametry sestávají z hustoty, momentu setrvačnosti, hmotnosti, kolizního tvaru, nastavení, zda objekt bude představovat překážku pro umělou inteligenci, či nastavení, jak a jestli se bude objekt synchronizovat v rámci síťové hry. Fyzika se využívá především u vozidel a zbraní.
Optimalizace
Engine zůstal u podobné koncepce optimalizace jako jeho mladší předchůdce, tedy u využití z-bufferingu a oktalového stromu, přibývají k nim však i nové technologie.
Portal rendering
Přidaná technologie portal renderingu umožňuje scénu rozdělit do několika sektorů, jenž nesou informaci o objektech, které se v něm nacházejí nebo jsou k němu zkrátka přidruženy. Sektor je definován geometrickým tvarem, jehož normálové vektory směřují dovnitř, jeho tvar nemusí být konvexní. Průchod mezi nimi umožňují portály, které musejí být vždy v párech, kdy vždy jeden umožňuje východ ze sektoru prvního a druhý umožňuje vstup do sektoru druhého. Jejich tvar je obvykle definován jednoduchou rovinou v 3D prostoru.
Objekty přidružené k sektoru se vykreslují pouze tehdy, nachází-li se kamera uvnitř sektoru, nebo je-li viditelná alespoň část portálu některého ze sousedních sektorů.[6]
Occludery
Occludery jsou pomocné 3D objekty ve scéně, které způsobují to, že objekty (i portály) nacházející se za ním nejsou vykreslovány.[6]
Zvuk
Engine nabízí možnost tvorby zvukových oblastí, které jsou propojeny pomocí takzvaných sound switchů.[6] Pokud kamera přechází například z venkovního prostředí do uzavřené místnosti, dochází k prolínání EAX efektů těchto dvou prostředí, ozvěny a dalších.[12]
Pozičně je v budovách zvuk orientován jak směrem od dveří, tak v místě kamery, pro efekt dění kolem celé budovy. Zvuk přicházející směrem od otevřených dveří je tedy hlasitější než na kameře, což přidává na realističnosti situace.[12]
Zvukové efekty jsou načítány z formátů WAV a OGG.
Zvukové křivky
Technologie zvukových křivek umožňuje vytvoření křivky, na níž se nachází zdroj zvuku. Typickým příkladem může být například řeka, která teče ve tvaru křivky. Řeka se tak definuje několika body, pomocí nichž se vypočítá křivka, která body kopíruje. Pokud se kamera vyskytuje v blízkosti křivky, zdroj zvuku vychází z nejbližšího bodu na ní.
Takzvaný poloměr monofonnosti, který reflektuje vzdálenost hráče od křivky, zapříčiňuje, že pokud se kamera přibližuje příliš blízko samotné křivce, zvuk se postupně posouvá doprostřed obrazovky, jako by obklopoval kameru ze všech stran. Takže pokud se kamera otáčí v těsné blízkosti křivky, zdroj zvuku nepřichází z různých stran, nýbrž se stále drží uprostřed.[12]
Skripty
Pro skriptování bylo vytvořeno originální skriptovací API, které nabízí možnost psaní skriptů v programovacím jazyce C se standardem ANSI C.[10] Skripty pracují v podobě řízení toho, co má hra vykonat při nastání některé události (eventu). Typ události se mění s ohledem na druh skriptu.
Druhy skriptů:
- Hráč
- Dynamický objekt
- Zvuk
- Multiplayerový mód
- Zbraň
- Script helper
- Unipage
Kompilátor
Skripty se kompilují do vlastního formátu SCR, který kód přeloží do vlastního strojového kódu pro engine podobného jazyku symbolických adres, ale v binární podobě.[10]
Ptero-Engine-III
Třetí generace je určena pro hru Vietcong 2, tedy pokračování předešlé hry, díky čemuž nebylo potřeba engine příliš měnit. Ke změnám dochází především u renderování a chování umělé inteligence. Grafická a další vylepšení se však odráží na vyšších hardwarových nárocích.[13]
Engine opět nabízí oficiální podporu pro modifikování hry a tvorbu uživatelských map.
Renderování
Pro renderování je využíváno vykreslovacího API DirectX 9.0. Engine nově nabízí podporu normálových textur, které vytvářejí iluzi nerovnosti povrchu beze změny geometrie povrchu a podporu specular textur, které normálové textury doplňují o hodnoty odraznosti povrchu.[14]
Umělá inteligence
V oblasti umělé inteligence se upouští od konceptu way pointu. Pohyb umělé inteligence je nově řízen pomocí polygonových sítí, jež vyznačují oblast, ve které se umělá inteligence může pohybovat. Rovněž přibývají nové pomocné objekty pro označení rohu místnosti, místa úkrytu, takzvaného interest pointu, či takzvané expect danger oblasti.
Fyzika
Vlastní fyzikální engine je nahrazen za profesionální Marok Engine. Fyzika je nově aplikována i na těla postav a obecně dochází k hojnějšímu využívání fyziky ve hře u běžných objektů.[14]
Zvuk
Přibývají nové pomocné objekty pro správu prostorového zvuku v podobě zvukových sektorů a portálů, includerů a occluderů se škálou různých nastavení. Novinkou jsou vlastnosti jako propustnost zvuků, které umožňují například to, že pokud se kamera přiblíží k oknu, lze slyšet i zvuky z venku.[12]
Reference
- Neoficiální specifikace formátu CBF od projektu OpenVietcong [online]. Dostupné online. (anglicky)
- POLÁCH, Zdeněk. Flying Heroes. iDNES.cz [online]. 1999-08-26, rev. 2000-02-16 [cit. 2020-03-23]. Dostupné online.
- Frix; jd. Rozhovor s Jarkem Kolářem, vedoucím studia Pterodon, na téma hry Vietcong. games.tiscali.cz [online]. 2002-10-01 [cit. 2020-03-23]. Dostupné online.
- DOBROVSKÝ, Pavel. Vietcong - byli jsme na návštěvě. iDNES.cz [online]. 2003-03-10, rev. 2003-03-15 [cit. 2020-03-23]. Dostupné online.
- O editoru a grafice hry Vietcong v rámci vývojářského deníku Pterodonu [online]. Dostupné v archivu pořízeném z originálu. (anglicky)
- Oficiální příručka pro Ptero-Engine-II v PDF [online]. Dostupné online.
- Neoficiální specifikace formátu BES od projektu OpenVietcong [online]. Dostupné online. (anglicky)
- Popis úloh jednotlivých vývojářů v rámci vývojářského deníku Pterodonu [online]. Dostupné v archivu pořízeném z originálu. (anglicky)
- Neoficiální specifikace formátu MANM od projektu OpenVietcong [online]. Dostupné online. (anglicky)
- Oficiální skriptovací SDK pro Ptero-Engine-II [online]. Dostupné online. (anglicky)
- Neoficiální specifikace formátu WAY od projektu OpenVietcong [online]. Dostupné online. (anglicky)
- ZIGO, Roman. Specifika praxe zvukového designu počítačových her v českém prostředí [online]. Dostupné online.
- Mickey Mouse; jd. Rozhovor s Jarkem Kolářem, vedoucím studia Pterodon, na téma hry Vietcong 2. games.tiscali.cz [online]. 2005-11-16 [cit. 2020-03-23]. Dostupné online.
- Popis nových technologií Ptero-Enginu-III [online]. Dostupné online.