Perilaku Kecerdasan Buatan dengan Mesin Keadaan
Terapkan logika kecerdasan buatan musuh berbasis FSM sepenuhnya dalam skrip Lua.
Perilaku Kecerdasan Buatan dengan Mesin Keadaan adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Apa Itu Mesin Keadaan Hingga
Finite State Machine (FSM) mendefinisikan perilaku sebagai sekumpulan keadaan dengan transisi di antaranya, yang dipicu oleh kondisi atau peristiwa.
Struktur Tabel FSM
Representasikan FSM sebagai tabel yang memiliki keadaan saat ini, tabel keadaan, serta callback masuk, keluar, dan pembaruan opsional untuk setiap keadaan.
local function newFSM(initialState)
return {
current = initialState,
states = {},
}
endMendefinisikan Keadaan
Setiap keadaan adalah tabel dengan fungsi enter, update, dan exit yang bersifat opsional.
local fsm = newFSM("idle")
fsm.states.idle = {
enter = function(self) print("Enter idle") end,
update = function(self, dt)
if self.enemy then self:transition("chase") end
end,
exit = function(self) print("Exit idle") end
}Menambahkan Keadaan Pengejaran
Keadaan pengejaran mengejar pemain dan beralih ke serangan saat jaraknya cukup dekat.
fsm.states.chase = {
enter = function(self) print("Chasing!") end,
update = function(self, dt)
if self.distToPlayer < 2 then
self:transition("attack")
elseif not self.enemy then
self:transition("idle")
end
end
}Fungsi Transisi
Transisi memanggil exit pada keadaan saat ini, mengubah keadaan, lalu memanggil enter pada keadaan baru.
function fsm:transition(newState)
local cur = self.states[self.current]
if cur and cur.exit then cur:exit() end
self.current = newState
local next = self.states[newState]
if next and next.enter then next:enter() end
endMemperbarui FSM
Pada setiap tick permainan, panggil fsm:update(dt) untuk menjalankan logika pembaruan keadaan saat ini.
function fsm:update(dt)
local state = self.states[self.current]
if state and state.update then
state:update(dt)
end
endMesin Keadaan Hierarkis
Keadaan dapat berisi FSM bertingkat. Keadaan induk menangani perilaku umum (pertempuran atau patroli), sedangkan FSM anak menangani detail di dalam setiap keadaan induk.
FSM Berbasis Data
Definisikan transisi FSM sebagai tabel data yang dimuat dari berkas konfigurasi. Dengan demikian, perancang dapat menyesuaikan AI tanpa menyentuh kode.
local transitions = {
idle = {seeEnemy = "chase"},
chase = {lostEnemy = "idle", nearEnemy = "attack"},
attack = {enemyDead = "idle"},
}Mesin Keadaan Bertumpuk
Tumpukan keadaan memungkinkan keadaan sementara (misalnya, "terpingsan") ditambahkan di atas keadaan saat ini, lalu melanjutkan keadaan tersebut setelah selesai.
Beberapa Agen AI
Setiap entitas musuh memiliki instans FSM sendiri, sehingga AI masing-masing berjalan secara mandiri. Hal ini mudah dilakukan dengan tabel dan closure Lua.
Men-debug FSM
Catat semua transisi selama pengembangan. Tabel jejak menyimpan {from, to, time} untuk analisis setelah kejadian terhadap perilaku AI.
Pertanyaan tentang FSM
Apa yang memicu transisi keadaan dalam FSM?
Ringkasan: AI dengan Mesin Keadaan
FSM Lua menggunakan tabel objek keadaan (enter/update/exit) dengan fungsi transisi. FSM memisahkan tanggung jawab AI secara jelas, mendukung desain berbasis data, dan dapat berkembang dari kecerdasan musuh sederhana hingga pohon perilaku hierarkis yang kompleks.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Perilaku Kecerdasan Buatan dengan Mesin Keadaan” gratis?
Ya — teks lengkap “Perilaku Kecerdasan Buatan dengan Mesin Keadaan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Perilaku Kecerdasan Buatan dengan Mesin Keadaan”?
Terapkan logika kecerdasan buatan musuh berbasis FSM sepenuhnya dalam skrip Lua. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.
Berapa lama pelajaran “Perilaku Kecerdasan Buatan dengan Mesin Keadaan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Sistem Peristiwa dalam Lua
- Skrip Berbasis Komponen
- Perilaku Kecerdasan Buatan dengan Mesin Keadaan
- Konfigurasi Berbasis Data dan Muat Ulang Langsung