The Quake III Arena Bot

Ondřej Sýkora

Quake III Arena

Quake III Arena

plně trojrozměrný svět

protivníci se stejnými možnostmi

zaměřena na “soutěžení” hráčů

hra po síti (Internet)

Bot

Definice:	počítačem řízená postava, která se ve hře pohybuje a jedná stejným způsobem jako živý hráč.

proč je potřebujeme:

nahrazují živého soupeře

nemáme živého soupeře na podobné úrovni

trénink, při kterém si neuděláme ostudu

je to zajímavá úloha pro AI

Co to tedy chceme?

“přirozené” chování

pohyb po herním světě, reakce na jeho změny

reakce na akce ostatních hráčů (hra v týmu)

možnost doladit styl a kvalitu hry změnou parametrů

technické zázemí

výpočty nenáročné na čas a na paměť

musí zbýt dostatek výkonu i na ostatní součásti hry

výpočty běžící “po malých krocích”

A ještě něco

Hra proti botovi má být zábavná

bot by neměl cheatovat (mít přístup k informacím, ke kterým nemají přístup jiní hráči)

to, že pracuje přímo s daty hry by mu nemělo dávat zvláštní výhody

podobná omezení jako hráč

úhel pohledu, mlha, hluk, ...

Historická vložka

Wolfstein 3D, Doom I a II, Quake a další

jednoduchá AI

Unreal

slíbená revoluce (pronásledování hráče, spolupráce, ...)

poprvé zde vystupují boti

Half Life

týmová spolupráce běžných nepřátel

Architektura

4 oddělené vrstvy:

Team leader AI

Commands

Misc AI

AI Network

Fuzzy

Character

Goals

Navigation

Chats

Area Awareness System

Basic Actions

4.

3.

2.

1.

Architektura – první vrstva

první vrstva

AAS

systém datových struktur ve kterých jsou uloženy informace o stavu hry (prostředí, pozice předmětů)

Basic Actions

výkonná část (výstup) bota – předává hernímu systému informace o činnosti bota (směr pohybu, střelba, ...)

Architektura

druhá vrstva

technická, převážně poskytuje služby vyšším vrstvám

třetí vrstva

rozhodování na vyšší úrovni (výběr cílů, stavy mysli bota, zpracování příkazů)

čtvrtá vrstva

organizace týmu

jen u “team leadera” při týmové hře

Architektura

Team leader AI

Commands

Misc AI

AI Network

Fuzzy

Character

Goals

Navigation

Chats

Area Awareness System

Basic Actions

Area Awareness System

struktura s informacemi o stavu herního světa

geometrie

předměty (u kterých známe pozici)

postavy, u kterých známe pozici

tlačítka, portály, dveře

kombinace BSP stromu a orientovaného grafu

hlavním účelem je orientace a hledání cesty

Tvorba Area Awareness System

základem je rozklad mapy na konvexní oblasti

tedy takové části mapy, ve kterých je možný přesun po přímce mezi libovolnými dvěma body

ty jsou základem i u BSP stromu

portalizace BSP stromu

nalezení a “označení” sousedních oblastí

prořezání a doplnění stromů

nedosažitelných oblastí, sloučení některých oblastí, ...

Tvorba Area Awareness System

dosažitelnost

na oblastech vytvoříme orientovaný graf tak, že vedeme hranu z oblasti A do oblasti B, pokud je možné se do ní dostat některou z pohybových akcí

plavání, chůze, skok, teleport, výtah, ...

předpočítání tras mezi vybranými uzly

trasy, které jsou průchozí běhěm celé hry

Basic Actions

akce, které může provádět postava ve hře

attack, use, select weapon, command

jump, crouch, move up/down/forward/back/left/right, walk, move, view

talk, gesture, say, say team

Character

vlastnosti určující styl chování bota

priority při výběru cílů a akci pro jejich splnění

Jméno, pohlaví

Bojové schopnosti, preference při výběru zbraně, přesnost míření, preference při používání předmětů

tíhnutí k určitému druhu pohybu

jak najít vhodné charakteristiky?

stromová reprezentace

Fuzzy subsystem

