• Tidak ada hasil yang ditemukan

Artificial Intelligence

Dalam dokumen BAB 3 ANALISIS DAN PERANCANGAN (Halaman 120-131)

Berikut adalah gambar rancangan finite state machine untuk pengambilan keputusan yang dilakukan oleh artificial intelligence untuk menggerakkan karakter:

Setiap karakter akan memulai dari state Idle. Saat karakter tersebut mendapat giliran, maka state akan langsung berpindah ke state Choose Target. Dalam state Choose Target, artificial intelligence akan mencari karakter yang memungkinkan untuk dijadikan target. Dari karakter-karakter tersebut, akan dipilih satu karakter yang berjarak paling dekat dengan karakter tersebut. Jarak dihitung dengan menggunakan algoritma A* path finding untuk mendapatkan hasil yang paling optimal. Jika artificial intelligence tidak menemukan karakter yang dapat menjadi target, maka state akan berpindah ke End Turn. Jika target berhasil ditemukan, maka state akan berpindah ke Choose Action.

Pada state Choose Action, artificial intelligence akan memilih aksi yang tepat sesuai dengan target yang ditemukan dan sesuai dengan kondisi karakter

artificial intelligence saat itu. Ada dua kemungkinan aksi yang dapat dipilih,

serangan senjata atau magic. artificial intelligence akan memilih jika target merupakan karakter artificial intelligence. Artificial intelligence akan memilih serangan senjata jika karakter artificial intelligence tidak memiliki magic bertipe serangan yang dapat digunakan saat itu dan target bukan merupakan karakter

artificial intelligence. Jika target bukan merupakan karakter artificial intelligence

dan karakter artificial intelligence memiliki magic bertipe serangan yang dapat digunakan, maka aksi akan di-random dengan kemungkinan 30% untuk magic dan 70% untuk serangan senjata.

Jika aksi yang dipilih adalah magic, maka state akan berpindah menjadi

Choose Magic. Pada state ini artificial intelligence akan memilih magic yang

akan digunakan secara random. Jika target merupakan karakter artificial

Jika target bukan merupakan karakter artificial intelligence, maka magic yang dipilih harus bertipe offensive. Setelah itu state akan berpindah ke state Walk. Demikian juga jika aksi yang dipilih adalah serangan senjata, maka state akan berpindah ke state Walk.

Pada state Walk, artificial intelligence akan berusaha berjalan mendekat pada karakter target sesuai dengan jalur yang telah dihitung saat artificial

intelligence mencari target. artificial intelligence akan terus berjalan selama

karakter artificial intelligence masih memiliki stamina yang tersisa dan target belum berada dalam jangkauan artificial intelligence. Jangkauan artificial

intelligence tergantung pada aksi yang dipilih. Jika aksi yang dipilih adalah

serangan senjata, maka jangkauan dihitung berdasarkan jarak minimal dan maksimal senjata yang digunakan. Jika aksi yang dipilih adalah magic, maka jangkauan dihitung berdasarkan jarak maksimal magic yang dipilih. Jika stamina karakter artificial intelligence telah mencapai 0 atau jika target telah berada dalam jangkauan tetapi stamina karakter artificial intelligence kurang dari 25, maka state akan berpindah ke state End Turn. Jika target telah berada dalam jangkauan dan karakter artificial intelligence masih memiliki 25 stamina atau lebih, maka state akan berpindah ke state Prepare Action.

Pada state Prepare Action, artificial intelligence akan menjalankan animasi karakter untuk bersiap-siap melakukan aksi sesuai dengan aksi yang telah ditentukan sebelumnya. Saat animasi selesai, state akan berpindah sesuai dengan aksi yang telah ditentukan. Jika aksi yang dipilih adalah magic dan target merupakan karakter artificial intelligence, maka state akan berpindah ke state

karaker artificial intelligence, maka state akan berpindah ke state Attack-Magic. Jika aksi yang dipilih adalah serangan senjata, maka state akan berpindah ke

state Attack-Weapon.

Pada setiap state tersebut, artificial intelligence akan menjalankan animas i karakter untuk melakukan aksi yang telah ditentukan. Setalah animasi selesai, target akan menerima efek dari aksi yang ditentukan. Untuk state Heal Target, karakter target dan semua karakter artificial intelligence yang berada dalam area

magic yang dipilih akan menerima penambahan health sesuai dengan magic

yang dipilih. Untuk state Attack-Magic, karakter target dan semua karakter yang bukan merupakan karakter artificial intelligence yang berada dalam area magic yang dipilih akan menerima pengurangan health sesuai dengan magic yang dipilih. Untuk state Attack-Weapon, karakter target akan menerima pengurangan

