Prírodou inšpirované algoritmyštudijné materiály pre projekt mobilnej triedy umelej inteligencie |
||
Memetic AI toolkitToolkit správania sa pre PC hru Neverwinter nightsMemetic AI toolkit je rozšíriteľný systém pre vytváranie nie-hráčskych postáv (non-player characters) NPC pre počítačové hry ako Neverwinter Nights (NWN). Táto implementácia je napísaná v NWScripte, skriptovacom jazyku pre NWN od firmy Bioware. Je navrhnutý, ako hotový súbor knižníc, ktorý môže byť prispôsobený návrhármi pre rôzne spôsoby použitia.
Doposiaľ sa počítačové vedy venovali memetike z pohľadu genetických algoritmov. Táto teória vyzerá asi takto: Ciele a motiváciaTento toolkit bol urobený pre dlho trvajúcu viac-hráčsku (multi-player) online misiu (campaign). Je navrhnutý pre vytvorenie adaptabilných NPC, ktorí prežívajú počas týždňov a mesiacov - nie minút alebo hodín. Ich účelom je byť základným kameňom dynamického okolia. Tu sú niektoré základné myšlienky, ktoré boli motiváciou, pre vytvorenie tohto toolkitu:
Pre splnenie týchto cieľov je potrebný memetický slovník. Musí dávať zmysel, musí byť jednoduchý a byť použiteľný pri bežnom rozhovore. Vo všeobecnosti, dobrá implementácia Memetickej AI musí byť modulárna, rozšíriteľná a abstraktná v tom zmysle, aby bola ľahko kódovateľná a používateľná. Kompletný prehľad memetických skriptov MémyAk sa medveď prechádza lesom, čo mu prechádza mysľou? Zastať a najesť sa bobúľ, označkovať si teritórium alebo zaspať v noci? Medveď premýšľa nad mnohými akciami a jednu si vyberie. Ale ako to zakódovať vo všeobecnosti, aby sa to dalo opakovane použiť? Je potrebný model správania sa. Použitím memetic AI, každá NPC môže byť nositeľom rôzneho počtu mémov, čakajúcich na šancu stať sa aktívnymi. Keď nový mém vznikne, zmení svoju prioritu alebo je ukončený, ďalší môže dostať šancu byť spustený. NPC sú stále činný podľa svojich mémov. Priority a modifikátoryKaždý mém má svoju prioritu: veľmi vysokú (very high), vysokú (high), strednú (medium), nízku (low) alebo žiadnu (none). V rámci každej premennej má modifikátor z rozsahu od -100 do 100. V reálnom čase môže byť aktívny iba jeden mém a ten je vyberaný automaticky podľa priority. Mémy so žiadnou prioritou sú ignorovaný, považovaný za spiacich. Ak sa mém stane aktívnym, jeho kód získa kontrolu nad štandartnou NPC frontou (queue) akcií. Môže spoľahlivo zavolať funkciu ActionDoCommand(), riadiť okamžite NPC. ![]() Keď je raz mém vytvorený, môže meniť svoju prioritu v každom čase. Najvyššia priorita je vždy spustená. Ak v rovnakom čase má množina mémov rovnakú prioritu a modifikátor, spustený bude prvý z fronty (queue) s touto prioritou, za ním ďalší atď., pokiaľ sa vo fronte nenachádza žiadny mém takejto priority. Memetické sekvencieŽiaľ, písanie mémov pre každý možný druh správania sa stáva únavným a nepraktickým. V mnohých prípadoch je najednoduchšie zreťaziť niekoľko mémov do jednoduchej postupnosti (sequence). ![]() Sekvencie majú prioritu, tak ako každý mém. Jej priorita môže byť fixná, alebo odvodená od mémov, ktoré obsahuje. Keď má prioritu vyššiu ako ostatné správania sa, spustí obsahujúce mémy v sekvenčnom poradí - nie podľa priority. Ak je sekvencia prerušená mémom s vyššou prioritou, má možnosť znovu začať na poslednej pozícii v sekvencii, alebo na méme, ktorý bol označený ako checkpoint. ![]() Vo všeobecnosti, sekvencie nás posunuli bližšie k nášmu cieľu používať mémy ako stavebnicové bloky. Knižnica mémov bola vyvíjaná tak, aby budovač modulov mohol dynamicky zreťazovať správania sa podľa hráčovej angažovanosti v hre. |
||
Kontakt: Marek Bundzel |