Neustálé potíže

Zombie pathfinding byl v DayZ problémem již od samotného začátku, prakticky od prvních dnů vývoje modu. Bylo těžké vytvořit chování zombie na existujícím ArmA enginu, nucenému k procesům, ke kterým nebyl navrhnut. Systém vznikl především k pohybu jednotek z bodu A do bodu B, nikoliv pro hordy zombie nezávisle na sobě. I když se tento systém průběžně vyvíjel a upravoval, mohli jsme pozorovat pořád stejné problémy. Zombie si vesele kráčeli přes zdi, propadávali se do základů a schodišť. Pathfinding byl neustále pod palbou kritiky. Nereálné a „neférové“ zombie dokáží zničit hru jak nováčkům, tak zkušeným hráčům.

Příchod NavMesh

navmesh4Patch nesoucí číslo 0.47 přinesl poměrně masivní funkce měnící hru, které byly měsíce očekávány. Konečně jsme se dočkali vylepšení pathfindingu u zombie, jehož skripty byly nahrazeny a aktualizovány mnohem komplexnějším systémem, nazývajícím se Navigation Mesh – nebo zkráceně NavMesh. Toto vylepšení má zásadní dopad na prozatímní hratelnost DayZ Standalone, neboť nový pathfinding zabraňuje zombie, aby vás překvapili ze zálohy za plotem, či stěnou domu. Zombie by již měli brát ohledy i na překážky, efektivně se jim vyhýbat a při tom i vyhledat nejkratší cestu k vám. Tu jim můžete dokonce i zneprůchodnit, například zavíráním dveří při úprku do bezpečí.

Princip a implementace NavMeshe

navmesh3Nový systém navigace NavMesh je řešení, jenž našlo využití ve mnoha jiných moderních hrách. Technicky se jedná o abstraktní datovou strukturu, aplikovanou pro umělou inteligenci, která umožní vyhledat její vlastní cestu skrze velké prostory, pomocí speciální navigační mřížky. Navigace Mesh je umístěná v mapě a reprezentuje průchozí plochy celé Chernarusi.

Jelikož je rozloha herního světa v DayZ Standalone tak obrovská, nemohl být NavMesh vytvořen ručně. Řešením bylo rozdělit Chernarus na menší části a vytvářet navigační síť najednou. Celá mapa se poté naskenovala. Načetly se všechny objekty a vykreslily miliony čar pro výpočet, kde všude se může umělá inteligence pohybovat. Engine načítá pouze kousky NavMeshe, přesně tam kde právě potřebuje. Toto řešení spotřebuje 600 MB paměti navíc, ale vzhledem k práci vývojářů na 64-bitových serverech, nemusíme očekávat problémy. A rozdíl v chování zombie oproti dřívějšku, je díky NavMeshi znatelný.