health sesuai dengan senjata yang digunakan. Ketika menyerang menggunakan

senjata, target dapat melakukan counter, dan jika hal tersebut terjadi maka state akan berpindah ke state Damaged dan kembali menjadi state Attack-Weapon.

Ketika aksi yang ditentukan telah selesai dilakukan, state akan berpindah kembali menjadi state Choose target dan siklus akan kembali diulang hingga

state menjadi state End Turn. Saat state telah mencapai state End Turn, state

akan berpindah menjadi state Idle dan karakter artificial intelligence harus menunggu hingga mendapat giliran kembali.

Saat berada pada state Idle, jika karakter artificial intelligence mendapatkan serangan, maka state akan berpindah menjadi Damaged. Pada state ini animasi karakter yang sedang terkena serangan akan dijalankan dan health karakter artificial intelligence akan dikurangi sesuai dengan serangan yang

diterima. Jika karakter artificial intelligence diserang menggunakan magic atau jika penyerang berada diluar jangkauan senjata karakter artificial intelligence, maka state akan kembali menjadi state Idle. Jika setelah mendapat serangan

health karakter artificial intelligence menjadi 0 atau kurang, maka state akan

berpindah menjadi state Die. Jika karakter artificial intelligence diserang dengan senjata dan penyerang berada dalam jangkauan senjata karakter artificial

intelligence, maka state akan berpindah menjadi state Counter dan karakter

artificial intelligence akan melakukan serangan balasan. Setelah itu state akan

kembali menjadi state Idle.

19. Script

Untuk menentukan alur cerita dan seluruh kejadian yang terjadi pada game

Xivaria War, dibuatlah sebuah perancangan script sederhana. Perancangan script

tersebut terdiri dari beberapa perintah yang dapat digunakan untuk melakukan suatu aksi pada kondisi tertentu tertentu. Daftar perintah-perintah yang tersedia dalam rancangan script tersebut adalah sebagai berikut:

Tabel 3. 17 Tabel Perancangan Script

S cript Keterangan

#initialPosition;<place name> M enentukan posisi awal pemain pada World M ap. Perintah ini hanya dijalankan pada saat pemain memulai permainan baru.

#initialCharacter;<char name>;< char level>;<char gender>;<char id>

M enentukan karakter yang dimiliki pemain pada awal permain. Perintah ini hanya dijalankan pada saat pemain memulai permainan.

S cript Keterangan

#place;<name> Perintah untuk

mengawali definisi sebuah lokasi pada World M ap. Pada perintah ini, nama lokasi juga ditentukan. Semua perintah berikutnya hingga #placeEnd berfungsi mendefinisikan lokasi tersebut.

#placeType;town|battleField Perintah untuk

menentukan tipe dari suatu lokasi. Tipe ‘town’ dapat

memiliki equipment dan mercenary chop. Tipe ‘battlefield’ dapat memiliki story mission dan side mission.

#placePosition;<x>;<y> Perintah untuk

menentukan posisi lokasi tersebut pada World M ap.

#placeShop;weapon|armor|item;<name> Perintah untuk menentukan

benda-benda yang dijual pada sebuah town.

#placeM ercenary;<name>;<gender> Perintah untuk menentukan

karakter-karakter yang dijual pada sebuah town

 

S cript Keterangan

#placeStoryM ission;<mission name>;[<global fact>[,<global fact>[,...]]]

Perintah untuk menentukan story mission yang dapat muncul pada sebuah battle field. Pada perintah ini terdapat parameter berupa fact/fakta yang menentukan kapan story mission tersebut dapat dilakukan oleh pemain. #placeSideM ission;<mission name> Perintah untuk

menentukan side mission pada sebuah battlefield.

#placeEnd Perintah untuk

mengakhiri definisi sebuah lokasi. #road;<place name 1>;<place name 2>;[< global

fact>[,<global fact>[,...]]]

Perintah untuk menhubungkan suatu lokasi dengan lokasi lainnya sesuai dengan fact/fakta yang ada.

#event;openWorldM ap-<place name> |reach-<place name>|endTurn|kill|start|end

Perintah untuk menentukan awal dari sebuah event. Semua perintah berikutnya hingga #eventEnd berfungsi untuk mendefinisikan suatu event.  

 

S cript Keterangan

#condition;[<fact>[,<fact>[,...]]] Perintah untuk menentukan apakah

perintah-perintah lain dalam suatu event dapat dijalankan atau tidak. Perintah hanya akan dijalankan jika semua fact/fakta terpenuhi. #insertGlobal;<global fact> Perintah untuk

menambahkan fakta global

#deleteGlobal;<global fact> Perintah untuk menghapus fakta global

#insertLocal;<local fact> Perintah untuk menambahkan fakta lokal

