

C# AI - Jak?
Zdravím všechny,
trochu jsem přemýšlel nad teoretickýma otázkama ohledně nezastavitelného blížení se 5. generace počítačů. ( Pár slov z Wikipedie po odstavci 4.Generace PC "Další generace zatím nejsou známy, protože není jisté, jakým směrem se bude vývoj ubírat. Mohly by to být stroje s umělou inteligencí, kvantové počítače nebo něco úplně jiného.". Velmi mě zaujala myšlenka "strojů s umělou inteligencí", a tak jsem se začal zaobírat celkem obsáhlejším (a také mnohem známějším) tématem: AI ve hrách. Jako středně pokročilého amatéra v programování (na kontě kousky jako Batch,což byly totálně absolutní základy, pak jsem nakousnul Javu ale pak už nic, kompletně zvládnuté Pawno a z tří čtvrtin hotové C#) mě hlavně velice zaujalo jak někdo (ksakru) dokáže naprogramovat nějaké AI jako bylo např. v CS 1.6 nebo v jakékoliv jiné hře, ve které se vyskytovalo AI. Absolutně první, co mě napadlo, bylo samozdřejmě fungování věcí jako random proměnných, ifů a else-věcí (už netuším jak to mám nazvat, snad víte co myslím ;), ale to zdřejmě nepokryje věci jako teoretické vyhledávání nepřátel, chození po mapě atd. (a to už vůbec nemluvím o konkrétním příkladu z CS 1.6 - boti střílí z optiky sniperkou. WTF?)
Mám teda dotaz, jestli s tímto tvořením AI v C# má tady někdo skušenosti - a taky postupy, jak něco takového vytvořit. Budu rád za každou rozumnou odpověď.
Díky,SteveXtreme. (Sakra už zas musím na wécko! :D)
Prva zakl.vec je fuzzy logika a z nej vyplyvajuce rozhodovanie.
Druha zakladna vec umelej inteligencie je ucenie sa (to sa da bud nejakymi databazami, alebo neuronovymi sietami).
Co sa robi v hrach netusim, ale vacsinou je ta UI v hrach uplne trapna a neni to ziadna UI.
Zkus se podívat do zdrojáku hry a najdi si jak jsou naprogramovaná AI.
Taky by mě to zajímalo jak je vše do detailů naprogramované, třeba že AI se skrčí u nízké zdi aby ho nikdo nesestřelil. :)
if(nizka_zed) skrcit(); // :D
To byl příklad OMG! :D Jinak jsem myslel mnohem větší detaily :D
No to sa tam vsetko predsa zohladni v tej hre v zdrojakoch, ale zvycajne su to napevno napisane veci, t.j. ziadna UI (ale dnesne hry uz nehram takze neviem)
Jop,skusím nahlédnout do zdrojáku cska, doufám že jsou v *.c :D :D Jinak dobrej příklad (:D), ale kdybys tam napsal něco takového a něčím bys to neznegoval (třeba if (30_sekund_ubehlo) do (pohni_se_dal_ty_kretene) ) tak by jakmile by narazil na prvni zed tam zustal skrceny az do endgame :D Jinak jo pochopil jsem to :D
Jinak ten dotaz stejne nebyl na dnesek, momentalne se zabyvam elektronickou logikou, snazim se postavit hlasem ovladany osvetlovaci mechanizmus (pokud nekdo chce videt fotku neni problem, ale nazval bych to pre-alpha verzí :D), kazdopadne tam je to velmi podobne jako v Céčku. If (pojistka_spojena_s_led_diodou)
change Napeti to 5W
Az na to ze tam je to asi 10x tezsi nez teorie v cecku. Nenavidim el. okruhy! :D
Ono zvycajne engine hry poskytoval mnozstvo vselijakych "spinacov" alebo "trapov" (pasce) typu ze ked sa dostane paduch tam a tam (suradnice) tak to a to sa ma stat alebo prepnut nejaky status, a to definoval potom ten kto vymslal prislusny level (ze kde jaka pasca na ktorych suradniciach a co sa malo stat apod). =Ono to neni moc UI ale vypada to aspon trochu logicky.
S tym spinacom som to nepochopil. Rozpoznavanie hlasu je defakto fuzzy porovnavanie nejakej furierovej analyzy alebo co :) (rozhodovanie je na zaklade fuzzy % ak to presiahne napr. 90% tak je to to slovo apod). To tiez neni moc inteligencia, proste akusticky stroj.
Ja vim, ja vim, nevim, jak bych to presne popsal. Je tam proste mikrak a uvnitr je obvod ktery analyzuje a porovnava 2 stavy (hlasove prikazy) - vypnuto a zapnuto. Kdyz reknu "zapnuto", rozsviti se 5 led zarovicek v rade zajistene autopojistkou. Kdyz reknu "vypnuto", udela to presny opak. Jinak s tema suradnicema to neni moc dobra teorie, to by se ten ci onen clovek musel dostavit presne na urcite misto na mape aby se s AIckem neco delo. Mam spis na mysli ze to maji rozdelene na sektory z vrchu dolu na A-E a z leva do prava 1-5, a pak je
if (ten ci onen clovek se dostavi napr. do sektoru C1)
then (jdi do sektoru C1 a zacni po nem stritel)
else (jdi do sektoru random)
a pak smycka, ze pokud tam nikdo nebude, posun se do dalsiho randomovaneho sektoru a kdyz tam nekdo bude tak zacni sit atd atd atd...
Samozrejme ze suradnice nie su jeden bod ale oblast :) Ono tam v tom engine moze byt pripravenych takych moznosti kopec, ktore sa daju v leveli zadefinovat.
A co teda ti na tom hlasovom porovnavani nefunguje? Alebo nechapem celkom ze na co si sa pytal :)
Já jsem se na nic neptal, já jsem jen konstatoval, že něco takového vytvářím. Jinak, zatím mi to nefunguje proto, že jsem tím obvodem omylem pustil "dvěstě dvacet" a uvařili jse mi všechny spoje, jen ty žárovky díky té pojistce nsehořely. Sakra, musím si to příště pojistit a dát autopojistku i na začátek. Hezky to zajiskřilo. Jak jednou řekla Marge ze Simpsnových: "Nádhera! Hoří záclony!" :D :D
Jaj, tak to potom dobre :) Nic no ak sa ti to podari naprogramovat samemu bez opisovania tak klobuk dolu, neni to uplne trivialne (raz davno som robil nejake furierove analyzy a teda studoval som to aspon tyzden kym som naprogramoval nieco (polovicu som kdesi opisal, nie som predsa pan fourier :)
Jeste nez pudu (asi) spat , mam jeste jeden dotaz. J.A.R.V.I.S z Iron Mana byl přece taky AI ne? Nešlo by "stvorit" něco takového?
P.S. CO je to ten furier?
J.A.R.V.I.S z Iron Mana nepoznam :)
Chces programovat rozpoznavanie reci a nevies co je fourierova transformacia? Tak to asi nedas.
Jo ty myslýš fourirovu transformaci.... aha promin, nepochopil jsem te :) Jarvis byl prece ten pocitacovy pomocnik takzvaneho Tonyho Starka AkA Robert Downey Jr.. S kým si myslíš, že mluvil v tom obleku? Že by si tam dal telefon a mluvil se svojí tchyní? :D
Ja moc nepozeram scifi :) Alebo to existuje realne? Inac su dnes uz celkom "inteligentne" roboty ale to robia profesori na univerzitach napr. v japonsku roky a roky.
Ja bych se na to vykaslal a vratil se k memu spalenemu projektu, jenze kdyz to neudelam ted a permanentne na to nezapomenu, porad se k tomu vracim, a nikdy neprestanu, dokud dokonale neudelam to co chci nebo me to neprestane bavit primo pri vytvoru. Uz se taky znam. Projekt Mark II (alias raketa II generace, znacka Kutil s.r.o.)uz mam rozpracovany 3 tydny a furt nic.
Jako že by reagoval na nějakou větu "svojí" větou?
Jak to myslís?
Jak jsi to myslel ty? Bavíme se o tom hlase, se kterym mluvil Stark v obleku?
Jo, ten jarvis... Jo to by šlo, ale chtělo by to anglický Win7 protože v českém Voice Reconginazation nefunguje. Nic težkého - naprogramuju, že když řeknu třeba "Jarvisi - Poradna" tak by mě to hodilo sem.
Já jsem v programování teprve v úplnejch začátcích, ale vím že to jde. Ve škole si takhle 2 studenti (teď už dospělí) udělali robota, na kterýho můžeš mluvit česky a on ti odpoví. Např počítání přikladů, potdraví a takový ty chujovinky.
Jestli chceš můžu ti s tím programováním pomoct. Na co se specializuješ? (Java,C#,C++,Batch...)
Kdyžtak mi pošli do PMky svůj email a nejak se domluvíme. Pokud budeš programovat v C# můzu ti s tím nejvíc pomoct.
{
- Psani logiky v c#[c++]by zabralo hodne casu, tusim ze se pouzivaji makery kde se zada jen AI logika nez to cele psat rucne.
- S ELSE si nemyslim ze by to byl nejlepsi napad(to uz mozna radci Switch),,,,pujde spis o pohyb a mysto+ logika, if free ( x,y,move xxx); nebo neco obdobneho,,vytvorit "stats" deklarovat "pro" a "proti"
Nejsem na PC, ale zkus toto http://translate.googleusercontent.com/translate_c ?depth=1&hl=fr&prev=/search%3Fq%3Dc%252B%252B%2Bai %2Blibrary%26biw%3D1024%26bih%3D641&rurl=translate .google.fr&sl=en&u=http://www.lifeai.com/download. html&usg=ALkJrhjbAzV5ESMYR2tYREsdYFFZtXNbcg i kdyz je to v C++ logika programovani je ta sama, jako v C, nebo C#, ci Kobal
}
Tak teda - v noci jsem se přehraboval v source codech (omg stovky tisic radku :D) CSka a je to přesně jak jsem si myslel. Jen taková malá ukazka z principů, ale tak, aby to pochopil každý: (Jinak ukázka se týká oficiální úpravy AI pro mapu De_Dust)
if (sektor 8F čistý)
change Pohyb to nahodny
if Nepritel true
set Strelba true
Atd... Jo je to přesně jak jsem čekal. Jednoducha If-ová a else-ová logika. Člověk se potom nemůže divit, že v některých hrách je AI tak tupá. Každopádně díky, kdybych náhodou udělal někjaký special pokrok v logice, napíšu. Zatím označuju za vyřešené.