Kecerdasan Buatan Cakrawala Nihil Fajar: Perilaku Individual

Pada bagian pertama studi AI Horizon Zero Dawn , saya berbicara tentang bagaimana game menciptakan kawanan mesin hewan yang digerakkan AI. Ini membutuhkan sistem hierarki agen yang kompleks, di mana setiap mesin dapat membuat keputusan tentang bagaimana berperilaku menggunakan perencana jaringan tugas hierarkis, dan agen grup bersama-sama menetapkan peran dan tanggung jawab mesin sebagai bagian dari kawanan. Semua ini adalah bagian dari sistem yang disebut "Kolektif" yang mendukung ekosistem semua mesin di dunia ketika pengguna berada dalam permainan.


Pada artikel akhir ini, kita akan melihat lebih dekat pada sistem yang dapat digunakan mesin secara individu sebagai bagian dari perilaku dasar mereka. Mereka termasuk sistem sensor, navigasi untuk mobil darat dan terbang, serta hubungan dekat perilaku AI dengan sistem animasi, yang memberikan setiap mobil dengan berbahaya, tetapi pada saat yang sama perilaku realistis.

Sensor dan gerakan


Pertama, mari kita lihat sensor yang digunakan oleh mesin untuk memicu reaksi AI, dan juga belajar bagaimana animasi terkait dengan keseluruhan proses mengeksekusi perilaku mereka. Mesin dapat menggunakan sejumlah besar sensor unik: sensor visual, misalnya, mata "ksatria" , radar dan sensor keberadaan "striders" , sensor pendengaran yang mengambil suara dari ledakan jauh dan melempar batu ke dekat, serta kemampuan untuk merasakan pemain menyentuh mesin. Setiap mesin memiliki satu set sensor ini, dikalibrasi oleh nilai sensitivitasnya sendiri, sehingga cukup mudah untuk mencapai, misalnya, "ksatria" atau "ruminansia" , tetapi jauh lebih sulit untuk menangkap "dexter" .


Sistem sensor tradisional hanya mampu melacak peristiwa di sekitar AI dan "melihat" / "mendengarnya", tetapi pada kenyataannya sistem sensor memiliki lebih banyak nuansa. Mereka menggunakan paket informasi yang melekat pada objek yang dapat menyebabkan rangsangan pada salah satu sensor mesin: objek tersebut dapat menjadi pemain, NPC lain, batu, panah terbang, mobil lain dan alam. Data ini menginformasikan penerima (mesin yang merasakan sesuatu) informasi tentang apa yang ia temukan dan kondisinya. Karena itu, mesin, seperti NPC manusia, dapat memahami perbedaan antara mayat yang terbaring di depan mereka dan panah, bersiul di sebelah kepala mereka; selain itu, ini memungkinkan Anda untuk memastikan bahwa pemain yang bersembunyi di rumput tinggi atau di belakang pohon tidak terlihat - mesin menerima informasi bahwa ia tidak terlihat dalam keadaan ini.

Setiap karakter AI, apakah itu mesin atau seseorang, dapat memproses dan menafsirkan data sensorik dengan cara yang berbeda, sehingga beberapa informasi dapat diabaikan oleh beberapa karakter, sementara yang lain merespons dengan tepat. Bahkan, tergantung pada daya sensor di mesin, itu dapat mengurangi jumlah data yang diterima dari peristiwa sensor yang dapat dibaca. Ini memungkinkan Anda untuk mengontrol sifat-sifat permainan yang muncul sehingga setiap jenis karakter dapat merespons informasi dengan caranya sendiri yang unik.

Jika AI perlu melakukan tindakan berdasarkan data sensorik ini, maka kita masih perlu membuatnya terlihat realistis. Oleh karena itu, ketika mesin memutuskan untuk mengambil beberapa tindakan, misalnya, pindah ke lokasi baru, menyelidiki sumber kecemasan atau menyerang pemain, ada masalah menjiwai pelaksanaan tindakan ini dengan cara yang paling realistis mungkin. Animasi mesin-mesin ini adalah tugas yang sangat sulit: mereka harus secara bersamaan terlihat seperti prototipe hidup dan memiliki perilaku seperti mesin yang berbeda. Untuk ini, perlu bahwa kedua sistem navigasi dan pertempuran memperhitungkan jarak yang harus ditempuh kendaraan, dan rantai alat animasi harus menyesuaikan tulang akar animasi dan mencampurnya sesuai dengan jarak dan waktu pergerakan yang dirasakan.


Ini memastikan bahwa pada jarak berapa pun pergerakan dan kecepatan mesin, ia akan dapat memulai animasi, pergi ke bagian utama dari perilaku, dan kemudian mencampurnya dengan benar dan pada waktu yang tepat. Ini penting untuk perilaku seperti berlari ke titik tertentu, ketika mesin tidak hanya perlu melambat dan berhenti di titik yang tepat. Tapi ini sangat penting dalam pertempuran. Banyak animasi yang digunakan untuk serangan memiliki dua urutan terpisah: "swing", yang menunjukkan awal serangan, diikuti oleh penyelesaian, menyebabkan kerusakan. Horizon Zero Dawn menggunakan metode yang mirip dengan yang saya bicarakan dalam artikel DOOM AI : sistem memonitor pergerakan mesin saat ini, mencampur gerakan atau serangan animasi untuk mencapai titik yang diinginkan, dan kemudian membuat mobil muncul atau berhenti tepatnya di akhir.

Navigasi


Ada tugas serius lain yang belum saya bicarakan - navigasi. Tugas menggerakkan mobil di seluruh dunia sangat kompleks, ada berbagai jenis musuh yang unik, dan mereka semua memiliki ukuran dan bentuk yang berbeda. Karena itu, mereka harus bergerak di sepanjang relief dengan cara alami bagi mereka. Selain itu, mereka harus mengenali perubahan geometri lokal dan beradaptasi dengannya, atau mengabaikannya, tergantung pada jenis mesin. Untuk melakukan ini, Anda memerlukan alat AI yang banyak digunakan yang disebut jala navigasi. Navmesh menyimpan informasi tentang bagaimana karakter tertentu dapat bergerak di peta berdasarkan apa yang dianggap sebagai penghalang di dunia baginya. Meskipun kita dapat menghitung semua ini selama pelaksanaan game, data seperti itu biasanya tertanam atau "dipanggang" sebelum rilis game dan, jika perlu, dimuat ke dalam memori.


Mengingat bahwa peta Horizon Zero Dawn sangat besar dan hanya segmen tertentu yang diperlukan pada waktu tertentu (AI aktif dan hanya bergerak dekat dengan pemain), jala navigasi dibuat selama pertandingan, tetapi hanya di sekitar pemain. Tetapi yang menarik adalah bahwa tidak satu navmesh digunakan, tetapi enam! Empat di antaranya memberikan gerakan karakter berdasarkan ukuran objek: kecil, sedang, besar atau besar. Oleh karena itu, orang dan ksatria dapat bergerak di sekitar jaring kecil, dan untuk mesin seperti petir, navmesh hampir sepenuhnya milik mereka. Selain itu, ada dua navmesh tambahan: satu untuk mesin mengambang, misalnya, untuk "gigi klik", serta jaring unik yang membuat mesin berdiri di lokasi yang nyaman jika pemain mencoba memanjatnya.


Dalam setiap kasus ini, rintangan dapat menghalangi atau mengubah struktur jerat navigasi, dan sistem menghitung ulang perubahan secara real time sehingga hambatan yang bergerak (dan bahkan mesin lain) dapat mempengaruhi kemampuan untuk bergerak melalui ruang. Yang menarik di sini adalah bahwa hambatan dapat memiliki sifat yang berbeda, dan dapat sepenuhnya dilewati, atau hanya tidak diinginkan untuk bergerak - tetapi ini sangat tergantung pada keadaan perilaku mesin AI. Seperti yang dinyatakan di bagian pertama, setelah penciptaannya, mobil-mobil patroli aktif menghindari vegetasi di mana Anda dapat bersembunyi, tetapi ketika menjelajahi sumber kecemasan terdekat, rumput masih tidak diinginkan, dan pada saat yang sama, mesin masih bisa melewatinya jika perlu. Prinsip yang sama berlaku untuk batu dan pohon kecil: ini adalah benda yang tidak bisa dilewati, dengan pengecualian mesin besar, seperti "kuda nil" , "pengunyah batu" dan "petir" . Monster ini dapat mematahkan batu dan mencabut pohon, tetapi hanya jika mereka marah atau mengejar pemain. Berada dalam keadaan perilaku lain, mesin-mesin ini merasakan hambatan seperti yang lain.

Gerakan udara


Meskipun alat navigasi ini mengelola kendaraan darat dari semua ukuran dan bentuk, itu tidak berfungsi sama sekali bagi mereka yang terbang di udara. Karakter non-pemain bergerak di udara, tidak hanya harus memperhitungkan rintangan terdekat, agar tidak bertabrakan dengan pohon atau tebing, tetapi juga harus mengetahui ketinggian geometri yang mengelilinginya. Dunia Horizon Zero Dawn penuh dengan perbukitan, hutan, tebing, dan pendakian gunung yang curam ... Dua jenis mobil terbang, "layang-layang" dan "petrel," harus tahu cara bepergian melalui udara sehingga Anda dapat lepas landas, melakukan perjalanan di sepanjang rute patroli, darat, serta menolak dan, jika perlu, serang pemain. Untuk ini, gim ini tidak hanya memiliki sistem navigasi darat, tetapi juga sistem udara yang sepenuhnya terpisah.


Penciptaannya ternyata menjadi tugas yang sulit bagi departemen pengembangan game AI. Dia menggunakan teknik yang disebut "perencanaan jalur hirarkis atas peta MIP". Pemetaan MIP adalah teknik yang digunakan dalam grafik komputer. ditujukan untuk meminimalkan jumlah memori yang ditempati oleh tekstur atau gambar. Untuk melakukan ini, satu set gambar identik dibuat dengan resolusi yang secara bertahap menurun. Solusi ini sangat ideal untuk mengontrol level detail dalam permainan: objek ratusan meter dari pemain terlihat, tetapi menggunakan memori tekstur lebih sedikit daripada yang ada di sebelah pemain dan menggunakan kualitas maksimal. Pendekatan ini digunakan untuk navigasi karena ketika mobil terbang di sepanjang jalan setapak di dunia, ia tidak perlu mengetahui dengan akurasi penuh geometri lokal tempat di mana ia akan berada dalam satu menit, tetapi perlu untuk mengetahui lokasi bumi segera sebelum ia harus mendarat. Sistem perencanaan jalur untuk kendaraan udara menggunakan tekstur MIP untuk membuat peta tinggi geometri lokal - struktur data yang memberitahu kita ketinggian pada posisi x / y yang diberikan di dunia. Tekstur MIP memiliki empat level, dan ketika mendekati tanah, mereka menjadi lebih kompleks dan realistis. Level 3 adalah model yang sederhana dan abstrak, dan tekstur level 0 adalah peta ketinggian dunia yang cukup akurat.


Dengan cara yang hampir sama dengan navigasi mesh, tekstur-mip dibuat selama pelaksanaan game dan sesuai kebutuhan: saat terbang dalam area tertentu, mesin tidak perlu mengetahui data ketinggian seluruh dunia. Ketika mereka harus terbang ke lokasi lain, AI navigasi penerbangan memulai algoritma pencarian A * dengan tekstur MIP tingkat tertinggi, yaitu, ia menghitung versi paling sederhana dari rute penerbangan menggunakan perkiraan versi geometri. Algoritma A * membuat terbang di atas dan di bawah rintangan lebih mahal daripada terbang di sekitar mereka, sehingga mobil melayang di dekat gunung dan batu lebih sering daripada terbang di atasnya. Setiap kali sistem memanggil algoritma A *, ia hanya memiliki jumlah iterasi yang terbatas, jadi setelah menghitung lintasan menggunakan tekstur mip yang paling sederhana (level 3), dibutuhkan segmen tertentu dari lintasan yang dihitung dan kemudian memperbaikinya, meminjam data dari level 1 dan 0, untuk membuatnya lebih realistis dan konsisten dengan geometri. Selain itu, ia memperlancar rute sedemikian rupa untuk mengecualikan lereng curam dan belokan tajam, membuatnya lebih realistis. Sistem ini bekerja sangat baik, setiap mesin terbang di udara selalu memiliki rencana penerbangan (bahkan ketika itu buruk), dan jika perlu, dapat memperbaikinya dengan berulang kali memanggil algoritma pencarian sehingga jalur menjadi lebih dan lebih alami. Selain itu, secara efektif menggunakan memori, tetapi pendekatan ini memiliki satu kelemahan - karena didasarkan pada ketinggian maksimum area yang diberikan pada peta. mobil tidak bisa terbang di bawah jembatan atau lengkungan batu, tetapi paling sering pemain tidak memperhatikan ini.


Berkat navmesh berbasis darat dan tekstur mip udara, mesin terbang dapat mengoordinasikan serangan, touchdown, serangan menyelam, dan bahkan pendaratan menurut geometri. Mesin melayang di atas pemain selama serangan masih menggunakan rencana penerbangan yang telah dihitung, tetapi tidak harus bergerak di sepanjang jalur ini, dan memainkan animasi yang sesuai. Kecepatan mobil terikat pada mode (penerbangan, melayang atau melayang), sehingga mereka dapat secara realistis berputar di atas pemain menggunakan alat navigasi yang sama.

Lepas landas dan pendaratan menggunakan sistem terpisah yang berinteraksi dengan navigasi penerbangan dan jala navigasi darat: mencari posisi yang sesuai pada jala tempat Anda dapat mendarat (biasanya ini adalah titik yang sedikit lebih tinggi di atas tanah daripada rata-rata lokal), dan kemudian mereka memilih sudut dan kecepatan. Mendarat, mobil menggunakan navmesh berbasis darat yang sesuai dengan ukurannya. Prinsip yang sama benar-benar berlaku ketika jatuh, hanya dalam hal ini satu-satunya posisi pendaratan yang sesuai didasarkan pada arah mesin saat ini, dan meskipun kecelakaan terlihat kurang anggun, sebenarnya menggunakan alat yang sama. Kasus batas yang diprogram khusus di sini adalah serangan menyelam "petrel" . Lingkaran Petrel di atas pemain dan kemudian jatuh ke bawah ke posisi pemain saat ini. Dia menggunakan sistem yang sama, tetapi dengan cara yang jauh lebih dramatis. Namun, ada trik lain: berputar di atas pemain, petrel sering menunggu sebelum serangan hingga menutup matahari. Mungkin, saat bermain, Anda memperhatikan ini, dan ini dilakukan dengan sengaja. Saat menguji AI "petrel", departemen QA memperhatikan bahwa itu secara berkala menutupi pemain dengan matahari, dan ini membuat serangannya lebih membingungkan, karena selama penyelaman cahaya bergerak dan membutakan pemain. Kemudian ini terjadi sepenuhnya secara tidak sengaja, tetapi kemudian departemen pengembangan AI memutuskan bahwa ini harus terjadi lebih sering.


Kesimpulannya


Horizon Zero Dawn menciptakan gameplay yang unik; sebuah dunia yang penuh dengan kehidupan mekanik menjadi tempat di mana kisah Eloy dan rahasia masa lalunya terungkap. Kecerdasan buatan dan sistem permainan mesin adalah aspek terpenting untuk menciptakan masa depan apokaliptik yang dieksplorasi oleh para pemain. Itu adalah pekerjaan skala besar untuk tim 10 orang, yang membutuhkan beberapa tahun pengembangan. Menciptakan sistem AI sebesar ini, bekerja dengan baik dalam permainan dengan dunia terbuka yang besar, menjadi tugas yang semakin sulit. Oleh karena itu, komunitas pengembang game sangat penting untuk berbagi pengalaman mereka dengan yang lain.

Referensi


  • Julian Berteling, 2018. "Melampaui Killzone: Menciptakan Sistem AI Baru untuk Horizon Zero Dawn," GDC 2018.
  • Arjen Beij, 2017. "AI of Horizon Zero Dawn," Game AI North 2017.
  • Wouter Josemans, 2017. "Menempatkan AI kembali ke Udara: Menavigasi Ruang Udara Horizon Zero Dawn," Game AI North 2017

Source: https://habr.com/ru/post/id440136/


All Articles