penerapan perilaku cerdas pada obyek di dalam game flash...
TRANSCRIPT
1
Penerapan Perilaku Cerdas pada Obyek di Dalam Game Flash Tower Defense
Irsyad Arif M, Imam Kuswardayan 2, Rully Soelaiman3
1,2,3 Jurusan Teknik Informatika, Fakultas Teknologi Informasi, Institut Teknologi Sepuluh Nopember Kampus ITS Sukolilo Surabaya, 60111, Indonesia
[email protected], [email protected], [email protected]
Abstrak Flash Game merupakan salah satu jenis online gaming dengan perkembangan sangat pesat khususnya dalam hal
inovasi. Hampir setiap bulan muncul game dengan sistem permainan baru yang merupakan hasil pemikiran kreatif dari game yang ada sebelumnya. Kemudahan dalam pemasaran Flash game menjadi salah satu faktor yang membuat para developer bersaing untuk membuat Flash game yang interaktif dan menarik.
Tower Defense sendiri merupakan salah satu genre dalam Flash game yang banyak dirilis. Tentunya agar tidak menjadi game yang biasa – biasa saja, diperlukan faktor “plus alpha”, dalam artian sesuatu yang membuat game ini lain daripada yang lain. Salah satunya adalah dengan menaikkan kualitas interaksi dalam game. Fuzzy Logic merupakan salah satu teknik yang bisa diterapkan untuk hal itu dan membuat sebuah game terasa lebih “hidup”.
Dengan menggunakan Fuzzy Logic, setelah diujicoba permainan menjadi lebih menarik, dengan penyelesaian tiap level lebih cepat dan kecerdasan tiap unit yang meningkat.
Kata kunci: Flash Game, Tower Defense, Fuzzy Logic
1. Pendahuluan Flash Game merupakan salah satu jenis online
gaming dengan perkembangan sangat pesat khususnya dalam hal inovasi. Hampir setiap bulan muncul game dengan sistem permainan baru yang merupakan hasil pemikiran kreatif dari game yang ada sebelumnya. Kemudahan dalam pemasaran Flash game menjadi salah satu faktor yang membuat para developer bersaing untuk membuat Flash game yang interaktif dan menarik.
Tower of Defense sendiri merupakan salah satu genre dalam Flash game yang banyak dirilis. Tentunya agar tidak menjadi game yang biasa – biasa saja, diperlukan faktor “plus alpha”, dalam artian sesuatu yang membuat game ini lain daripada yang lain. Salah satunya adalah dengan menaikkan kualitas interaksi dalam game. Fuzzy Logic merupakan salah satu teknik yang bisa diterapkan untuk hal itu dan membuat sebuah game terasa lebih “hidup”.
Dalam sebuah game, Intelligent Agents dan Fuzzy Logic merupakan dua teknik yang bisa membantu menaikkan kualitas interaksi pada gameplay. Fuzzy Logic bertindak sebagai pengontrol perilaku para unit yang ada. Unit dengan perilaku yang tepat bisa menaikkan kompleksitas permainan yang dirasakan, tingkat fun factor dalam game, dan nilai realita dunia virtual game.
Fuzzy Rule sendiri relatif mudah untuk desain dan implementasi dibandingkan dengan teknik – teknik lain.
Intelligent agents, atau agen sendiri merupakan entitas software otonom yang memiliki tujuan, input, pemikiran, dan reaksi sendiri – sendiri. Pada pendekatan agent-oriented ini setiap unit pada game dianggap “makhluk hidup” yang memiliki tujuan tertentu. Pendekatan ini memiliki beberapa keuntungan :
1. Memungkinkan membuat sistem yang kompleks berdasarkan manipulasi perilaku “makhluk hidup” dalam game.
2. Tiap – tiap agen dalam game berinteraksi dengan bahasa level tinggi, bukab dengan bahasa biner.
3. Meningkatkan kualitas realita virtual dalam environment game.
Dalam paper ini, akan dibuat perangkat lunak berupa video game dengan genre Real-Time Strategy yang berjenis Tower Defense. Real-Time Strategy adalah jenis permainan dimana pemain dapat melakukan aksi tanpa harus menunggu giliran dan waktu permainan berjalan sesuai kenyataan. Gameplay dari game yang berjenis Tower Defense ini memiliki misi untuk menghalangi musuh agar tidak mencapai markas pemain. Pada Tower Defense yang asli, pemain akan membuat menara benteng di sepanjang jalur musuh, tapi pada game ini, menara diganti dengan pesawat. Pesawat yang dibuat
2
akan bergerak secara otomatis menyerang musuh-musuh yang dikeluarkan lawan, Game berlanjut sampai markas pemain atau musuh hancur.
Fuzzy Logic digunakan untuk menentukan keputusan kapan harus melindungi markas, kapan menyerang markas lawan dan kapan menghancurkan unit musuh. Implementasinya, Fuzzy Logic digunakan sebagai decision maker pada pesawat pemain, yaitu menentukan pesawat musuh mana yang akan diserang. 2. Perancangan dan Implementasi Aplikasi
2.1. Arsitektur aplikasi Dalam game ini, terdapat dua modul sistem yang
saling terintergrasi. Dua bagian modul tersebut adalah sistem dari gameplay itu sendiri dan AI game yang menggunakan algoritma Fuzzy. Keudanya menggunakan bahasa AS 3.
Modul gameplay adalah bagian program yang mengangani bagaimana game berjalan. Hal – hal yang berhubungan dengan interaksi pemain dan sistem ditangani di sini.
Modul AI, atau bisa juga disebut modul Fuzzy, adalah bagian program yang menangani interaksi antar pesawat. Bagaimana suatu pesawat memilih sasaran diantara sekian banyak musuh yang ada ditangani di sini.
Bagan arsitektur aplikasi yang dapat dilihat pada Gambar 1.
Gambar 1. Arsitektur Sistem Permainan Solus Saga
2.2. Perancangan Perangkat Lunak Perancangan perangkat lunak dibagi menjadi
dua bagian, yaitu perancangan aplikasi dan gameplay, dan perancangan AI.
Dalam perancangan gameplay akan dibahas bagaimana bentuk dari konsep permainan yaitu bagaimana aturan permainan, deskripsi unit, dan aksi spesial yang dapat dilakukan oleh pemain.
Selanjutnya, pada perancangan AI, akan dibahas bagaimana penerapan Fuzzy Logic pada pemilihan sasaran pesawat.
2.2.1. Perancangan Gameplay Permainan ini memiliki tujuan untuk
menghancurkan markas musuh yang dmainkan oleh komputer. Antara pemain dengan komputer tidak terhubung dengan jalur-jalur seperti pada tower defense pada umumnya, tapi berupa medan pertempuran dimana pesawat bebas bergerak dan tidak ditentukan jalurnya. Pemain bisa membuat pesawat dan melakukan fortifikasi pada markasnya. Komputer akan mengeluarkan pesawat dalam setiap waktu tertentu.
Gambar 2. Pesawat Induk, Jalur dan Gerbang pada game Solus Saga
Pemain akan kalah apabila markasnya hancur. Dan pemain menang jika berhasil menghancurkan markas musuh.
Pemain dapat memberikan damage kepada pesawat musuh dengan dua cara, cara yang pertama adalah dengan melakukan serangan spesial. Serangan spesial dapat menghancurkan seluruh pesawat musuh. Serangan spesial dapat dilakukan dengan menklik tombol spesial pada UI. Untuk melakukan serangan spesial pemain membutuhkan energi. Serangan spesial dapat dilakukan apabila gauge energi telah penuh terisi. Gauge energi serangan spesial akan terisi seiring dengan waktu.
Cara yang kedua adalah dengan mengeluarkan pesawat – pesawat pasukan dari markas. Pesawat – pesawat pasukan ini akan bergerak dan menyerang pesawat musuh yang dengan bobot terbanyak. Untuk memanggil pesawat, pemain membutuhkan biaya, yang dalam permainan Solus Saga dinamai “Money”. Biaya untuk membuat masing-masing pesawat berbeda beda sesuai dengan kemampuan pesawat tersebut. money didapatkan dengan cara membunuh pesawat musuh dan juga bertambah sedikit demi sedikit seiring dengan waktu.
3
Terdapat lima macam pesawat pasukan pada permainan Solus Saga. Kelima pesawat tersebut dinamai Arc Wing, Arcaster, Sniper, Nogard dan Legna. Kelima pesawat tersebut memiliki kemampuan yang berbeda-beda dan memiliki keunggulan masing-masing. Keterangan lebih detil untuk kelima pesawat tersebut terdapat pada Tabel 1
Tabel 1. Pesawat pasukan pada permainan Solus Saga
Nama Gambar Keterangan
Arc Wing
Serangan : 3 peluru menyebar Jarak serang : 100 Kecepatan : 2 Damage : 30 / peluru Delay serangan: 1 s Hit Point : 500 Harga : 690 G
Arcaster
Serangan : splash EMP area Jarak serang : 150 Kecepatan : 1 Damage : 120 Delay serangan: 2 s Hit Point : 600 Harga : 810 G
Sniper
Serangan : 1 peluru sniper Jarak serang : 300 Kecepatan : 2 Damage : 300 / peluru Delay serangan: 3s Hit Point : 500 Harga : 900 G
Nogard
Serangan : 2 peluru paralel Jarak serang : 100 Kecepatan : 2 Damage : 40 / peluru Delay serangan: 0.2 s Hit Point : 1000 Harga : 1300 G
Legna
Serangan : 1 laser beam Jarak serang : 300 Kecepatan : .5 Damage : 1000 / peluru Delay serangan: 4 Hit Point : 2000 Harga : 2550 G
2.2.2. Perancangan Tampilan Aplikasi Dalam game ini, terdapat delapan macam jendela.
Delaman macam jendela tersebut adalah : menu utama, lobi, hall of aces, jendela statistik, jendela ubah
password, jendela pemilihan map, ruang tunggu, dan jendela gameplay, alur perpindahan antar jendela beserta kondisinya terdapat pada gambar 3.
Menu Utama
Lobby
Menu Pemilihan Map
Waiting Room
Gameplay
Jendela Ubah Password
Hall of Aces
Statistik
Buat Room
Login
Pilih map
Start Game
Game selesai
Join Room
Ubah Password
Lihat Statistik
Lihat Top Player
Gambar 3. alur perpindahan antar jendela.
2.2.3. Perancangan Ekstensi SFS2X Bagian ini membahas tentang perancangan unit
Fuzzy sebagai modul AI dalam game ini. Logika unit dibuat berdasarkan data yang diberikan oleh system inti pada modul AI. Data-data tersebut berupa property dari tiap pesawat lawan yang ada di stage danproperti dari pesawat yang akan ditentukan sasaranya melalui fuzzy logic.
Properti yang dievaluasimodul AI adalah:
- Delta health - Jarak relatif dengan pesawat - Jarak relative dengan tower - Delta ID
2.2.3.1. Delta Health
Delta health merupakan perbedaan health pesawat dengan pesawat lawan. Perbedaan health ini mengindikasikan bahwa pesawat musuh yang sudah akan hancur. Delta health ini memiliki range dari -60 (hp pemain < hp lawan) sampai 60 (hp pemain > hp lawan). Perbedaan ini lalu ditambah dengan konstanta bernilai 60 agar bernilai positif, baru dievaluasi dengan Fuzzy. Fuzzy set untuk delta health bisa dilihat pada gambar 4 dan dijelaskan pada table 2
4
Gambar 4 Fuzzy Set Delta health
Tabel 2 Deskripsi Fuzzy Set Delta health
warna nilai bobot Low 1 Medium 2 High 3 extreme 4
2.2.3.2. Jarak relatif dengan Pesawat
Jarak relatif dengan pesawat merupakan jarak pesawat musuh dengan pesawat pemain. Semakin dekat, maka bobot akan semakin besar. Fuzzy set untuk jarak dengan pesawat bisa dilihat pada gambar 5 dan dijelaskan pada table 3
Gambar 5 Fuzzy Set jarak relatif pesawat
Tabel 3 Deskripsi Fuzzy Set jarak relatif pesawat
warna nilai bobot Near 3 Medium 2 Far 1 extreme 0
2.2.3.3. Jarak relatif dengan tower
Jarak relatif dengan tower merupakan jarak pesawat musuh dengan tower pemain. Semakin dekat, maka bobot akan semakin besar. Fuzzy set untuk jarak
dengan pesawat bisa dilihat pada gambar 6 dan dijelaskan pada table 4
Gambar 6 Fuzzy Set jarak relatif tower
Tabel 4 Deskripsi Fuzzy Set jarak relative tower
warna nilai bobot Near 2 Medium 1 far 0.5 extreme 0
2.2.3.4. Delta Id
Delta Id merupakan perbedaan tingkat pesawat dengan pesawat lawan. Perbedaan tingkat ini mengindikasikan bahwa pesawat pemain lebih kuat atau lebih lemah dari pesawat musuh. Delta Id ini memiliki range dari -6 (pemain lebih lemah daripada lawan) sampai 6 (pemain lebih kuat daripada lawan). Perbedaan ini lalu ditambah dengan konstanta bernilai 6 agar bernilai positif, baru dievaluasi dengan Fuzzy. Fuzzy set untuk delta health bisa dilihat pada gambar 7 dan dijelaskan pada table 5
Gambar 7 Fuzzy Set delta Id
Tabel 5 Deskripsi Fuzzy Set Delta Id
warna nilai bobot Low 0 Medium 0.5 High 1 extreme 1.5
5
2.3. Implementasi Perangkat Lunak
Program game ini memiliki sebuah kelas utama bernama Main. Kelas Main ini bertugas sebagai “manajer” dalam perpindahan dari satu menu ke menu lainya, dan menampilkan menu yang diinginkan pemain. Mulai dari menu utama ketika game baru dibuka, lanjut ke menu pemilihan level, kemudian ke layar permainan game itu sendiri.
2.3.1. Implementasi Menu Pada subbab ini akan dijelaskan tentang
implementasi menu – menu utama dalam game. Menu – menu ini meliputi menu utama, dan menu pemilihan level.
2.3.1.1. Implementasi Menu Utama
Menu utama ini memiliki sebuah kelas utama bernama MainMenu ,Kelas ini dipanggil oleh kelas Main ketika game terinisialisasi. Objek pada MainMenu ini diberi EventListener, yaitu thread yang memantau aktifitas pemain, seperti ketika pemain mengklik sebuah tombol, dan mengirim sebuah Event pada kelas Main, yang nanti akan mentrigger sesuatu, seperti ketika pemain mengklik tombol Continue, kelas MainMenu akan mengirim sebuah Event yang membuat kelas Main akan menampilkan menu Pemilihan level.
2.3.1.2. Implementasi Menu Pemilihan Level
Menu pemilihan level ada pada kelas WorldMap. Kelas WorldMap ini ketika dipanggil dia akan mengambil data dari kelas berupa level terjauh yang pemain tempuh. Data ini nanti akan dipakai untuk meng-update tombol –tombol level. Level yang belum dibuka tombolnya akan berwarna merah, sedangkan yang sudah dibuka akan berwarna hijau.
Saat pemain mengklik tombol level yang telah dibuka, kelas WorldMap akan mengirim data berupa LevelId pada kelas Enviro untuk dicari lingkungan pertempuran apa yang akan tampil pada level yang dipilih pemain, apakah itu padang pasir, luar angkasa, laut, atau padang rumput
2.3.2. Implementasi Gameplay Sistem GamePlay didominasi oleh kelas
BattleContainer. Pada saat permainan dimulai, yaitu setelah pemain mengklik level yang telah dibuka, kelas ini langsung menjalankan fungsi – fungsi untuk memantau aktifitas pemain dan juga mengenerate musuh yang dilakukan dalam interval waktu tertentu.
Aktivitas pemain seperti pembuatan pesawat pemain dilakukan dengan mengklik tombol yang telah disediakan. Kelas BattleContainer akan menangkap Id dari pesawat yang diinginkan dan membuatnya. Untuk
pesawat musuh, fungsi yang digunakan sama hanya Id pesawat didapat secara random..
Secara berkala, kelas BattleContainer akan mengupdate target dari pesawat – pesawat yang ada. pengupdatetan sasaran ini dilakukan dengan terlebih dahulu mengirim data selisih status dari pesawat yang akan diupdate sasaranya dengan sasaran – sasaran yang ada. Data ini nanti akan diolah di sistem Fuzzy pada kelas Tes dan akan di kembalikan data berupa bobot sasaran. BattleContainer akan memilih sasaran dengan bobot terbesar sebagai sasaran baru. Beberapa fitur yang dominan dalam gameplay meliputi pembuatan pesawat, pembuatan fortifikasi, dan serangan special.
2.3.3. Implementasi Fuzzy Fuzzy pada game ini dimanajemeni oleh kelas
Tes, yang mengakses Librari Nuvem. Kelas Tes ini memakai fuzzy untuk mendapatkan bobot dari data yang dikirim oleh kelas BattleContainer. Bobot ini nanti dikirim kembali ke kelas BattleContainer untuk mengupdate sasaran.
Kelas Tes ini pertama dipanggil oleh kelas BattleContainer dengan member parameter – parameter untuk digunakan sebagai acuan Fuzzy Set yang akan dibuat. Akan dibuat empat fuzzy set, yaitu fuzzy set untuk delta health, jarak dengan pesawat, jarak dengan tower, dan delta Id. Selain mengimpor parameter untuk acuan fuzzy set, kelas Tes juga mengimpor bobot untuk masing – masing fuzzy function untuk melakukan pembobotan.
2.3.3.1. Implementasi Nuvem Fuzzy Logic Engine Nuvem Fuzzy Logic Engine merupakan sebuah
librari sederhana yang mengimplentasikan Fuzzy Logic pada bahasa AS 3. Pengimplementasianya pada game ini ada pada kelas Tes. Pertama - tama, kelas tes ini membuat empat buah fungsi fuzzy dengan parameter yang dikirim oleh kelas BattleContainer, dua merupakan fungsi linear, menggunakan parameter min dan max nya, dan dua merupakan fungsi segitiga, menggunakan parameter batas minimum, maksimum, dan titik puncaknya. Ini merupakan tahap inisialisasi.
Setelah Fuzzy set ini diinisialisasi, maka untuk setiap input parameter yang dilakukan kelas Tes pada Fuzzy Set ini, Nuvem akan mengevaluasinya, mana yang degree of membership-nya paling tinggi di antara empat fungsi itu.
3. Uji Coba
3.1. Lingkungan Uji Coba
Aplikasi ini diuji dalam lingkungan uji coba dengan spesifikasi sebagai berikut :
6
Prosesor : Intel Core 2 Duo E6750 @ 2.66 GHz
Memori : 2048 MB
Kartu Grafis : NVIDIA GeForce 6200
Sistem Operasi
: Microsoft Windows 7 Ultimate 32 bit
Jaringan : Jaringan Local Area Network (LAN) dalam subnet laboratorium Rekayasa Perangkat Lunak.
3.2. Uji Coba Fitur Permainan
Uji coba fitur permainan adalah uji coba yang dilakukan sesuai dengan use case yang telah dirancang. Pada uji coba ini semua main flow dan alternate flow yang telah dirancang diuji apakah sudah diimplemetasikan dengan baik. Dari uji coba ini semua fitur yang dirancang dapat diimplementasikan dengan baik.
3.3. Uji Coba Fuzzy
Uji coba Fuzzy dilakukan dengan membuat level tambahan yang pesawat – pesawatnya dibuat statis. Setelah itu, pemain membuat pesawat dan diamati pesawat akan menyerang pesawat yang mana. Uji coba ini bertujuan untuk mengetahui apakah Fuzzy berjalan benar atau tidak. Lebih jelasnya bisa dilihat pada table 6
Tabel 6 Uji Coba pembuatan pesawat pemain dan musuh
No Skenario Hasil yang Diinginkan
Hasil
1 Pemain membuat pesawat pada level dummy berisi lima
pesawat musuh yang sejenis yang
dibuat statis
Pesawat yang dibuat pemain menyerang pesawat terdekat
dahulu seperti pada gambar 5.12
OK
2 Pemain membuat pesawat pada level dummy berisi lima
pesawat musuh yang berlainan
jenis dengan bobot seperti Gambar
5.13 yang dibuat statis
Pesawat pemain menyerang pesawat dengan bobot paling besar, detail bobot
bias dilihat pada table 5.12
OK
Gambar 8 pesawat pemain (yang menghadap kanan)
menyerang musuh terdekat
Gambar 9 pesawat pemain (yang menghadap kanan)
menyerang musuh terdekat Tabel 7 Uji Coba Fungsi tombol Continue pada Menu
Utama
musuh Jarak dengan pesawat
Jarak dengan tower
Beda nyawa
Beda Id
A 205-low 449-ext 40-med 2-low B 223-med 449-ext 45-med 3-med C 279-med 449-ext 50-med 4-med D 354-hi 449-ext 55-med 5-med E 354-hi 449-ext 60-hi 6-hi
3.4. Uji Coba Fuzzy pada gameplay
Uji coba ini dilakukan pada ggameplay yang asli untuk mengetahui perbedaan gameplay dengan Fuzzy dan tidak. Pengujian bisa dilihat pada table 8. Tabel 8 Uji Coba Fungsi tombol Continue pada Menu
Utama
No Skenario Hasil yang Diinginkan
Hasil
1 Pemain memainkan tiga game, masing – masing dengan
sistem tanpa fuzzy, sistem
Game pertama selesai dengan waktu terlama, disusul dengan game ketiga,
dan yang
OK, hasil bisa
dilihat pada
table 9
7
dengan fuzzy di sisi pemain,
sistem dengan fuzzy di sisi pemain dan
musuh
tercepat adalah game kedua.
Tabel 9 Uji Coba Fuzzy pada gameplay variabel Game 1 Game 2 Game 3
Total pesawat dibuat
24 19 23
Total melakukan serangan spesial
7 5 7
Waktu yang dibutuhkan
15 menit
12 menit
14 menit
4. Kesimpulan Dari hasil pengamatan selama perancangan, implementasi, dan proses uji coba perangkat lunak yang dilakukan, penulis mengambil kesimpulan sebagai berikut :
1. Penggunaan Fuzzy dalam system mampu mempercepat gameplay dengan lebih mengefektifkan penyerangan.
2. Penggunaan Fuzzy pada pihak pemain dan musuh menambah tingkat kesulitan gameplay.
3. Fitur – fitur permainan dapat berjalan dengan baik dan benar
Menu –menu dapat ditampilkan dengan baik dan benar
5. Saran Dalam pembuatan Tugas Akhir ini, terdapat
beberapa kemungkinan pengembangan aplikasi yang dilakukan, yaitu:
1. Penerapan sistem Fuzzy yang lebih kompleks demi system yang lebih adaptif.
2. Penggunaan algoritma lain selain Fuzzy pada modul A.I. yang lebih cerdas, lebih ringan, dan lebih akurat dalam pembobotan dari Fuzzy.
3. Penambahan fitur spesial yang lain selain laser. 4. Mengganti tower dengan kapal induk, sehingga
tower bisa bergerak. 5. Pengaplikasian genre game shoot’em up pada
tower yang diganti menjadi kapal induk 6. Re-engineering game yang ditujukan untuk
memindah platform game, dari sebuah game Flash menjadi game android atau game iPod
7. Pengembangan fitur multiplayer.
6. Daftar Pustaka
[1] Grossman, G., & Emmy, H. (2006, Juni 27). ActionScript 3.0 Overview. Diakses Tanggal Maret 9, 2011, dari www.adobe.com/devnet:
http://www.adobe.com/devnet/actionscript/articles/actionscript3_overview.html.
[2] Lovell, N. (2009, September 11). The six secrets of Farmville’s success. Diakses Tanggal Maret 9, 2011, dari gamesbrief.com: http://www.gamesbrief.com/2009/09/six-secrets-of-farmvilles-success-and-33-million-people-agree/
[3] StatOWL. (2011, Maret). Web Browser Plugin Market Share. Diakses Tanggal Maret 9, 2011, dari statowl.com: http://www.statowl.com/plugin_overview.php
[4] SmartFoxServer(2010). SmartFoxServer Overview. Diakses Tanggal Maret 9, 2011, dari smartfoxserver.com: http://www.smartfoxserver.com/overview.php
[5] SmartFoxServer. (2010). SmartFoxServer Showcase. Diakses Tanggal Maret 9, 2011, dari SmartFoxServer: http://www.smartfoxserver.com/showcase/