weight “LightningGun” {

switch (INVENTORY_LIGHTNING) {

case 1: return 0;

default: {

switch (ENEMY_HORIZONTAL_DIST) {

case 768: {

switch (INVENTORY_LIGHTNINGAMMO) {

case 1: return 0;

case 50: return 70;

case 100: return 77;

case 200: return 80;

default: return 80;

}

}

case 800: return 0;

defaukt: return 0;

}

}

}

}

Chat

pro zajištění komunikace v rámci týmu

pro pobavení hráče

bot posílá předem vygenerované texty (s případným dosazením jmen, nebo záměnou sysnonym)

rychlá analýza textu, určování obsahu pomocí šablon podobných regulárním výrazům

Chat

přepsání synonym (např. “do not” ~ “don't” ~ “dont”)

matchuje se proti šablonám

př. “(“, NETNAME, “): “, ADRESSEE, “follow me”

součástí je i systém pro vedení “dialogu” (viz Eliza)

bot může sám od sebe komentovat dění ve hře

Chat - Commands

bot rozumí několika příkazům:

help <someone>, accompany <someone>

rush to base, camp, patrol

get item, kill

a může odpovídat na různé dotazy

where are you, what are you doing

who is the leader

Goals

hlavním cílem je vítězství ve hře

určují se na základě charakteristik

krátkodobé cíle

drobné akce, které nenaruší plnění jiných úkolů

například sebrat zbraň, které leží “po cestě”

Goals

dlouhodobé cíle

získání předmětů

útok na nepřítele

hlídka

úkoly od team leadera

Navigace

výběr cíle cesty a zvolení akcí z Basic Actions pro jeho dosažení

navigace k aktuálnímu cíli × pohyb v rámci jedné oblasti AAS

Boj

před bojem je třeba najít si vhodného nepřítele

musí ho spatřit

takového, na kterého si bot “troufne”

výběr zbraně na základě charakteristik bota

míření ovlivněno charakteristikami

Pohyb při boji

pronásledování

může použít AAS pro predikci pohybu nepřítele

pohyb ztěžující nepříteli míření

uhýbání střelám, poskakování, krčení se

volba vhodné pozice a vzdálenosti pro použití zbraně

závisí na charakteristikách!

Překážky

zajímají nás jen pohyblivé objekty, statické překážky jsou započítané už v AAS

jednoduchý systém pro řešení “hádanek” typu “jak otevřít dveře” a podobně

pozor, švindluje!

Překážky

Většina se vyřeší “sama”

postavám se lze vyhnout

dveře se otevřou, když k se k nim přiblíží

pokud ne, je potřeba použít tlačítko – bot ZNÁ OD ZAČÁTKU HRY provázání tlačítek s prostředím – jejich užití plánuje za pomoci cílů a AAS

je proto nutné takovéto překážky zahrnout do AAS a systému pro navigaci

při hledání řešení hádanky používá zásobník cílů

AI Network

konečný automat se “stavem mysli” bota

zajišťuje různé chování v různých situacích

pro každý stav je definována speciální funkce pro volbu dalšího postupu a s kontrolou podmínek pro přechod do jiného stavu

Schéma AI Network

Seek Logn Term

Goal

Seek Short Term

Goal

Seek Activate

Entity

Stand

Battle Fight

Battle Chase

Battle Retreat

Battle Short

Term Goal

Respawn

Týmová AI

samostatná inteligence bota nestačí pro týmovou hru

i když je možné zadávat mu úkoly pomocí Commands

je nutné řízení na úrovní týmu

koordinaci zajišťuje jeden z členů týmu – team leader

rozděluje úkoly pomocí Chatu a Commands

jinak se chová jako běžný člen týmu

Závěr

dobré výsledky při samostatné činnosti i v týmu

poměrně přirozené chování, stále je však možné rozeznat botaod chování skutečných hráčů

plány do budoucna:

zlepšení boje (odhad trasy, popř. i činnosti soupeře)

přidat plánování

lepší týmová AI (bližší spolupráce členů týmu, rozdělení týmu na podskupiny)

2003-12-10T17:25:50