Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Game Development
  2. Artificial Intelligence
Gamedevelopment

Buat AI Permainan Hoki Menggunakan Kelakuan Berkendara: Menyerang

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called Create AI for a Hockey Game Using Steering Behaviors.
Create a Hockey Game AI Using Steering Behaviors: Foundation
Create a Hockey Game AI Using Steering Behaviors: Defense

Malay (Melayu) translation by Aeni Amalia (you can also view the original English article)

Dalam tutorial ini, kami meneruskan pengekodan kecerdasan buatan untuk permainan hoki menggunakan kelakuan stereng dan mesin negara terhingga.Dalam bahagian ini, anda akan belajar tentang AI (Kecerdasan Buatan) yang diperlukan oleh entiti permainan untuk menyelaraskan serangan, yang melibatkan mempertahankan dan membawa hock (pai) ke matlamat lawan. 

Beberapa Perkataan Mengenai Penyerang

Menyelaras dan mengendalikan serangan dalam permainan sukan koperasi adalah tugas yang sangat rumit. Di dunia nyata, apabila manusia bermain permainan hoki, mereka membuat keputusan berdasarkan banyak pemboleh ubah. 

Keputusan itu melibatkan pengiraan dan pemahaman apa yang sedang berlaku.Seorang manusia boleh tahu mengapa lawan bergerak berdasarkan tindakan lawan yang lain, sebagai contoh, "dia bergerak ke kedudukan yang lebih baik." Ia tidak mudah untuk melaksanakannya dalam komputer.

Akibatnya, jika kita mencuba kod AI untuk mengikuti semua nuansa dan persepsi manusia, hasilnya akan menjadi tumpuan kod yang besar dan menyeramkan. Di samping itu, hasilnya mungkin tidak betul atau diubah suai dengan mudah.

Inilah sebab mengapa serangan AI kita akan cuba meniru hasil dari sekumpulan manusia yang bermain, bukan persepsi manusia itu sendiri.  Pendekatan itu akan membawa kepada penghampiran, tetapi kod itu akan lebih mudah dipahami dan ditapis. Hasilnya baik untuk beberapa kes penggunaan.

Penganjur Menyerang Dengan Kedudukan

Kami akan membahagikan prosa serangan ke dalam beberapa bahagian, masing-masing dengan tindakan yang sangat spesifik. Bahagian itu adalah kedudukan mesin negeri terhingga berdasarkan timbunan.  Seperti yang dijelaskan sebelum ini , setiap kedudukan akan menghasilkan daya stereng yang akan membuat atlet melakukan perkara yang betul.

Perancangan kedudukan dan syarat-syarat pertukaran di antara mereka akan menentukan serangan itu. Imej di bawah menunjukkan FSM penuh yang digunakan dalam proses ini:

Mesin berasaskan data menetapkan timbunan yang mewakili proses serangan.

Seperti yang ditunjukkan dalam angka, syarat-syarat untuk peralihan antara jawatan akan berdasarkan jarak dan pemilikan keping. Sebagai contoh, apabila tim memiliki puck atau puck yang berada terlalu jauh

Serangan itu akan terdiri daripada empat jawatan,idleattack (menyerang) , stealPuck (merebut Puck) , dan pursuePuck (Mengejar ) . Kedudukan idle telah dilaksanakan dalam tutorial sebelumnya , dan ini adalah titik permulaan proses. Dari sana, seorang atlet akan beralih ke attack jika pasukan itu mempunyai keping, dan menyerang jika pasukan lawan mempunyai keping, atau akan memburu. puck memburu. puck jika tiada siapa yang memiliki puck-nya dan cukup dekat untuk mendapatkannya.

kedudukan attack adalah gerakan yang menyinggung perasaan. Ketika berada di posisi itu, atlet yang membawa puck (dipanggil leader ) akan berusaha mencapai matlamat lawan. Rakan sepasukan akan bergerak, cuba menyokong tindakan itu.

Kedudukan stealPuck merupakan galas antara pergerakan pertahanan dan serangan.  Dalam kedudukan ini, seorang atlet akan memberi tumpuan kepada mengejar lawan yang membawa kepalanya. Matlamatnya adalah mengembalikan keping, jadi pasukan itu dapat menyerang lagi.

Pada akhirnya, kedudukan persuePuck tidak berkaitan dengan serangan atau pertahanan; ia hanya akan membimbing atlet apabila puck tidak memiliki pemiliknya. Ketika berada di posisi itu, seorang atlet akan cuba mendapatkan puck yang bergerak bebas di arena (contohnya, setelah terkena tongkat seseorang).

Mengemas kini Status Idle (siap sedia)

Kedudukan idle sebelum ini tidak mempunyai peralihan. Memandangkan ini adalah titik permulaan untuk keseluruhan AI, marilah kita mengemaskini dan membuatnya bergerak ke kedudukan lain.

