El Matador - deníček vývojáře

  12:00
V české akci El Matador hrajeme za agenta, který bojuje proti čtyřem drogovým kartelům v Kolumbii. Do zákulisí projektu můžete nahlédnout díky deníčku hlavního programátora Petra Smílka.

Úvod
El Matador Nazdar čtenáři. Řádky, které právě čtete začínají sérii neformálních článků, které vám (samozřejmě pokud vás to bude zajímat), přiblíží aktuální dění při vývoji hry El Matador. Jmenuji se Petr Smílek a pracuji na Matadorovi jako hlavní programátor (tohle bohužel není moje jediná role v teamu, ale o tom budu psát radši až někdy příště, zatím si můžete myslet, že jsme zcela standardní firma :-)) Nikdy jsem žádné developer diary nepsal (zatím), takže si zvolím formu, které mě právě napadla a připadá mi originální. Budu sám sobě klást otázky, na které si záhy budu sám odpovídat, takže to bude celé vypadat jako F.A.Q. Bude to mít jednu výhodu a to tu, že pokud vás otázka nebude zajímat, tak ji prostě přeskočíte a půjdete na další. Dobrá, můžeme začít.

Kolik programátorů na El Matadorovi dělá? Na čem konkrétně kdo pracuje?
Na El Matadorovi od začátku až doposud dělají tři programátoři. Já, Honza a Petr. Celou programátorskou práci máme rozdělenou na poměrně nezávislé oblasti, takže si nelezeme do zelí. Honza pracuje na většině kódu týkajícího se high-level AI (to co nepřátelé vidí, slyší a co na základě toho dělají) a implementuje front-end část hry (user interface, invenory management, implementing various entity types). Taky je primárním autorem skriptovacího systému, který používáme. Petr řeší fyzikální simulátor, detekce kolizí, low-level motion planning & obstacle avoidance + vehikly (auta, vrtulníky apod.). Já jsem implementoval engine, který tvoří jádro našich her.

