Bagaimana pandangan bot game terhadap dunia game & entitas lain?


52

Pertanyaan ini telah ada di pikiran saya untuk sementara waktu ... terutama karena saya melihat bot untuk semua jenis permainan seperti WoW dan lainnya. Pertanyaanku adalah; bagaimana bot tahu apa yang muncul di layar? Saya tidak bermain WoW jadi contoh saya mungkin salah tetapi jika misalnya ada monster, bagaimana bot tahu di mana monster itu ada di layar dan bagaimana ia tahu bagaimana berinteraksi dengannya?

Bisakah Anda menerapkan ini pada game apa pun atau spesifik untuk setiap game? Saya minta maaf jika pertanyaannya tidak jelas ... dan saya tidak bertanya bagaimana membuat bot, lebih bertanya bagaimana mereka mendeteksi sesuatu di layar sebagai hal yang cukup menarik bagi saya!

Terima kasih sebelumnya :)


14
Sebagian besar waktu, bot ini terhubung ke memori permainan dan langsung membaca posisi elemen permainan, alih-alih mencoba memahami apa yang ada di layar.
Alexandre Desbiens

2
Aceboy1993, apakah Anda seorang programmer? Harap edit pertanyaan dan beri tahu kami. Jawabannya mungkin perlu dilakukan sedikit berbeda, tergantung pada itu.
Panzercrisis

3
Hanya untuk memperjelas; Anda sedang berbicara tentang otomatisasi gameplay yang tidak terpasang, bukan? Bot pertanian emas, aimbot, dan semacamnya? Atau maksud Anda hanya pemain AI?
Anko

Hai, saya seorang programmer. Ya saya sedang berbicara tentang bot pertanian emas dan bot tujuan tetapi saya juga tertarik pada pemain AI :)
TheRapture87

3
@ Aceboy1993 Menutup keduanya akan membuat pertanyaan ini terlalu luas. Tolong pisahkan mereka.
Mast

Jawaban:


77

Ada banyak titik di mana bot bisa menyuntikkan dirinya ke dalam gim.

  • Layar adalah salah satunya, tetapi sejauh ini bukan yang paling berguna. Namun, saya pernah melihat aimbot yang sangat awal untuk Counter Strike yang menggunakan kode warna. Itu datang dengan model karakter alternatif dengan tekstur satu warna (permainan mod-friendly cukup untuk memungkinkan ini) dan kemudian hanya mendeteksi piksel dari warna-warna itu. Namun, bukan metode yang sangat efektif. Itu sudah cukup kikuk saat itu, dan menjadi kurang dan kurang layak karena mesin grafis menjadi lebih dan lebih kuat, yang berarti semakin detail untuk membingungkan algoritma pengenalan optik.

  • Poin lainnya adalah membaca memori secara langsung [1] . Dimungkinkan untuk memiliki satu program di komputer Anda membaca memori yang lain. Jadi pengembang hanya perlu mencari tahu di mana memori alamat permainan menyimpan informasi yang relevan dengan bot. Ada alat yang membantu pengembang menemukan apa yang mereka inginkan dengan membuat gambar memori dan menyediakan berbagai alat pencarian. Penanggulangannya adalah dengan menggunakan pengacakan tata letak alamat, tetapi bot pintar mungkin masih dapat menemukan apa yang mereka cari secara otomatis.

  • Dimungkinkan untuk memodifikasi game executable itu sendiri. Untuk melakukan ini, pengembang bot harus dapat membaca dan memprogram assembler, yang tidak sulit dengan beberapa latihan. Mereka kemudian mencari kode yang menangani informasi yang mereka minati dan menulis ulang untuk meneruskannya ke bot mereka. Sebuah langkah pencegahan yang mungkin dari perspektif pengembang game adalah menggunakan obfuscator untuk membuat kode assembler game kurang mudah dibaca, tetapi ini biasanya tidak baik untuk kinerja dan ada alat untuk banyak obfuscator yang membalikkan pekerjaan mereka.

  • Dan kemudian ada netcode. Dalam game online, server mengirimkan properti dan posisi semua objek dalam game melalui jaringan. Aliran data jaringan antara server dan klien dapat dicegat dan dianalisis. Alat populer untuk melakukan ini adalah wireshark. Saat pengembang merekayasa balik netcode, mereka dapat menulis bot yang memotong lalu lintas jaringan seperti yang dilakukan Wireshark dan menggunakan informasi tersebut untuk mengambil keputusan. Ketika pengembang lebih termotivasi, mereka bahkan dapat mengembangkan klien game lengkap dari awal yang mengimplementasikan protokol jaringan dan memainkan game tanpa memiliki output grafis. Bot seperti itu sangat populer di kalangan petani emas karena tanpa output grafis klien biasanya jauh lebih ramah sumber daya, yang berarti mereka dapat menjalankan banyak dari mereka sekaligus di server kecil.


