NPC dalam game adalah karakter yang tidak dikendalikan langsung oleh pemain manusia. Kepanjangan NPC ialah non-player character. Karakter ini dapat menjadi pedagang, pemberi misi, pendamping, warga, atau lawan. Tindakannya diatur oleh sistem permainan, mulai dari skrip sederhana hingga gabungan beberapa teknik AI.
Salah satu cara klasik untuk mengatur perilaku NPC adalah Finite State Machine (FSM): karakter berpindah keadaan ketika syarat tertentu terpenuhi. Misalnya, penjaga beralih dari patroli menjadi waspada setelah mendengar suara. Namun, tidak semua NPC memakai FSM, dan perilaku yang tampak cerdas tidak otomatis berarti karakter tersebut memakai machine learning atau AI generatif.
Panduan ini memperdalam pembahasan AI dalam game dan ragam tekniknya dengan contoh NPC yang mudah diikuti. Contoh penjaga di bawah merupakan ilustrasi rancangan, bukan penjelasan implementasi sebuah judul game tertentu.
Apa itu NPC dalam game?
NPC adalah peran karakter dalam permainan, bukan nama algoritma. Seorang penjaga toko yang menampilkan daftar barang setelah diajak bicara tetap merupakan NPC meskipun ia tidak berkeliaran atau membuat keputusan rumit. Begitu pula warga yang hanya menyampaikan dialog tertentu ketika pemain menyelesaikan misi.
Fungsi NPC dapat dibagi menurut kebutuhan pengalaman bermain:
- Menyampaikan cerita: memperkenalkan tokoh, memberikan petunjuk, atau merespons perkembangan misi.
- Menyediakan interaksi: membuka perdagangan, pelatihan, perjalanan, atau layanan lain di dunia game.
- Menciptakan tantangan: menjaga wilayah, menghalangi perjalanan, atau menjadi lawan.
- Mendukung suasana: mengisi kota dan membuat lingkungan terasa dihuni.
- Membantu pemain: mengikuti perjalanan, memberi peringatan, atau mendukung pertarungan.
Kebutuhan tersebut menentukan seberapa kompleks sistemnya. Tokoh latar yang mengulang percakapan singkat tidak harus memiliki kemampuan yang sama dengan pendamping yang perlu mengikuti pemain melewati banyak rintangan.
NPC vs karakter pemain: apa perbedaannya?
Perbedaan utamanya terletak pada sumber kendali. Pada karakter pemain, manusia memberi masukan melalui tombol, stik, sentuhan, atau perangkat lain. Pada NPC, sistem game menentukan respons sesuai aturan, informasi, dan tujuan yang tersedia.
Karakter pemain juga dapat memakai bantuan otomatis, seperti navigasi saat memilih tujuan atau animasi saat berinteraksi. Bantuan itu tidak serta-merta menjadikannya NPC. Sebaliknya, karakter yang menyerupai avatar manusia bisa dikendalikan komputer. Istilah bot sering dipakai untuk agen otomatis yang menempati peran pemain, walaupun pemakaian istilahnya berbeda antar-game.
Dalam permainan tertentu, kendali suatu karakter dapat berpindah antara manusia dan komputer. Karena itu, identifikasi berdasarkan cara pengendaliannya pada situasi tersebut lebih tepat daripada menilai dari bentuk, kostum, atau kelengkapan dialognya.
Bagaimana NPC menentukan tindakan?
Cara kerja NPC lebih mudah dipahami sebagai rangkaian proses. Bayangkan penjaga sebuah gudang yang perlu menjaga pintu, memeriksa gangguan, lalu kembali bertugas. Sistemnya dapat memisahkan pekerjaan berikut:
- Menerima informasi. Game memberi sinyal bahwa ada suara di koridor, pintu terbuka, atau pemain berada dalam bidang pandang.
- Menyimpan konteks. NPC mencatat lokasi gangguan, tugas saat ini, dan informasi terakhir yang masih relevan.
- Memilih respons. Sistem keputusan menentukan apakah penjaga tetap bertugas, memeriksa koridor, atau memanggil bantuan.
- Menjalankan respons. Navigasi mengatur perjalanan, sementara animasi dan audio menampilkan tindakan.
- Memeriksa hasil. Jika jalur tertutup atau gangguan tidak ditemukan, keputusan berikutnya perlu disesuaikan.
Urutan ini adalah model penjelasan, bukan susunan wajib setiap mesin game. Beberapa proses dapat berlangsung bersamaan atau diperbarui pada waktu berbeda. Developer juga menentukan informasi apa yang boleh diketahui NPC; karakter tidak harus diberi akses ke posisi pemain setiap saat.
Mengapa NPC tidak selalu langsung bereaksi?
Dalam contoh gudang, bunyi kecil dapat menaikkan kewaspadaan tanpa langsung memicu pengejaran. Desainer dapat menambahkan waktu reaksi, batas jarak dengar, atau pemeriksaan garis pandang. Tujuannya dapat berupa memberi kesempatan pemain membaca situasi dan memahami akibat tindakannya.
Jeda tersebut harus dibedakan dari gangguan performa atau kesalahan program. Hanya dari satu kejadian di layar, pemain belum tentu dapat memastikan apakah keterlambatan merupakan bagian desain atau masalah teknis.
Memahami state, event, transition, dan action
Empat istilah ini membantu kita membedakan keadaan karakter, pemicu perubahan, aturan perpindahan, dan pekerjaan yang dijalankan:
- State: keadaan perilaku saat ini, misalnya menjaga pintu atau memeriksa gangguan.
- Event: kejadian yang masuk, misalnya suara terdeteksi atau karakter menerima serangan.
- Transition: perpindahan dari satu state ke state lain berdasarkan pemicu dan kondisi yang ditentukan.
- Action: pekerjaan yang dilakukan, misalnya berjalan ke koridor, menoleh, atau memutar dialog.
Misalnya, penjaga sedang dalam state patroli. Event suara muncul, lalu aturan memeriksa apakah lokasinya berada di wilayah jaga. Jika syarat terpenuhi, terjadi transition ke state menyelidiki. Action-nya adalah menuju sumber suara. Jika suara berada di luar wilayah tugas, rancangan dapat memilih respons lain.
Dengan pembedaan ini, satu kejadian tidak harus menghasilkan respons yang sama dalam semua keadaan. Suara baru saat penjaga sedang mengejar penyusup mungkin memiliki prioritas lebih rendah daripada suara yang terdengar ketika keadaan aman.
Finite State Machine (FSM) dengan contoh penjaga gudang
FSM memodelkan sistem melalui kumpulan keadaan yang terbatas dan aturan perpindahannya. Pada FSM dasar, satu mesin berada pada satu state aktif pada suatu waktu. Penjelasan fondasinya dapat dibaca dalam bab State dari Game Programming Patterns karya Robert Nystrom.
Untuk ilustrasi ini, kita merancang lima keadaan: patroli, menyelidiki, mengejar, mencari, dan kembali. Nama tersebut adalah pilihan untuk contoh, bukan daftar state yang harus ada pada setiap NPC.
Contoh alur dari patroli sampai kembali bertugas
- Patroli: penjaga berjalan di rute tugas. Suara mencurigakan yang valid memindahkannya ke menyelidiki.
- Menyelidiki: penjaga menuju lokasi suara. Jika melihat penyusup, ia beralih ke mengejar. Jika pemeriksaan selesai tanpa temuan, ia beralih ke kembali.
- Mengejar: penjaga mengikuti target yang terdeteksi. Saat pandangan terputus, ia menyimpan lokasi terakhir dan beralih ke mencari.
- Mencari: penjaga memeriksa sekitar lokasi terakhir. Jika target terlihat lagi, ia kembali mengejar. Jika pencarian berakhir, ia beralih ke kembali.
- Kembali: penjaga menuju rute tugas. Setelah tiba, ia melanjutkan patroli.
Perbedaan antara menyelidiki dan mencari membantu membaca maksud perilakunya: yang pertama memeriksa gangguan yang belum terkonfirmasi, sedangkan yang kedua mencari target yang sebelumnya terlihat. Keduanya dapat digabung jika desain game tidak membutuhkan pembedaan itu.
Aturan prioritas dan kondisi gagal
Contoh di atas belum lengkap tanpa aturan ketika beberapa kondisi terjadi bersamaan. Misalnya, penjaga sedang kembali ke pintu saat melihat penyusup. Rancangan perlu menyatakan bahwa deteksi target dapat membatalkan perjalanan pulang. Tanpa prioritas yang jelas, respons bisa saling bertabrakan.
Developer juga perlu menentukan respons jika pintu terkunci, tujuan tidak dapat dicapai, atau target keluar dari wilayah yang boleh diikuti. Pilihannya dapat berupa berhenti di batas, mencoba tujuan alternatif, atau kembali bertugas. Pilihan tersebut merupakan keputusan desain dan harus diuji.
Pengujian contoh ini dapat dilakukan dengan menutup pintu saat penjaga berjalan, membuat suara ketika ia mengejar, serta menghilang lalu muncul kembali di sudut koridor. Pertanyaannya konkret: apakah state berikutnya masuk akal, apakah animasi selesai dengan benar, dan apakah karakter dapat kembali menjalankan tugas?
FSM adalah salah satu pilihan, bukan aturan semua NPC
Satu karakter dapat memiliki sistem terpisah untuk perilaku, gerak, dan animasi. Pengembangan lain memakai state machine hierarkis atau menggabungkannya dengan pendekatan berbeda. Dokumentasi StateTree dari Epic Games, misalnya, menjelaskan penggabungan state dan transisi dengan pemilihan perilaku dalam struktur hierarkis.
Karena itu, kalimat “NPC selalu memakai FSM” tidak tepat. Bentuk perilaku yang mirip di layar juga tidak cukup untuk membuktikan teknik internal yang digunakan oleh developer.
Pathfinding: bagaimana NPC mencapai tujuan?
Sistem keputusan dapat memilih “periksa koridor”, tetapi karakter masih membutuhkan jalur menuju tempat tersebut. Pathfinding adalah proses mencari rute melalui representasi ruang yang dapat dilalui. Representasinya dapat berupa grid, kumpulan titik yang terhubung, atau navigation mesh yang sering disebut NavMesh.
Dokumentasi AI Navigation dari Unity memberikan contoh penggunaan NavMesh untuk navigasi dan pencarian jalur, termasuk penghalang dinamis serta penghubung antarbagiannya. Fitur dan cara pengaturannya bergantung pada mesin serta versi yang dipakai.
Keputusan tujuan berbeda dari pencarian rute
Pada contoh gudang, FSM memilih lokasi suara sebagai tujuan. Pathfinding mencari jalur menuju lokasi itu. Sistem gerak kemudian mengikuti jalur dan menyesuaikan gerakan dengan kondisi terdekat. Jika tidak ada rute yang valid, informasi kegagalan perlu diteruskan agar perilaku dapat memilih respons lain.
Itulah sebabnya NPC yang berjalan mengitari tembok belum tentu “berpikir ulang” tentang tujuannya. Ia mungkin masih menjalankan keputusan yang sama melalui rute berbeda. Sebaliknya, jalur yang berhasil ditemukan tidak menjamin keputusan awalnya tepat untuk situasi permainan.
AI tradisional, machine learning, dan AI generatif
AI tradisional berbasis aturan dan FSM
Pada pendekatan berbasis aturan, developer menetapkan kondisi dan respons secara eksplisit. Perilaku dapat ditelusuri dengan memeriksa informasi masuk, aturan yang terpenuhi, dan tindakan yang dipilih. Tantangannya adalah menjaga struktur tetap mudah dirawat ketika kemungkinan situasi bertambah.
Behavior tree merupakan pendekatan lain untuk menyusun kondisi dan tindakan secara bercabang. Dalam dokumentasi Behavior Trees Unreal Engine, blackboard menyediakan informasi yang dipakai dalam pengambilan keputusan. Ini menunjukkan bahwa AI NPC tidak terbatas pada satu bentuk mesin keadaan.
Machine learning: perilaku dari proses pelatihan
Machine learning melibatkan model yang mempelajari pola atau kebijakan dari data maupun interaksi saat pelatihan. Sebagai contoh, Unity ML-Agents Toolkit mendukung reinforcement learning dan imitation learning untuk agen dalam lingkungan simulasi.
Pelatihan harus dibedakan dari pemakaian model yang sudah terlatih. NPC yang menjalankan model tidak otomatis terus belajar dari setiap pemain. Kemampuan di situasi baru juga perlu diuji; hasil latihan bukan jaminan bahwa semua kondisi dalam game akan ditangani dengan baik.
AI generatif: keluaran baru dengan batas dunia game
AI generatif dapat menghasilkan keluaran seperti teks percakapan. Teknologi karakter seperti NVIDIA ACE for Games memperlihatkan contoh pemanfaatan model untuk percakapan dan karakter game. Contoh produk ini tidak berarti semua NPC modern memakai model generatif.
Dialog yang fleksibel tetap perlu dihubungkan dengan aturan permainan. Misalnya, pedagang dapat menjawab pertanyaan tentang barang, tetapi harga, inventaris, dan syarat misi tetap harus divalidasi sistem. Kalimat yang dihasilkan karakter tidak boleh dianggap sebagai bukti bahwa suatu transaksi atau perubahan misi benar-benar terjadi.
Pendekatan tersebut dapat digabung: aturan mengendalikan tindakan yang diizinkan, navigasi mengurus perjalanan, dan model bahasa membantu percakapan. Kebutuhan koneksi, biaya pemrosesan, serta waktu respons bergantung pada model dan tempat menjalankannya.
Keterbatasan NPC dan alasan perilakunya terasa berulang
NPC bekerja dengan informasi dan kemampuan yang disediakan game. Ia tidak memiliki pemahaman tanpa batas terhadap semua tindakan pemain. Beberapa keterbatasan yang perlu dibedakan adalah:
- Cakupan aturan: situasi yang belum ditangani dapat menghasilkan respons kurang sesuai.
- Konteks terbatas: lokasi terakhir atau status misi yang tidak diperbarui dapat memicu keputusan keliru.
- Navigasi dan animasi: keputusan yang benar tetap dapat terlihat janggal ketika jalur atau gerakan bermasalah.
- Konsistensi keluaran: dialog generatif perlu diperiksa agar tidak bertentangan dengan cerita dan aturan dunia.
- Anggaran pemrosesan: banyak karakter harus berbagi sumber daya dengan grafis, fisika, audio, dan sistem lain.
Pola yang mudah dipelajari juga dapat disengaja. Pemain membutuhkan petunjuk kapan penjaga waspada atau kapan lawan akan bertindak. Menambah variasi tanpa sinyal yang jelas justru dapat membuat tantangan terasa acak. Kualitas NPC sebaiknya dinilai dari kesesuaiannya dengan pengalaman bermain.
Kapan pendekatan berbeda digunakan?
Sebagai panduan rancangan, mulailah dari kebutuhan karakter dan situasi yang harus dapat diuji:
- Skrip sederhana: sesuai untuk interaksi dengan urutan terbatas, misalnya tokoh yang memberi petunjuk setelah misi tertentu selesai.
- FSM: layak dipertimbangkan ketika keadaan perilaku cukup jelas dan perpindahannya dapat dikelola.
- Behavior tree atau struktur hierarkis: dapat membantu ketika tindakan memiliki cabang, prioritas, dan bagian yang dipakai ulang.
- Machine learning: relevan ketika tugas memiliki lingkungan pelatihan dan ukuran keberhasilan yang dapat dievaluasi.
- AI generatif: dapat dipertimbangkan untuk keluaran terbuka seperti percakapan, disertai kontrol konteks dan pemeriksaan hasil.
Daftar ini merupakan rekomendasi konseptual, bukan resep wajib. Untuk penjaga gudang sederhana, memperbaiki deteksi dan penanganan pintu tertutup bisa lebih bermanfaat daripada menambahkan percakapan generatif. Untuk karakter pendamping cerita, konsistensi dialog dan pengetahuan misi mungkin lebih penting.
Pembahasan terkait tersedia melalui hub Teknologi USD777, yang menghubungkan panduan tentang teknologi dan sistem di balik industri game.
FAQ tentang NPC dalam game
Apakah NPC selalu merupakan musuh?
Tidak. NPC dapat menjadi pedagang, warga, pemberi misi, pendamping, maupun lawan. Sebutan NPC menjelaskan sumber kendali karakter, bukan sikapnya terhadap pemain.
Apakah semua NPC menggunakan Finite State Machine?
Tidak. FSM adalah salah satu pendekatan klasik untuk mengatur perilaku. Sebuah game dapat menggunakan skrip, behavior tree, model terlatih, atau gabungan beberapa sistem sesuai kebutuhannya.
Apa perbedaan FSM dan pathfinding?
FSM mengatur keadaan dan perpindahan perilaku. Pathfinding mencari rute menuju tujuan. Keduanya dapat bekerja bersama, tetapi menyelesaikan masalah yang berbeda.
Apakah NPC yang pintar pasti memakai machine learning?
Tidak. Kombinasi aturan, informasi yang tepat, navigasi, animasi, dan desain level dapat membuat NPC terasa responsif. Teknik internalnya perlu dikonfirmasi melalui informasi developer.
Apakah NPC bisa belajar saat kita bermain?
Bisa jika sistem memang dirancang untuk memperbarui model atau perilakunya selama permainan. Namun, memakai AI atau model terlatih tidak otomatis berarti NPC belajar langsung dari pemain.
Apakah NPC memerlukan internet?
Tidak selalu. Sistem yang berjalan lokal dapat bekerja tanpa layanan AI daring. Fitur yang bergantung pada server memerlukan koneksi sesuai implementasinya; status online sebuah game juga tidak membuktikan bahwa NPC-nya memakai AI cloud.
Tinggalkan Balasan