.[ ČeskéHry.cz ].
Jak vytvořit vlastního bota do hry, který skenuje obrazovku?

 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> AI
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 14. leden 2014, 21:03:23    Předmět: Jak vytvořit vlastního bota do hry, který skenuje obrazovku? Odpovědět s citátem

Jde o výzvu vytvořit AI do komerční hry.

Nejdřív ale musím vyřešit získávání informací o stavu hry a její ovládání. Informace chci získávat z obrazovky, ne z dešifrování dat/paměti. K ovládání stačí mít možnost "posuň myš na pozici", "klikni levým tlačítkem myši na pozici".

Nějaké zkušenosti s touto problematikou? A případně možnost doporučení frameworku/"návodu" ideálně pro některý z jazyků C++/C#/Java?

Vím, že Mem má s tím zkušenosti, tak Meme, spoléhám na tebe, že mi poradíš. Smile Nepotřebuji prakticky nic jiného než ty jsi potřeboval u bota pro Letterii - rozpoznání statického textu z okna a posílání eventů myši do okna.
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
micky



Založen: 28. 02. 2008
Příspěvky: 348
Bydliště: Plzeň, Praha

PříspěvekZaslal: 15. leden 2014, 13:40:04    Předmět: Odpovědět s citátem

Něco takového jsem kdysi dělal... Ke čtení jsem používal winapi (C/C++), dostal jsem pak "raw" data. Ke změně pozice kurzoru taky winapi, kliknutí jsem ale nechával až na uživateli.Smile Nebylo to zase tak těžké - pokud chceš, můžu ti někde nasdílet tuhle část kódu.
_________________
https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Mem



Založen: 28. 07. 2007
Příspěvky: 1959
Bydliště: Olomouc

PříspěvekZaslal: 17. leden 2014, 08:46:24    Předmět: Odpovědět s citátem

Jo já takových botů dělal víc... Jak u Letterie tak třeba u RuneScape jsem snímal okno klienta do bitmapy a pak si tam analyzoval, co bylo třeba. Žádné pokročilé OCR to ale nebylo, jen předzpracování na úrovni pixelů (většinou převedení na ČB, abych nemusel řešit odstíny) a porovnání s předuloženým vzorkem (typy písem v Letterii, typy textů v RuneScape - tam jsem totiž posouval kurzor po krocích po celé obrazovce a kontroloval tooltip. Když byl třeba Attack, Take nebo Bury, tak jsem začal klikat Wink).

Na screenshoty jsem používal klasické WinAPI (GetWindowDC, BitBlt), na práci s kurzorem a okny taky (WindowFromPoint, Keybd_Event, mouse_event - ten vlastně používám doteď i v C#, i když kurzor už nastavuju přes System.Windows.Forms.Cursor.Position)

Jinak u RuneScape nebo WoW jsem měl i autologin, protože hra často vypadávala. Tam jsem myslím detekoval class nebo titulek okna a když to byl login screen, tak buď podle ID nebo odpočítáváním přes TABy trefil políčka a vyplnil tam username a password a vyčkával, jestli došlo ke změně. Když ne (např. server byl přetížený), opakoval jsem to. Díky tomu mohl klient běžet autonomně a hezky farmil Smile.

Nějakou detekci obrazu mám myslím i ve WebMapSaveru (utilita pro hromadné interaktivní ukládání webových map, např. od Seznamu, která posouvá výřez mapy tažením myši).

Všechno to ale byly takové humpolácké metody hrubou silou, nemusela by být špatná nějaká knihovna na detekci obrazu nebo u 3D her technika používaná u aimbotů, vyčíslení objektů scény. Budu rád, pokud se potom podělíš o svoje zkušenosti Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Houp



Založen: 28. 07. 2007
Příspěvky: 672

PříspěvekZaslal: 17. leden 2014, 18:02:10    Předmět: Odpovědět s citátem

micky: pokud se tu chceš podělit i s ostatními, tak to určitě zde nebude na škodu. Já se zatím budu pokoušet najít nějaké řešení spíš pro C#/Javu

Mem: dík za info. Já konkrétně chci zkusit bota do Might and Magic: Duels of champions. Co jsem zatím našel, tak do té hry jsou jen vyloženě primitivní boti, kteří jen zkouší zahrát jakoukoli kartu, neřeší vůbec, co je na obrazovce.
_________________
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Vilem Otte



Založen: 18. 09. 2007
Příspěvky: 462
Bydliště: Znojmo - Sedlesovice, Kravi Hora

PříspěvekZaslal: 18. leden 2014, 14:59:57    Předmět: Odpovědět s citátem

Pro detekci objektů teoreticky můžeš použít např. OpenCV (i ve hrách by měl detekovat (a na herních snímcích detekuje) obličeje, postavy, apod.). Navíc běží teď i pod CUDA/OpenCL, takže bys to teoreticky měl zvládnout dostatečně rychle.
_________________
Should array indices start at 0 or 1? My compromise of 0.5 was rejected without, I thought, proper consideration.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovi WWW stránky
micky



Založen: 28. 02. 2008
Příspěvky: 348
Bydliště: Plzeň, Praha

PříspěvekZaslal: 20. leden 2014, 15:26:48    Předmět: Odpovědět s citátem

Tedy fragment kódu pro udělání screenshotu:

http://pastebin.com/MKhNTX1f

Je to jen inicializace + provedení, typy proměnných viz MSDN podle volaných funkcí winapi.Wink Nebere fullscreen.

Zkoušel jsem s tím napsat color aimbot, to byla relativně zábava.Smile No a potom jsem nechal program učit se hrát hru QWOP (genetické algoritmy + čtení obrazu + tesseract pro rozpoznání počtu uběhnutých metrů).[/code]
_________________
https://www.bluepulsar.cz/
https://twitter.com/11thDream_Game/
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> AI Časy uváděny v GMT + 1 hodina
Strana 1 z 1

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna