Základy prostorové orientace botů

Takže dneska něco málo o pohybování botů po levelu. Základem prostorové orientace bota ve vaší aréně je pathnode (NavigationPoint->PathNode). Po nadesignování úrovně je zapotřebí tyto orientační uzly rozmístit co nejlépe ve vašem levelu. Buď to můžete nechat na počítači a nechat ho chvíli propočítávat trasy pomocí funkce Create Path Network (v menu Build, nebo po zapsání do konsole editoru "autopath"). Ale tuhle techniku nedoporučuji, protože editor vytvoří nejoptimálnější cesty pro boty a ty většinou vedou na krajích nějakých lávek a pod. kde se bot po jednom zásahu enforceru stane snadnou kořistí !, nehledě na to že vám autopath umístí kolikrát cesty i tam kam nechcete (dekorativní prostory), nebo neumístí tam kam chcete (vytvoříte perfektní snajprovací místo a bot tam nechce dojít !). Proto je nejlepší cestovní uzly umisťovat manuálně.

Základní definice tras

V Actor browseru vybereme PathNode a umisťujeme jako objekty pravým klikem myši. Vytýčíme si trasu v levelu která se nám zdá optimální a teď musíme nadefinovat trasy, což uděláme buď konzolovým příkazem "paths build", a nebo v ED2.0 klikem na paths build v build menu. Potom si ještě necháme trasy zobrazit "paths show" (anebo pravý klik na jedno z editačních oken a nastavení view-paths), po tomto kroku vidíme v levelu spoustu jablíček propojených červenými a modrými čárami (nás budou zajímat jenom ty modré, protože podle nich se bot pohybuje). Pokud máme takhle nadefinované trasy můžeme spustit hru a podívat se jak se bot v levelu pohybuje (jedno na jakou obtížnost, na nižší obtížnosti se bot pohybuje jenom pomaleji, jinak obtížnosti jsou vidět jenom v boji ((uskakování přesnost apod.)), bot se vždycky pohybuje od uzlu k uzlu). Pokud někde nevidíme modrou tam kde bychom ji chtěli mít stačí většinou přidat další PathNode, aby byly uzly na přímou viditelnost. S těmi body není radno to přehánět, je sice hezké že bot běhá plynule do zatáčky, ale vysoký počet cestovních uzlů oslabuje výkon PC. Pokud máte v levelu naopak málo bodů, může se stát že bot oběhne celý level aby se dostal pro MedBox a pak zase poběží zpátky pro náboje do flak cannonu. oficiální stanovisko (alespoň jak říká CliffyB, je vzdálenost +- 700bodů mezi cestovními uzly).

Tlačítka, kempy a cíle assaultu

Tlačítka Například si ve svém levelu vyrobíte krásnou cirkulárku která všem uřízne hlavy po stisku tlačítka. Pro takovéhle případy nám UnrealED nabízí pomůcku TrapSpringer (Invertory->TrapSpringer), která "naláká" boty ke stisku tlačítka. TrapSpringer stačí umístit na místo kde máte Trigger a nastavit v Properties TrapSpringeru TrapTag (Tag pasti (třeba tý cirkulárky)) a TriggerTag (Tag spínače který ovládá past).

Kempovací místa Pro vyčkávaní bota na určitém strategickém místě (pokud ve vlastnostech bota nastavíte hodnotu kempování (camping) na max. bot bude automaticky vyhledávat tyto body a bude na nich vyčkávat příchozím konkurentům). K takovýmto účelům slouží AmbrushPoint (Navigationpoint->Ambrushpoint). Stačí ho vložit na místo kde chcete aby bot kempoval, šipkou Ambrushpointu nastavit směr kterým se má koukat a v preferences nastavit bSniping (zda má bot používat sniperrifli) a SightRadius, v jakém rozsahu má hlídat svůj post (není třeba nastavovat).

Strážní posty Strážní posty jsou obdobné jako Ambrushpointy až na to že se používají v Assalutu nebo CTF. Po vložení Defensepointu (Navigationpoint->Ambrushpoint->DfensePoint) musíme nastavit parametry jako bSniping (jestli bude bot z daného bodu snajprovat) a tři nové parametry jako FortTag (tag FortStandartu pro Assalut), priority (priorita bodu, zadává se většinou ve stovkách, čím vyšší číslo tím víc budou boti tyto místa preferovat) a hodnotu team 0-červení 1-modří.

CíleAssalutu Jako cíle Assalutu slouží FortStandarty (Pawn->StationaryPawn->FortStandart). První co musíme u FortStandarty zadat je událost Event a naměřujeme ji na Mover který se má otevřít a pod. (dveře nebo něco podobného). Potom se nastavují preference FortStandarty. První je FinalFort a pokud je true určuje poslední cíl ve hře. Potom bSaydestroyed (končí-li hra), další je triggerOnceOnly nastavuje se na true pokud má být FortStandarty dosaženo pouze jednou. Máte-li například přestřelit pět řetězů nechá se na false. Potom defense priority, jakou silou má být standarta chráněna a defense time jak dlouho. DestroyedMessage jaká hláška se má zobrazit po dosažení cíle EndCamTag, to je odkaz na finální kameru na kterou se mají hráči přepnout po dosažení finálního FortStandartu (pouze pokud je FinalFort = true) a nearestpathnode je tag pathnodu který je nejblíže FortStandartě.

