Baiklah, kita ketemu lagi di blog post
yang membahas soal cara membuat RPG. Kali ini aku akan melanjutkan
bahasan sebelumnya soal AI, yaitu bagaimana membuat AI penyihir.
Sebenarnya membuat AI penyihir ini nggak jauh beda dengan membuat AI
untuk petarung, hanya ada sedikit perubahan saja. Ada dua jenis
penyihir, yaitu penyihir ofensif / tipe penyerang, dan penyihir
suportif, keduanya punya logika sendiri-sendiri.
Pertama-tama kita akan bahas AI dari
penyihir ofensif, logikanya adalah seperti ini:
- Pilih target
- Kalau SP mencukupi untuk men-cast paling nggak satu sihir, pilih sihir
- Masuk casting time
- Kalau diserang musuh casting time berakhir, sihir gagal di-cast
- Kalau bisa casting sampai casting time berakhir, keluarkan sihir dan kurangi current SP
- Kalau target masih hidup, kembali ke poin 2
- Kalau target sudah mati, kembali ke poin 1
- Kalau SP nggak mencukupi, dekati musuh, lalu serang secara fisik.
Aku perlu menambahkan poin terakhir
soal kemungkinan kalau ternyata si penyihir nggak punya cukup SP buat
mengeluarkan sihir, kalau nggak begitu bisa-bisa penyihir kita cuma
berdiri bengong di tengah battle screen. Logika pemilihan target akan
kubuat sama seperti penyerang fisik, yaitu menggunakan instance
variable enemySelection dan targetName,
kalau kamu lupa untuk apa kedua instance variable ini, bisa lihat di
blog post sebelumnya.
Berikutnya, penyihir akan memilih sihir
apa yang dipakai, untuk sementara aku berencana membuatnya memilih
acak, karena aku nggak tahu bagaimana cara membuat AI memilih sihir
yang bagus. Sesudah memilih, penyihir akan masuk casting time. Selama
casting time ini penyihir nggak bisa berjalan atau melakukan hal yang
lain, kalau penyihir dikendalikan oleh pemain maka kita harus
mengganti nilai variable state yang sudah aku jelaskan. Semua sihir
punya instance variable castTime yang
hitungannya dalam detik, nanti kita akan mengurusi variable ini
sewaktu kita mulai men-coding sistem penyihir ini. Sepertinya sisa
poin-poinnya sudah cukup jelas dan nggak perlu aku jelaskan, kalau
belum jelas silahkan tinggalkan komentar.
Sekarang aku ingin membahas soal AI
penyihir suportif. Tugas penyihir suportif ada 2: healing dan
meningkatkan stats rekannya untuk sementara. Karena itu urutan
logikanya adalah: kalau ada teman yang perlu disembuhkan, sembuhkan.
Kalau nggak ada, support stats.
- Lihat current HP teman, cari apakah ada yang perlu disembuhkan
- Kalau ada, pilih sihir penyembuh HP
- Masuk casting time
- Kalau diserang musuh casting time berakhir, sihir gagal di-cast
- Kalau bisa casting sampai selesai, keluarkan sihir dan kurangi current SP
- Kembali ke poin 1
- Kalau nggak ada teman yang perlu disembuhkan, pilih sihir support
- Pilih target untuk sihir support itu
- Masuk casting time
- Kalau diserang musuh casting time berakhir, sihir gagal di-cast
- Kalau bisa casting sampai selesai, keluarkan sihir dan kurangi current SP
- Kembali ke poin 1
sebelum melakukan logika AI ini,
penyihir suportif harus memiliki current SP yang cukup untuk paling
nggak men-cast satu sihir, kalau nggak maka penyihir akan menyerang
secara fisik.
Aku ingin lebih membahas soal definisi
"ada yang perlu disembuhkan" ini, karena kita bisa
men-customize bagian ini untuk menentukan seberapa sering penyihir
menyembuhkan temannya. Aku membaginya berdasarkan berapa % current HP
yang dimiliki karakter. Seperti biasa, aku akan menamai logika
penyembuhan ini dan menyimpannya dalam satu instance variable, kali
ini aku akan menamainya healMethod.
- Menyembuhkan sewaktu current HP di bawah 75% = "worries"
- Menyembuhkan sewaktu current HP di bawah 50% = "moderate"
- Menyembuhkan sewaktu current HP di bawah 25% = "critical"
dengan begini kita bisa membuat sistem
customize AI untuk party member yang adalah seorang healer, karena
aku ingin membuat sistem customize yang agak advanced. Satu lagi,
karena nantinya selain sihir healing untuk satu orang, akan ada sihir
healing untuk seluruh party member sekaligus. Karena itu si penyihir
harus bisa menghitung berapa banyak rekannya yang membutuhkan
penyembuhan, dan kalau jumlahnya lebih dari satu maka akan
menggunakan sihir healing untuk seluruh party member. Jumlah ini akan
aku simpan dalam instance variable woundedNumber yang akan bertambah
sewaktu melihat current HP teman, kalau nilai woundedNumber
ini lebih dari satu maka penyihir akan menggunakan sihir penyembuh
seluruh party member (kalau punya). Instance variable ini akan diubah
menjadi 0 sewaktu casting berakhir, entah karena diserang musuh
ataupun karena sihir berhasil di-cast.
Untuk sihir support aku kira nggak
perlu AI khusus untuk memilih teman yang cocok untuk diberi support,
karena sihir support itu selalu dibutuhkan. Yang perlu aku lakukan
hanyalah memberi tanda apakah karakter tertentu sudah diberi sihir
support atau belum, supaya si penyihir bisa ngasih support ke
karakter yang belum mendapat support. Aku bisa ngasih slot untuk
diisi oleh sihir support, dan untuk itu aku juga harus ngasih slot
untuk diisi debuff yang mengurangi stats karakter untuk sementara.
Slot-slot ini aku beri nama slot1Buff,
slot2Buff, slot1Debuff,
slot2Debuff yang berisi string nama
status buff dan debuff yang dikenakan ke karakter.
Untuk sekarang, mungkin hanya segini
dulu. Sampai ketemu di blog post berikutnya.
Tidak ada komentar:
Posting Komentar