#deleteLocal;<local fact> Perintah untuk menghapus fakta lokal

#win Perintah untuk

menentukan

kemenangan pemain dalam sebuah mission

#lose Perintah untuk

menentukan kekalahan pemain dalam sebuah mission.

#dialog;[<name>];[<avatar>];[<background>];<text> Perintah untuk memunculkan dialog #dialogOption;[<global fact>[,<global

fact>[,...]]];[<local fact>[,<local fact>[,...]]];[<text>]

Perintah untuk membuat pilihan pada suatu dialog. Pada perintah ini juga dapat ditambahkan fakta global dan lokal yang akan

ditambahkan saat memain memilih pilihan tersebut.

S cript Keterangan

#dialogOptionEnd Perintah untuk

menampilkan pilihan-pilihan yang telah dibuat dengan perintah #dialogOption

#dialogEnd Perintah yang

digunakan untuk menutup tampilan dialog. Perintah ini hanya digunakan untuk mengakhiri dialog dan kembali ke layar sebelumnya.

#get;weapon|armor|item;<name> Perintah untuk

menambahkan weapon, armor, atau item ke inventory pemain.

#get;money;<amount> Perintah untuk

menambahkan uang pemain

#join;<char name> ;<char level>;<char gender> ;<char id>

Perintah untuk menambahkan karakter pemain

#leave;<char id> Perintah untuk

mengurangi karakter pemain

#startM ission;<mission name> Perintah untuk memulai sebuah mission

#eventEnd Perintah untuk

mengakhiri definisi suatu event

#missionName;<mission name> Perintah untuk menentukan nama misi yang akan muncul pada M ission Brief

#missionDescription;<description> Perintah untuk

menentukan deskripsi misi yang akan muncul pada M ission Brief

S cript Keterangan

#missionWinCondition;[<condition>[<condition>[,...]]] Perintah untuk menentukan kondisi kemenganan yang akan muncul pada M ission Brief #missionLoseCondition;[<condition>[<condition>[,...]]] Perintah untuk

menentukan kondisi kekalahan yang akan muncul pada M ission Brief #requiredCharacter;<char id> Perintah untuk

menentukan

karakter yang harus di-deploy pada sebuah misi

Pada game Xivaria War, event yang digunakan pada perintah #event akan dibuat pada waktu-waktu tertentu. Event akan menentukan bagian script yang akan dijalankan oleh game Xivaria War. Berikut adalah tabel perancangan event yang ada pada game Xivaria War:

Tabel 3. 18 Tabel Perancangan Event

Event Keterangan

openWorldM ap-<place name> Event yang terjadi saat halaman World M ap dimunculkan

reach-<place name> Event yang terjadi saat pemain tiba disebuah lokasi

endTurn Event yang terjadi ketika giliran sebuah karakter telah selesai (hanya dalam mission)

kill Event yang terjadi ketika HP sebuah

karakter mencapai 0

start Event yang terjadi saat pemain memulai

sebuah mission.

end Event yang terjadi saat pemain

menyelesaikan sebuah mission.

Untuk menentukan kondisi pada suatu perintah, game Xivaria War menggunakan daftar fakta (fact). Ada dua jenis fakta yang digunakan, yaitu

global fact dan local fact. Global fact merupakan fakta yang bersifat permanen.

Fakta jenis ini akan disimpan ketika pemain men-save permainannya. Local fact merupakan fakta yang bersifat sementara dan hanya berlaku pada salah satu bagian game, misalnya pada sebuah mission. Fakta dapat ditambahkan dengan menggunakan perintah script dan juga akan ditambahkan secara otomatis ketika game sedang berjalan. Daftar fakta yang ditambahkan secara otomatis adalah sebagai berikut:

Tabel 3. 19 Tabel Perancangan Fakta

Fakta Jenis Keterangan

M ission zzz finished Global Ditambahkan ketika pemain berhasil

menyelesaikan sebuah misi

xxx died Local Ditambahkan ketika HP

karakter xxx mencapai 0

xxx in yyy Local Ditambahkan ketika

karakter xxx berada dalam trigger yyy

all enemy died Local Ditambahkan ketika tidak ada karakter lawan yang tersisa

all player died Local Ditambahkan ketika tidak ada karakter pemain yang tersisa

Pada tabel fakta di atas, script xxx merupakan ID dari karakter. Script yyy merupakan nama dari trigger yang telah dibuat di world editor. Script zzz merupakan nama misi yang ada. Setelah script dibuat, script akan disimpan dalam file berekstensi xws (Xivaria War Script).

Dalam dokumen BAB 3 ANALISIS DAN PERANCANGAN (Halaman 120-131)

Dokumen terkait