Sabtu, 14 September 2013

Construct 2 RPG tutorial part 7: implementing the AI

Selamat datang di bagian ke 7 dari seri tutorial membuat RPG di Construct 2. Kali ini aku akan mencoba mengimplementasikan AI seperti yang sudah aku desain sebelumnya. Aku akan mencoba membuatnya dalam 1 blog post, tapi kalau nggak bisa, berarti blog post ini cuma mencakup AI penyerang fisik.

Pertama-tama aku ingin memastikan bahwa semua petarung di battle scene tahu tentang musuh-musuhnya, karena AI kedua tipe musuh juga akan bergantung dari data ini. Awalnya aku berencana memakai family buat keperluan ini. Tapi ternyata aku nggak bisa menambah / mengurangi member family ini lewat event, padahal buat kebutuhan ini aku harus bisa mengganti member family secara dinamis lewat event (karena tiap battle, musuhnya beda-beda, dan party member pun bisa diganti secara bebas oleh pemain). Jadi untuk mengatasi ini, aku akan membuat array yang berisi data petarung dari party member dan juga dari musuh, array ini bernama enemyPartyArr dan playerPartyArr. Kedua array ini hanya berisi maksimal 4 elemen, karena kita memang membatasi jumlah petarung di sisi player dan musuh dalam battle. Ini juga mengubah fungsi family Friendly, dulunya family ini berisi semua party member yang bertarung, tapi sekarang mungkin lebih cocok berisi semua character dalam game yang bisa bergabung bersama pemain.

Aku mengubah apa yang terjadi di event on start of layout, sekarang kita memberi nama pada battleName musuh dan juga mengisi kedua array petarung, saat ini isinya hanya ada satu tapi nanti isinya akan berbeda-beda.

Kemudian aku membuat instance variable enemySelection di kedua family. Untuk memudahkan kita untuk membedakan nantinya, di family Enemies akan aku namai playerSelection sedangkan di family Friendly aku namai enemySelection. Keduanya memiliki nilai awal "closest". Di bagian bawah, aku membuat function baru bernama "enemySelTarget" yang akan digunakan oleh musuh untuk mencari target pemain. Fungsi ini menerima dua parameter, yaitu nama musuh yang akan mengganti target, dan AI pemilihan target si musuh.