CíleCTF Jako cíle k CTF slouží vlajky Flagbase (Navigationpoint->FlagBase) červená a modrá. u vlajek stačí jen v preferences nastavit číslo týmu 0-červená 1-modrá.

CíleDOMination V dominationu stačí vložit do Arény určitý počet Controlpointů (NavigationPoint->Controlpoint), všechny body které jsou ze skupiny navigation point na sebe vážou trasy, pokud používáte trigery jako Kikcer a pod musíte ho uložit někam pod pathNode protože k němu boti sami nedoběhnou.

Výlezy z vody, skoky, translokace a podobné vychytávky

Výlez z vody Takže jak docílit toho aby bot vylezl/vlezl do vody, pokud máte výškový rozdíl mezi hladinou vody a břehem asi tak do 32jednotek stačí šikovně umístit PathNode aby se bot pohyboval po trase, ale problém nastává v případě že chcete aby bot skočil do vody z nějaké větší výšky. nadefinujte trasy jako předtím a pod PathNode který je umístěný na hraně ze které má bot skočit dejte Kicker (Triggers->Kicker), nasměrujte ho aby směřoval směrem do prostoru kam chcete aby bot skočil. Potom v Preferences Kickeru nastavte Kicker->KickedClasses "Bot" to zapříčiní to že na Kickeru budou skákat Boti a ne například vy, všechny ostatní vlastnosti nechte na nule.

Skok dolů Skok dolů je úplně stejný jako skok do vody, na hranu nějaké propasti pot PathNode vložíme Kicker do Classu mu nastavíme Bot, nasměrujeme ho správným směrem. Kicker lze i využít nejenom pro Boty (např do nějakého Jump Padu). Stačí na nějaké místo umístit Kicker v KickedClasses nechat Pawn (odpaluje i hráče monstra a pod.) a do KickedVelocity nastavit souřadnice kterým směrem má náraz působit (směrovou šipku necháme na pokoji, k ničemu nám není), například chceme udělat Jump Pad který nás vymrští kolmo vzhůru tak do KickedVelocity nastavíme Z-tovou souřadnici např. na 750.

Skok nahoru Skok nahoru je již obtížnější. Na místo ze kterého chcete aby bot skákal umístěte LiftExit (NavigationPoint->LiftExit), potom na místo kam chcete aby bot skákal dejte JumpSpot (NavigationPoint->LiftCenter->JumpSpot)  a nakonec tak kam chcete aby bot šel po skoku dejte další LiftExit. Nakonec se podívejte do Preferences LiftExitu a JumpSpotu a zkontrolujte jestli mají všechny tyto body shodný LiftTag. Tento postup lze využít např. i v případě kdy děláte nějakou akcelerační komoru a potřebujete aby vám do ní bot skočil (něco jako v mapě CTF-HallOfGiants). Chcete-li přinutit bota ke skokům pomocí pneu-kladiva stačí v Prefernces JumpSpotu nastavit bImpactjump na true.

Translokace Umisťovat translokační trasy má ovšem smysl pouze v módech jako je CTF nebo DOM. Postup je jinak podobný jako u JumpSpotu. Na místo ze kterého chcete aby se bot teleportoval umístěte LiftExit, tam kde má umístit translokační destinační modul dejte Translocdest (Navigationpoint->LiftCenter->TranslocDest), a tam kam má jít po teleportaci dejte další LiftExit. Nakonec se ujistěte že všechny tyto body jsou propojeny LiftTagem.

Teleportace Teleportace bota teleporterem (NavigationPoint->Teleporter) je automatická, jelikož je Teleporter podskupinou navigationpointu váže na sebe automaticky trasy. Do levelu potom stačí umístit teleporter na potřebné místo a rebuildovat pathe.

Jízda výtahem Nastavení výtahu je obdobné jako u předchozích postupů. Na místo kde chcete aby bot nastoupil dejte jeden LiftExit, doprostřed výtahu vložte LiftCenter (NavigationPoint->LiftCenter) a další lift exit na místo kam se má bot po jízdě dostavit.  Propojte všechny body LiftTagem i s výtahem (do Moveru nastavte Tak shodný LiftTagem cesty), to proto aby bot věděl kde se výtah nachází případně si ho i zavolal. Tady pozor nestavte výtahy příliš dlouhé, protože se může stát že bot přiběhne k výtahu z druhé strany zavolá si ho a čeká dobu než výtah přijede, mezitím přijde druhý bot svedou bitvu prvnímu výtah ujede a čeká dál, než se zase vrátí. Takhle bot stojí na jednom místě podstatnou dobu a stává se snadným cílem. Bot se vždy snaží jít nejbližší cestou i když to není efektivní. Takže například pokud máte dva výtahy (jeden vozí  lidi nahoru druhý dolů) bot půjde k tomu nejbližšímu nezávisle na tom za je nahoru nebo dolů, nebo na čase který musí strávit při čekání na něj.


Bob "Venca12 de Sade" Hazard