1: Karena Anda menyebutkan WoW, ada baiknya menunjukkan bahwa program pembotolan WoWGlider awal dan terkenal menggunakan akses memori langsung. Blizzard memiliki subprogram bernama Warden yang dirancang untuk mendeteksi dan memblokir program luar agar tidak mengakses kondisi permainan internal WoW. Karena program bot menghindari perlindungan ini dan membaca memori tanpa izin, gugatan 2006 MDY v Blizzard diputuskan mendukung Blizzard dengan alasan bahwa pembuat bot mendorong dan memungkinkan penggunanya untuk melakukan pelanggaran hak cipta dan melanggar DMCA .


Komentar bukan untuk diskusi panjang; percakapan ini telah dipindahkan ke obrolan .
Josh

18

Bot adalah pemain. Mereka hanya membaca posisi pemain / monster dari server sama seperti yang dilakukan pemain lain dan menggunakan nilai-nilai tersebut dikombinasikan dengan skrip AI sederhana untuk melakukan tindakan dalam permainan dengan mensimulasikan ketukan keyboard dan klik mouse secara terprogram. Jika bot benar-benar memiliki algoritma untuk mendeteksi monster apa yang ada di layar dan berinteraksi dengannya, itu akan menjadi perangkat lunak yang cukup mengesankan yang akan bernilai jutaan. Itu pada dasarnya AI untuk robot.


2
Lebih mudah untuk melakukan pengecekan oklusi dan pengecoran sinar untuk memeriksa apakah bot akan melihat monster dan kemudian menggunakan negara animasi untuk memeriksa apa yang dilakukan monster.
ratchet freak

Untuk melakukan itu, Anda harus membalik permainan, menerapkan ray casting dan juga membaca keadaan animasi monster, yang akan memerlukan kode injeksi dan memodifikasi .exe. Bagaimana ini lebih sederhana daripada membaca paket jaringan yang Anda terima dari server (menggunakan wireshark seperti yang disarankan Phillip) dan kemudian hanya memiliki skrip AI untuk mensimulasikan tindakan keyboard / mouse, berdasarkan paket jaringan?
dimitris93

2
Saya mengasumsikan bot "lawan AI" daripada bot klien modded.
ratchet freak

3
@ scratchetfreak Oh sekarang masuk akal. Referensi WoW dalam pertanyaan sebenarnya menyiratkan bahwa "bot" pada dasarnya adalah petani emas, bukan lawan AI.
dimitris93

7

Phillip sudah memberikan tinjauan yang luar biasa tentang bagaimana sebagian besar bot beroperasi, tetapi saya hanya ingin membahas beberapa hal dengan lebih detail, karena saya memiliki sedikit pengalaman pribadi yang berkembang pada atau untuk semua jenis bot yang dia bahas.

Di Runescape, ada sebuah proyek besar (RSBot) yang akan menyalin isi memori dari klien Runescape ke dalam memori lokalnya, di mana ia kemudian dapat melihat seluruh keadaan permainan tanpa ada risiko klien menangkapnya. Dibutuhkan sedikit rekayasa terbalik untuk menentukan di mana dalam memori untuk mencari untuk menemukan pointer ke data, tetapi begitu mereka melakukannya, mereka membuka API untuk mengambil keuntungan dari informasi. Itu akan tahu persis apa yang ada di dunia dengan mendapatkan koordinat suatu objek dan kemudian mengubahnya dengan matriks transformasi kamera untuk mendapatkan posisi di layar. Topeng hit juga dapat dibaca, jadi sepele untuk menentukan dengan tepat berapa kisaran untuk memindahkan mouse ke dalam untuk mendapatkan hasil yang diinginkan.

Bot menyediakan banyak informasi debug, seperti anotasi yang memberitahu pengembang koordinat genteng mana, ID mana yang dimiliki objek ini, ID apa yang dimiliki item yang diberikan, dll. Informasi ini kemudian dapat digunakan untuk membuat bot. Proses pembuatan skrip bot sebenarnya sebenarnya cukup sederhana. Kerangka kerja ini menyediakan banyak fungsi utilitas, seperti move_to(world_coordinates)atau mouse_move(x,y)yang akan melakukan tindakan yang ditentukan dengan cara yang agak dapat dipercaya (menggerakkan mouse di sepanjang spline acak, berulang kali bergerak melalui minimap dan layar, dan sebagainya)

Juga di Runescape, Anda memiliki opsi untuk secara drastis mengurangi kualitas gambar. Sebenarnya cukup mudah untuk membuat bot jenis tertentu dengan memfilmkan layar dan menerapkan beberapa konsep visi komputer dasar untuk membangun model dunia. Saya membuat bot kutukan dan bot peleburan menggunakan teknik ini, yang keduanya bekerja cukup baik. Itu hanya akan mengambil bingkai, meningkatkan saturasi sebanyak mungkin, dan kemudian mencoba untuk mengekstrak pola dari itu yang kemudian dapat menghasilkan peta probabilitas untuk zona klik.