Kolik má program El Matadora řádků?
No, ne že by to něco znamenalo, ale lidé se občas na takovéto věci ptají. Kvalitu programu ovšem neurčuje počet řádků, spíš to funguje tak, že čím více řádků, tím více prostoru pro chyby. Podle toho, co zobrazí program Line Counter (http://noeld.com/programs.asp?cat=misc), máme prostoru poměrně dost :-).

Global Summary (42.5 MB, actual: 36.4 MB)
--------------------------------------------------------
Total number of lines: 1663728
Total number of lines of code: 950566
Total number of empty lines: 329478
Total number of comment lines: 199224
Total number of empty comment lines: 184460
--------------------------------------------------------
5349 file(s) processed.

Můžem vědět něco o AI ve hře?
Když se řekne AI nepřátel je buď dobré nebo špatné, obvykle se tím myslí dojem, jakým na hráče nepřátelští agenti působí. V žádném případě nelze mluvit o nějaké skutečné inteligenci (i když vám to budou všichni vývojáři ve svých prohlášeních vehementně tvrdit). Ve skutečnosti totiž u akčních her nezáleží ani tak na tom co a proč který agent dělá (což jsou samo o sobě taktická rozhodnutí, která inteligenci vyžadují), ale především na tom, jakým způsobem to dělá (žádoucí je samozřejmě způsob co nejefektnější).

El Matador V El Matadorovi pro AI používáme poměrně standardní techniky a algoritmy. K implementaci takzvaného terrain-reasoningu (schopnost AI rozumět světu ve kterém existuje), využíváme sítě tzv. waypointů. Waypointy jsou body v prostoru, které mají v sobě a mezi sebou vypočítány informace potřebné pro pohyb agentů v prostoru a pro získávání taktických informací o okolním prostředí. (viditelnost mezi waypointy apod.) Waypointů je v levelu několik tisíc (N), takže abychom mohli udržovat informace pro NxN waypointů musí být tato informace značně komprimována.

Pro samotnou implementaci nepřátelských agentů používáme Finite State Machines (FSMs). Tyto FSM mají přímou podporu v našem skriptovacím systému, takže jejich zápis a práce s nimi je velice jednoduchá a efektivní. Každý agent se může nacházet v jednom z mnoha stavů (idle, search target, fight apod.) a určitému stavu odpovídá určité chování. Určité (low-level) části AI agentů jsou psány přímo v C++, ale určitá část je naprogramována ve skriptovacím jazyku, takže některé modifikace a zásahy do AI nevyžadují změnu hlavního programu.

Posledním prvkem, který využíváme a o kterém se zmíním jsou takzvané rule-based systémy. Tento systém nám umožňuje nadefinovat soubory pravidel (opět ve skriptu), pomocí kterých potom AI provádí rozhodování v určitých situacích.

Pro ilustraci výňatek ze souboru definice pravidel:
//#include "rules_defines.h"

OnSee
{
// See opponent ?

{
(in.ai_game_event_relationship == 1) && //
E_CG_RELATIONSHIP_OPPONENT
(!(in.ai_game_event_obj_flags & 1)) && //dead flag is not set
(in.ai_game_event_status == 1) && //
E_MEM_REC_STATUS_RECOGNIZED (in.ai_game_event_last_tact_event != 20) //
E_TACTICAL_EVENT_ON_SEE_OPPONENT
: out.ai_tactical_event_type = 20; //
E_TACTICAL_EVENT_ON_SEE_OPPONENT
out.ai_tactical_event_obj = in.ai_game_event_obj;
}

// See fighting friend ?

{
(in.ai_game_event_relationship == 2) && //
E_CG_RELATIONSHIP_FRIEND
(in.ai_game_event_obj_flags & 2) && //fight flag is set
(in.ai_game_event_status == 1) && //
E_MEM_REC_STATUS_RECOGNIZED
(in.ai_game_event_last_tact_event != 23) //
E_TACTICAL_EVENT_ON_SEE_FIGHTING_COLLEAGUE
out.ai_tactical_event_type = 23; //
E_TACTICAL_EVENT_ON_SEE_FIGHTING_COLLEAGUE
out.ai_tactical_event_obj = in.ai_game_event_obj;
}


Co skriptování? Kdo a jak skriptování realizuje?
Skriptovací systém je v dnešní době součástí každého vyspělého herního enginu. Některé enginy používají dostupné skriptovací systémy jako např. LUA, PYTHON apod., některé enginy včetně našeho používají vlastní skriptovací systém. Syntakticky je náš skriptovací jazyk odnož C++, s různými omezeními a naopak rozšířeními důležitými pro programování her (podpora FSM apod.).

V předchozím projektu byli nuceni level designéři v podstatě přímo k programování a to se všemi problémy, které k programování patří. Prvním problémem bylo zvládnutí syntaxe a osvojení si programátorského způsobu myšlení. Dalším a mnohem fatálnějším problémem byla délka cyklu “write - test – modify”. Pokud například chtěl designér změnit chování určitého agenta v levelu, musel otevřít příslušný skript, napsat část programu odpovídajícího novému chování. V tomto programu samozřejmě udělal nějakou syntaktickou chybu, což se dozvěděl až při opětovném spuštění hry, které trvalo minimálně 30 sekund :-(. Asi si dovedete představit, že pokud bylo v levelu 50 agentů, každý měl skript s pár stovkami řádků, na kterých často čekaly chyby, které bylo možné odhalit až v určitém momentu při hře, byla práce s tímto systémem velmi frustrující.

El Matador El Matador El Matador

Během vývoje El Matadora jsme přešli na zcela nový přístup ke skriptování. Základem současného skriptování event-based entitový systém. Každý objekt, který se nějakým aktivním způsobem podílí na hře má dle své funkce přiřazen tzv. entity class. Tato entita potom definuje množinu parametrů a události (events) objektu. Tento systém je velice podobný tomu, jaký používá Half Life 2.

Veškerá editace pro designéry potom probíhá vizuálně a zcela odstraňuje problémy se syntaktickými chybami a chybnými referencemi ve skriptech, protože designéři žádné skripty nepíšou. Efektivita skriptování se touto cestou mnohonásobně zvýšila. Stále existuje určitá část hry, která je psána přímo ve skriptovacím jazyku, ale tu udržují programátoři. Systém umožňuje rozšiřitelnost funkčnosti hry (přidání nových entit, rozšíření funkce entit apod.) bez nutnosti zásahu do programu. Naším cílem je vytvořit pokud možno co nejvíce data-driven architekturu, ale o tom jaké výhody přináší a jak konkrétně je realizována možná napíšeme zase příště.

To je pro dnešek všechno. S některými se možná uvidíme příště :-).

Autor:
  • Nejčtenější

Nebýt seriálu o Buffy, jsem bezdomovec, přiznala hvězda The Last of Us

Osmačtyřicetiletý herec Pedro Pascal dnes díky seriálům jako The Last of Us, Mandalorian nebo...

Nový trend na Twitchi: Streamerky promítají hry na svá prsa a pozadí

Streamerka Morgpie objevila nový způsob, jak zaujmout své převážně mužské fanoušky na Twitchi, když...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Pozapomenutá hra od mistrů žánru RPG už se dá zase pořídit legálně

Špionážní klasika Alpha Protocol od legendárního studia Obsidian se vrátila do oficiální...

Už hrajeme šestý díl, provokují vývojáři The Elder Scrolls fanoušky

Do vydání dalšího dílu legendární RPG série The Elder Scrolls zbývají ještě dlouhé roky, vývojáři...

{NADPIS reklamního článku dlouhý přes dva řádky}

{POPISEK reklamního článku, také dlouhý přes dva a možná dokonce až tři řádky, končící na tři tečky...}

Úspěšní vývojáři zepsuli velká vydavatelství. Padla i velmi vulgární slova

V posledním roce obchází herním průmyslem strašidlo masivního propouštění, svou pozicí si nemohou...

Vypadají zajímavě, datum je nejasné. Stihne těchto 20 her letošní vydání?

Máme za sebou teprve první čtvrtletí letošního roku, takže u spousty her pořád není jasné přesné...

Předplatitelé PS Plus dostanou v dubnu nedoceněný herní propadák

Největším tahákem dubnové nabídky pro předplatitele služby PS Plus je loňská fantasy střílečka...

Vývojáři mobilní hříčky utratili za marketing více, než stojí vývoj velké hry

Aktuální mobilní hit Monopoly GO! vydělal během pouhých deseti měsíců od uvedení již dvě miliardy...

Judas nechce být novým Bioshockem, sází na znovuhratelnost

Legendární herní vývojář Ken Levine konečně poodhalil detaily o své dlouhé roky připravované hře...

Smoljak nechtěl Sobotu v Jáchymovi. Zničil jsi nám film, řekl mu

Příběh naivního vesnického mladíka Františka, který získá v Praze díky kondiciogramu nejen pracovní místo, ale i...

Rejžo, jdu do naha! Balzerová vzpomínala na nahou scénu v Zlatých úhořích

Eliška Balzerová (74) v 7 pádech Honzy Dědka přiznala, že dodnes neví, ve který den se narodila. Kromě toho, že...

Pliveme vám do piva. Centrum Málagy zaplavily nenávistné vzkazy turistům

Mezi turisticky oblíbené destinace se dlouhá léta řadí i španělská Málaga. Přístavní město na jihu země láká na...

Kam pro filmy bez Ulož.to? Přinášíme další várku streamovacích služeb do TV

S vhodnou aplikací na vás mohou v televizoru na stisk tlačítka čekat tisíce filmů, seriálů nebo divadelních...

Stále víc hráčů dobrovolně opouští Survivor. Je znamením doby zhýčkanost?

Letošní ročník reality show Survivor je zatím nejkritizovanějším v celé historii soutěže. Může za to fakt, že už...