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.

Ptero-Engine
VývojářPterodon
První vydání30. duben 2000
Poslední vydání19. prosinec 2005
Aktuální verze0.02.213 (23. srpen 2006)
Operační systémMicrosoft Windows
Vyvíjeno vC, C++
Typ softwaruherní engine
Licenceproprietární
Některá data mohou pocházet z datové položky.

Hry využívající Ptero-Engine editovat

Jádro editovat

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 editovat

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.

Grafika editovat

Renderování editovat

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 editovat

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 editovat

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 editovat

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 editovat

Engine videa používá pouze v podobě renderovaných filmových sekvencí. Všechny herní filmy používají proprietární formát AVI.

Zvuk editovat

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 editovat

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 editovat

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 editovat

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.

Grafika editovat

Renderování editovat

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 editovat

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 editovat

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 editovat

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 editovat

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 editovat

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 editovat

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 editovat

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 editovat

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 editovat

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 editovat

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 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 editovat

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 editovat

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 editovat

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 editovat

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 editovat

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 editovat

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.

Grafika editovat

Renderování editovat

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 editovat

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 editovat

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 editovat

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 editovat

  1. Neoficiální specifikace formátu CBF od projektu OpenVietcong [online]. Dostupné online. (anglicky) 
  2. a b POLÁCH, Zdeněk. Flying Heroes. iDNES.cz [online]. 1999-08-26, rev. 2000-02-16 [cit. 2020-03-23]. Dostupné online. 
  3. 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. 
  4. 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. 
  5. 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) 
  6. a b c d e f g Oficiální příručka pro Ptero-Engine-II v PDF [online]. Dostupné online. 
  7. Neoficiální specifikace formátu BES od projektu OpenVietcong [online]. Dostupné online. (anglicky) 
  8. 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) 
  9. Neoficiální specifikace formátu MANM od projektu OpenVietcong [online]. Dostupné online. (anglicky) 
  10. a b c Oficiální skriptovací SDK pro Ptero-Engine-II [online]. Dostupné online. (anglicky) 
  11. Neoficiální specifikace formátu WAY od projektu OpenVietcong [online]. Dostupné online. (anglicky) 
  12. a b c d ZIGO, Roman. Specifika praxe zvukového designu počítačových her v českém prostředí [online]. Dostupné online. 
  13. 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. 
  14. a b Popis nových technologií Ptero-Enginu-III [online]. Dostupné online. 

Externí odkazy editovat