Kedudukan idle mempunyai tiga peralihan:

Status dan peralihan terbiar dalam FSM menggambarkan proses serangan.

Sekiranya pasukan atlet mempunyai puck, idle mesti keluar dari otak dan serangan mesti dilakukan. Begitu juga, jika pasukan lawan mempunyai puck, idle mesti diganti dengan stealPuck (merebut keping).  Peralihan yang tinggal berlaku apabila tiada seorang pun mempunyai keping dan dekat dengan atlet;Dalam kes ini, persuePuck cuba untuk ditolak ke dalam otak.

Versi terbaharu adalah seperti berikut (jawatan lain akan dilaksanakan kemudian):

Mari kita meneruskan pelaksanaan jawatan lain.

Mengejar Puck

Sekarang para atlet telah mendapat persepsi tentang persekitaran dan boleh bergerak dari posisi idle ke posisi apa pun, beri tumpuan untuk mengejar puck ketika tidak memiliki pemilik.

Seorang atlet akan beralih ke pursuePuck untuk tidak lama selepas permainan bermula, kerana puck akan diletakkan di tengah arena tanpa pemilik. Posisi pursuePuck (mengejar Puck) mempunyai tiga peralihan:

Posisi mengejar (mengejar puck) dan peralihannya dalam FSM menggambarkan proses serangan.

Peralihan pertama puck yang terlalu jauh (puck is too far away) , dan cuba untuk meniru apa yang berlaku dalam permainan sebenar tentang mengejar keping itu. Atas sebab-sebab yang strategik, biasanya atlet yang paling dekat dengan puck cuba menangkapnya, sementara yang lain menunggu atau cuba membantu.

Tanpa beralih kepada idle sedia idle apabila keping jauh, setiap atlet terkawal AI akan mengejar keping pada masa yang sama, walaupun mereka jauh dari situ. Dengan memeriksa jarak antara atlet dan kepalanya, pursuePuck keluar dari otak dan menolaknya ke dalam idle siap sedia kerana kepalanya terlalu jauh, yang bermaksud atlet "menyerah" mengejar kepalanya:

Apabila kepaak sudah dekat, atlet mesti mengejarnya, yang dapat dicapai dengan mudah oleh tingkah laku . Dengan menggunakan kedudukan puck sebagai destinasi carian, atlet akan dengan anggunnya mengejar pucknya dan menyesuaikan trajektorinya apabila bergerak puck:

Dua peralihan yang tersisa dalam posisi persuePuck tim memiliki puck (team has puck) dan awan memiliki puck (opponent has the puck l awan memiliki puck (opponent has the puck , dikaitkan dengan keping yang ditangkap dalam proses). Jika seseorang menangkap cip, atlet mesti membawa posisi persuePuck dan mendorong yang baru ke otak.

kedudukan yang didorong bergantung kepada pemilikan keping. Sekiranya panggilan untuk melakukan doesMyTeamHaveThePuck () kembali true , ia bermakna rakan sepasukan mendapat keping, jadi atlet harus menolak serangan , yang bermakna sudah tiba masanya untuk berhenti mengejar puck dan mula bergerak ke arah sasaran pihak lawan.  Sekiranya lawan mendapat puck, atlet mesti menolak stealPuck , yang akan membuat pasukan cuba mengembalikan keping itu.

Sebagai peningkatan kecil, atlet tidak sepatutnya saling dekat satu sama lain semasa pursuePuck , kerana pergerakan mengejar "sesak" tidak adil. Menambah pemisahan kepada kedudukan daya stereng (baris dalam kod di atas) memastikan atlet akan menyimpan jarak minimum di antara mereka.

Hasilnya adalah satu pasukan yang mampu mengejar kepalanya. Demi ujian, dalam demo ini, puck diletakkan di tengah arena setiap beberapa saat, untuk memastikan atlet bergerak:

Serang Dengan Puck

Selepas mendapat keping, seorang atlet dan pasukannya mesti bergerak ke arah matlamat lawan untuk mencetak gol. Itulah tujuan serangan :

Status serangan dan peralihannya di FSM menggambarkan proses serangan

Kedudukan menyerang (attack) hanya mempunyai dua peralihan: lawan memiliki puck dan puck tidak memiliki pemilik . Oleh kerana kedudukan itu direka sepenuhnya untuk mendapatkan atlet untuk bergerak ke arah matlamat lawan, tidak ada titik tinggal menyerang jika kepingnya tidak berada di bawah pemilikan pasukan itu lagi.

Mengenai pergerakan ke arah matlamat lawan: atlet carrier puck (pemimpin) dan rakan sepasukan yang membantunya perlu bersikap berbeza. Pemimpin mesti mencapai matlamat lawan, dan rakan sepasukan harus membantu dia di sepanjang jalan.

Ini boleh dilaksanakan dengan memeriksa sama ada atlet yang menjalankan kod tersebut mempunyai keping:

Jika amIThePuckOwner () memberikan true (baris 10), atlet yang menjalankan kod tersebut mempunyai keping. Dalam kes ini, dia hanya akan mencari kedudukan matlamat lawan. Banyak banyak logik yang sama digunakan untuk mengejar kepuasan pers persetubuhan

Sekiranya amIThePuckOwner () memberikan nilai yang false , atlet tidak mempunyai keping, jadi dia mesti membantu pemimpinnya (pemimpin).Membantu pemimpin adalah tugas rumit, jadi kami akan memudahkannya.Seorang atlet akan membantu pemimpin hanya dengan mencari kedudukan di hadapannya:

Rakan sekerja membantu pemimpin (pemimpin).

Apabila pemimpin bergerak, dia akan dikelilingi oleh rakan sepasukan kerana mereka mengikuti terdepan .  Ini memberi pemimpin beberapa pilihan untuk lulus puck jika ada masalah. Seperti dalam permainan sebenar, rakan sepasukannya di sekelilingnya juga mesti tidak terlepas.

Corak bantuan ini dapat dicapai dengan menambah sedikit pengubahsuaian versi pemimpin mengikuti perilaku (baris 18). Satu-satunya perbezaan adalah bahawa atlet akan mengikuti satu titik di hadapan pemimpin, bukan yang di belakangnya kerana ia pada asalnya digunakan dalam tingkah laku itu.

Atlet yang membantu para pemimpin juga harus menjaga jarak minimum antara satu sama lain. Ia dilaksanakan dengan menambah gaya pemisah (garisan 19).

Hasilnya adalah satu pasukan yang mampu bergerak ke arah gawang lawan, tanpa berkerumun dan ketika meniru gerak serangan dibantu:

Meningkatkan Serangan Sokongan

Pelaksanaan adalah attack lalai semasa adalah cukup baik untuk beberapa situasi, tetapi mempunyai kekurangan. Apabila seseorang menangkap kepalanya, dia menjadi pemimpin dan segera diikuti oleh rakan sepasukannya.

Apa yang berlaku jika pemimpin bergerak ke jaring sendiri apabila dia menangkap kepalanya? Lihatlah demo di atas dan perhatikan corak yang tidak wajar apabila rakan sepasukan mula mengikuti pemimpin.

Apabila seorang pemimpin menangkap seorang tukang sihir, usaha mencari tingkah laku mengambil masa untuk memperbaiki jalan pemimpin dan dengan berkesannya bergerak ke arah matlamat lawan. Walaupun pemimpin "bergerak", rakan sepasukan akan cuba mencari mata di ahead , yang bermaksud mereka akan bergerak ke arah matlamat mereka sendiri (atau di mana pemimpin itu diketuai).

Apabila pemimpin akhirnya berada di kedudukan dan bersedia untuk bergerak ke arah matlamat lawan, rakan sepasukan akan "bergerak" mengikut pemimpin.Pemimpin kemudian akan bergerak tanpa sokongan rakan sepasukannya selagi yang lain menyesuaikan trajektori mereka.

Kecacatan ini boleh diperbaiki dengan memeriksa sama ada rakan sepasukan berada di hadapan pemimpin apabila pasukan itu pulih. Di sini, keadaan "depan" bermaksud "lebih dekat dengan matlamat lawan":

Jika pemimpin (pemilik puck) berada di hadapan atlet yang menjalankan kod tersebut, maka atlet mesti mengikuti pemimpin seperti yang telah dilakukan sebelum ini (baris 27 dan 28). Jika pemimpin berada di belakangnya, atlet mesti memegang jawatan semasa, menjaga jarak minimum dengan atlet lain (garisan 33).

Hasilnya sedikit lebih meyakinkan daripada pelaksanaan serangan awal:

Petua : Dengan menyesuaikan pengiraan jarak dan perbandingan dengan kaedah isAheadOfMe (), mungkin isAheadOfMe (), cara para atlet memegang kedudukan semasa mereka. 

Ambil Puck

kedudukan terakhir dalam proses penyerang adalah merebut stealPuck ( stealPuck ), yang menjadi aktif ketika tim lawan memiliki keping. Tujuan utama stealpuckk adalah untuk mencuri keping dari lawan yang membawanya, sehingga pasukan dapat mulai menyerang lagi:

Kedudukan mencuri dan peralihannya dalam FSM menggambarkan proses serangan.

Kerana gagasan di sebalik kedudukan ini adalah untuk mencuri keping dari lawan, jika keping dikembalikan oleh pasukan atau menjadi bebas (yaitu tidak memiliki pemilik), stealPuck akan muncul dari otak dan mendorong posisi yang tepat untuk menghadapi situasi baru:

Sekiranya keping mempunyai pemilik dan dia termasuk dalam pasukan lawan, atlet mesti mengejar ketua lawan dan cuba mencuri kepalanya.  Untuk mengejar seorang pemimpin yang menentang, seorang atlet mesti meramalkan di mana dia berada dalam masa terdekat, jadi dia dapat dicegat di landasannya. Ia berbeza dari hanya mencari pemimpin yang menentang.

Nasib baik, ini dapat dicapai dengan mudah melalui tingkah laku (garis 19).Dengan menggunakan kuasa mengejar kedudukan stealPuck , atlet akan cuba memintas pemimpin lawan, bukan hanya mengikutinya:

Mengelakkan Pergerakan Merah yang penuh sesak

pelaksanaan semasa stealPuck kerja-kerja stealPuck , tetapi dalam permainan nyata hanya satu atau dua atlit mendekati pemimpin lawan untuk mencuri kepalanya. Ahli pasukan lain kekal di kawasan kejiranan untuk membantu, yang menghalang corak kecurian yang sesak.

Ini boleh diperbetulkan dengan menambahkan pemeriksaan jarak jauh (garisan 17) sebelum mengejar lawan:

Daripada membabi buta mengejar pemimpin lawan, seorang atlet akan memeriksa sama ada jarak antara dia dengan pemimpin lawan kurang daripada, katakan, 150 . Jika true , mengejar adalah normal, tetapi jika lebih daripada 150 , itu bermakna atlet terlalu jauh dari kepimpinan lawan.

Jika itu berlaku, tidak ada gunanya cuba mencuri kepalanya, kerana ia terlalu jauh dan mungkin terdapat pasangan pasukan yang cuba melakukan perkara yang sama.  Pilihan terbaik adalah untuk mendapatkan stealPuck dari otak dan menolak kedudukan pertahanan (yang akan diterangkan dalam tutorial seterusnya). Buat masa ini, seorang atlet hanya akan memegang jawatan semasa jika pemimpin lawannya terlalu jauh.

Hasilnya adalah corak merampas yang lebih meyakinkan dan semula jadi (tidak berkumpul)

Mengelakkan lawan anda apabila menyerang

Terdapat satu helah terakhir yang harus dipelajari atlet untuk menyerang dengan berkesan. Pada masa ini, mereka bergerak ke arah matlamat lawan tanpa mempertimbangkan lawan di sepanjang jalan. Penentang mesti dilihat sebagai ancaman, dan harus dielakkan.

Dengan menggunakan tingkah laku mengelakkan perlanggaran, atlet dapat mengelakkan lawan apabila mereka bergerak:

Penyingkiran perilaku perlanggaran digunakan untuk mengelakkan lawan.

Lawan akan dilihat sebagai gelung bulat. Hasil daripada sifat dinamik kelakuan stereng, dikemas kini dalam setiap gelang permainan, corak mengelakkan akan berjalan dengan anggun dan lancar untuk menghilangkan halangan (yang berlaku di sini).

Untuk membuat atlet menghindari lawan (halangan), satu baris mesti ditambah ke kedudukan serangan (baris 14):

Garis ini akan menambah daya mengelakkan perlanggaran kepada atlet, yang akan digabungkan dengan kekuatan sedia ada. Akibatnya, atlet akan menghindari halangan sambil mencari gol lawan.

Berikut adalah demonstrasi atlet yang menjalankan kedudukan serangan ( attack ). Lawan tidak bergerak untuk menyerlahkan perlakuan mengelakkan perlanggaran:

Kesimpulannya

Tutorial ini menerangkan penerapan pola serangan yang digunakan oleh atlet untuk merebut dan membawa puck ke arah matlamat lawan. Dengan menggunakan gabungan tingkah laku stereng, atlet kini dapat melakukan corak pergerakan yang kompleks, seperti mengikuti pemimpin atau mengejar lawan dengan keping.

Seperti yang dibincangkan sebelum ini, pelaksanaan serangan itu bertujuan untuk mensimulasikan apa yang manusia lakukan , sehingga hasilnya adalah perkiraan permainan sebenar. Dengan mengutak secara individu dengan bahagian-bahagian yang menyusun serangan itu, anda boleh menghasilkan simulasi yang lebih baik, atau sesuai dengan keperluan anda.

Dalam tutorial seterusnya, anda akan belajar bagaimana membuat atlet bertahan. AI akan menjadi ciri penuh, mampu menyerang dan mempertahankan, mengakibatkan perlawanan dengan 100% pasukan kawalan AI yang bermain dengan satu sama lain.

Rujukan

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.