Dalam kasus bot kutukan, targetnya adalah iblis yang lebih rendah, yang hanya merupakan benda merah besar, yang sepele untuk ditemukan. Dalam kasus peleburan bot, ia akan mencari trapesium oranye kecil yang dikelilingi oleh abu-abu, dan itu akan menjadi tungku. Itu juga akan mencoba untuk menemukan bentuk besar, abu-abu 'L', yang akan menjadi meja bank. Itu hanya dilakukan dengan downscaling dan heuristik dasar. Itu juga bisa mengarahkan dirinya dengan kompas yang berguna di sebelah minimap, sehingga bisa mengarahkan kamera pada posisi yang lebih dapat diandalkan untuk menemukan objek target.

Di berbagai game Nexon, server sangat mempercayai klien. Saya menyalahgunakan ini satu ton di Maplestory dengan memodifikasi peta untuk menghilangkan bahaya atau menambahkan warps sehingga bot tidak harus hampir sama canggihnya. Saya juga akan memonitor lalu lintas ke dan dari server untuk membangun model dunia yang kemudian dapat digunakan untuk dengan cepat menemukan dan membunuh monster.

Setelah saya menyadari bahwa saya tidak benar-benar memainkan MMO lagi dan hanya mengotomatiskannya, saya memutuskan untuk berhenti bermain sama sekali. Jika saya tidak khawatir mengekspos diri secara legal, saya mungkin bisa melakukan pembunuhan dengan menjual bot MMO, tetapi saya benar-benar tidak ingin digugat. Itu sebabnya saya menghabiskan waktu saya melakukan pemrograman nyata hari ini!


Amin di paragraf terakhir itu. Saya menemukan pemrograman dengan 1) bermain WoW 2) botting WoW 3) mulai menulis bot saya sendiri untuk WoW. Pengetahuan pemrograman yang saya peroleh hanya dalam 2 tahun lebih berharga daripada apa pun yang saya pelajari saat belajar (setidaknya, setidaknya untuk pemrograman 'praktis').
Sebastian Graf

2

Jawaban Phillip bagus, tetapi hanya catatan singkat tentang pola Model / View / Controller , atau singkatnya MVC.

Layar Anda adalah bagian dari "tampilan", yang menyajikan data dari "model", yang merupakan keadaan sebenarnya dari permainan jika Anda mau. Bot, dan karakter Anda, semua 'ada' (dalam arti tertentu) dalam model. Bayangkan jika Anda mencabut layar Anda - permainan akan terus berlanjut meskipun tampilan telah hilang.

Dalam gim berjejaring, konsep "model" sedikit rumit, karena Anda sebenarnya memiliki banyak model. Anda memiliki model di server, dan kemudian model di setiap klien, yang memperbarui sendiri sebagian karena data yang diterimanya dari server. Anda dapat menganggap "model" sebagai meliputi model server dan model klien Anda, atau Anda dapat menganggapnya sebagai hanya model klien Anda sendiri. Either way, ini adalah tempat bot tinggal. Jadi, "persepsi" mereka, yang dapat kita gunakan sebagai singkatan untuk input dan status data mereka, didasarkan pada keadaan model pada waktu itu dan interaksi antara entitas / objek yang berbeda dalam model itu. Dalam praktiknya, setiap bot mungkin memiliki fungsi yang disebut "refreshState" yang berjalan sekali per frame atau sesuatu, dan yang menyebabkannya memperbaruinya '


0

Mereka dapat membaca coords dari file atau server tetapi juga dengan sistem deteksi tabrakan sinar. Adalah umum untuk menggunakan sinar yang bergerak dari bot (dalam kasus itu) ke luarnya. Jika ray bertabrakan dengan sesuatu maka ia mengembalikan beberapa informasi ke bot seperti jika apa yang ditemukan ray adalah pemain, bot, binatang atau dinding sederhana. Itu karena dalam kasus pemain dan bot misalnya mereka memiliki kapsul tak terlihat yang melibatkan mereka sepenuhnya dengan informasi tentang jenisnya misalnya (manusia, bot, ...). Dengan itu mereka dapat menghindari menabrak dinding dan elemnts lainnya jika mereka mengikuti Anda misalnya.

Anda dapat melihat bagian Pendeteksian tabrakan dari Halaman ini


Itu akan mengharuskan Anda untuk menyuntikkan kode ke gim yang sebenarnya
dimitris93

Ya tentu saja. Semuanya diprogram tetapi berguna untuk jalur gratis atau kasus seperti bot mengikuti Anda dan seterusnya. Dalam game 3D adalah cara paling umum AFAIK dan telah mempelajari setidaknya satu yang tidak mmorp ... mungkin wow memiliki semua informasi di server tetapi berbeda dengan mmorpnya yang besar.
Megasa3
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.