Ada artikel yang sangat menarik tentang masalah ini di Gamasutra: Kesalahan Cerdas: Cara Memasukkan Kebodohan ke Kode AI Anda , oleh Mick West.
Artikel ini membahas tentang AI permainan biliar. Saat menerapkan AI seperti itu, cukup mudah untuk membuatnya membuat bola di setiap pemotretan. Cara sederhana untuk membuat AI kurang "pintar" adalah, seperti yang disarankan pada jawaban lain, untuk menambahkan faktor acak ke dalam perhitungan, membuat AI kehilangan lebih banyak.
Tetapi ada dua kelemahan utama dengan pendekatan seperti itu. Pertama, itu tidak dapat diprediksi. Untuk pemain yang bermain dalam mode "Mudah", tidak dapat diterima bahwa AI mendapat "keberuntungan". Bagaimana jika faktor acak Anda membuat AI melakukan tembakan yang lebih baik, memukul bola yang lebih berharga, atau melakukan kombo? Anda tidak tahu apa yang akan terjadi, dan menjadi beruntung seharusnya tidak menjadi pilihan untuk AI dalam mode mudah.
Kelemahan lainnya adalah bahwa pemain akan mencoba mengidentifikasi pola dalam perilaku AI. Dan dengan faktor acak sederhana, tidak ada pola. Tapi itu tidak berarti pemain tidak akan melihat pola apa pun, justru sebaliknya, pada kenyataannya. Begitu AI mendapat keberuntungan, pemain akan melihat strategi dalam perilakunya. Dalam artikel tersebut, para pemain mengeluh tentang AI memainkan strategi posisi. Ketika hanya ada faktor acak dalam presisi sudut .
Dari sudut pandang saya, setelah membaca artikel yang membuka mata ini, AI yang tidak sempurna tidak boleh menggunakan pengacakan sebagai faktor penyederhanaan. Justru sebaliknya. AI yang lebih mudah seharusnya lebih pintar, tetapi berusaha membantu pemain.
Dalam contoh artikel game Pool, opsi terbaik untuk menerapkan "mode mudah" AI sebenarnya adalah untuk menghapus semua faktor acak, dan untuk menambahkan strategi penentuan posisi. AI akan mencoba untuk memukul bola untuk mempersiapkan tembakan yang mudah dan luar biasa untuk pemain .
Dengan cara ini, pemain akan berpikir dia beruntung. Dan itulah yang Anda harapkan dari sebuah game saat bermain dengan mudah.
Konsep kuncinya adalah menghindari memberi NPC "pengetahuan sempurna".
Saya yakin ada banyak lagi contoh yang akan diberikan, mungkin Anda bisa memberi tahu kami tentang permainan Anda dan kami bisa mendapatkan lebih spesifik :-)
sumber
Salah satu cara cepat untuk membuat AI yang sempurna dapat dilawan adalah dengan membuatnya membuat keputusan yang tidak sempurna dengan menambahkan beberapa 'noise' ke input atau outputnya. Kebisingan yang saya maksudkan adalah beberapa faktor acak.
Berikut ini contoh kecil untuk keluaran:
Berikut adalah beberapa ide untuk masukan:
Satu hal yang jelas untuk dipertimbangkan adalah kecepatan AI. Dalam sebagian besar game, AI dapat bereaksi JAUH lebih cepat dari manusia (terutama dalam pertempuran) dan melakukan multitasking (sangat terlihat dalam game RTS). Jadi Anda harus menindaklanjutinya, dengan menjaga AI agak lambat (mungkin secara adaptif), dan membatasi jumlah hal yang dapat dilakukan dalam kerangka waktu yang ditentukan (yaitu satu tindakan setiap setengah detik).
Semoga ini bisa membantu, dan semoga berhasil!
sumber
Sulit untuk memberikan jawaban langsung yang bermanfaat tanpa mengetahui apa yang sebenarnya Anda coba lakukan.
Ada dua hal yang ingin saya katakan tentang masalah ini yang mungkin bisa membantu Anda.
Hal pertama (dan sejauh ini yang paling penting), jika Anda mencoba membuat musuh merasa lebih menarik dan manusiawi maka taktik tempur Anda tidak relevan. Trik untuk membuat pemain "percaya" musuh masih hidup adalah dengan menggunakan animasi, suara, dan detail kecil untuk menyiratkan perilaku manusia. AI yang sempurna mungkin berjalan di sudut, melihat pemain, dan menembak. Seorang manusia AI mungkin berjalan di sudut, melihat pemain, memiliki ekspresi terkejut di wajahnya dan berteriak kaget, dan menembak. Yang pertama sepertinya robot. Yang kedua tampaknya manusia. Keduanya menggunakan AI yang identik dalam segala hal, selain penyisipan animasi sebelum pemotretan (atau, untuk menjaga perilaku taktis tetap sama, selama pemotretan).
Kedua, hindari mengacak. Pemain tidak menghargainya seperti yang diinginkan oleh desainer. Pemain tidak melihat "komputer menghasilkan 1 dari 100, diikuti oleh 5, 3, dan 4, sehingga faktor kesalahan untuk empat tembakan terakhir hanya 1%, 5%, 3%, dan 4%, dan itu mengapa Anda mati dalam setengah detik babak ini. " Para pemain hanya melihat musuh yang kadang kala meleset dan kadang-kadang memakukannya berulang kali tanpa alasan yang jelas, yang membuat frustrasi. Desain permainan yang baik sebagian besar tentang membangun pola yang dapat dilakukan oleh pemain manusiamengamati, belajar, dan mengalahkan, dan membuat kesuksesan pemain berdasarkan penilaiannya sendiri dan keterampilan dan intuisi daripada membuatnya tentang apakah pemain beruntung. Keinginan untuk mengacak berasal dari pengalaman dengan permainan di atas meja dan permainan judi, yang keduanya merupakan media yang sangat berbeda dari video game (dan apa yang bekerja dalam satu media sering tidak masuk akal di media lain).
sumber
Saya ingat di kursus AI kami di kampus ada sebuah topik tentang membuat AI lebih "manusia" dan kurang sempurna. Itu bertahun-tahun yang lalu jadi saya hanya ingat beberapa poin dari pikiran saya.
Tentu saja ini hanya saran umum yang harus dipelajari dan diuji coba untuk setiap kasus, dan mungkin memang membuat AI Anda terlihat lebih buatan daripada yang dimaksudkan. Namun saya pikir mereka adalah titik awal yang baik.
sumber
Saya baru saja melihat ini muncul dan ingin berbagi ide yang saya gunakan di masa lalu.
Katakanlah karakter memiliki tiga gerakan dan masing-masing diberi skor, skor yang lebih tinggi adalah langkah yang lebih baik. (Jawaban lain berbicara tentang menambahkan noise untuk membuat skor ini.)
Jumlahkan total poin (100)
Keluarkan stat intelijen karakter dari nilai maksimum yang mungkin untuk stat ini (katakanlah 60 dari 100).
Hasilkan angka acak antara 0 (atau beberapa lantai lainnya) dan rasio kecerdasan (0,6), kalikan dengan total poin (100). Dalam contoh kita, katakanlah hasilnya adalah 45.
Sekarang Anda mulai mengurangi pergerakan buruk dari nilai ini sampai Anda mencapai nol. (Kurangi urutan.)
Pertama, kami mempertimbangkan mantra Ice, yang mendapat skor 20. 45 - 20 = 25. Ini di atas nol, jadi kami membuang mantra Ice.
Kedua, lihat Serangan dengan pedang, bernilai 30 poin. 25 - 30 = -5. Kami mencapai ambang batas kami, jadi kami memilih Serangan dengan aksi pedang.
Dalam sistem ini, karakter dengan kecerdasan rendah tidak akan mengambil langkah terbaik. Dan karakter dengan kecerdasan tinggi akan sering mengambil langkah terbaik. (Dalam contoh ini, karakter dengan kecerdasan sempurna mengambil langkah terbaik 50% dari waktu.)
Menambahkan mekanisme lantai ke nomor acak akan meningkatkan kemungkinan langkah yang lebih baik dipilih.
sumber