PENGEMBANGAN FINITE STATE MACHINE UNTUK MEMODELKAN AGEN DAN PERGERAKANNYA PADA OLAHRAGA FUTSAL
FERDIAN FEISAL
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2009
PENGEMBANGAN FINITE STATE MACHINE UNTUK MEMODELKAN AGEN DAN PERGERAKANNYA PADA OLAHRAGA FUTSAL
FERDIAN FEISAL
Skripsi Sebagai salah satu syarat untuk memperoleh Gelar Sarjana Komputer pada Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2009
ABSTRACT FERDIAN FEISAL. Modeling Multi-Agent in Futsal Sport Using Finite State Machine. Under the direction of AGUS BUONO. Building agents for futsal scenario requires methodologies for implementing high-level complex behavior and efficient programming. With that hypothesis in mind, this paper will show that we can develop futsal agents using simple logic and rule-based manner with Finite State Machine (FSM). FSM provides a powerful way to describe dynamic behavior of systems and components. The systems adapt specific behaviors with the main focus on how agents should behave for current situation. This research is designed with State design pattern to implement FSM in object oriented languages. In order to describe procedural aspects of the agents behavior, the state machine represented by state diagram. Because of this, we can revise behavior of agents which is triggered by external events. From this research the system can describe agent’s behavior and specified the state of the current situation. Keywords: Multi-agent, Finite State Machine, object oriented, State design pattern.
Judul Nama NRP
: Pengembangan Finite State Machine untuk Memodelkan Agen dan Pergerakannya pada Olahraga Futsal : Ferdian Feisal : G64051186
Menyetujui:
Pembimbing
DR. Ir. Agus Buono, M.Si., M.Kom. NIP 19660702 199302 1 001
Mengetahui: Dekan Fakultas Matematika Dan Ilmu Pengetahuan Alam Institut Pertanian Bogor
Dr. drh. Hasim, DEA NIP 19610328 198601 1 002
Tanggal Lulus:
i
PRAKATA Puji dan syukur penulis panjatkan kepada Allah SWT atas segala curahan rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan penelitian ini. Tulisan ini merupakan hasil penelitian penulis sebagai salah satu syarat untuk meraih gelar Sarjana Komputer dengan bidang kajian kecerdasan buatan yang berjudul Pengembangan Finite State Machine untuk Memodelkan Agen dan Pergerakannya pada Olahraga Futsal. Ucapan terima kasih penulis sampaikan kepada pihak-pihak yang telah membantu penulis dalam menyelesaikan penelitian ini, antara lain kepada kedua orang tua, Faisal dan Astuti, kedua kakak kandung, Fauzan dan Julia atas semua kasih sayang, cinta, dukungan dan kepercayaannya. Penulis juga ingin berterima kasih kepada seluruh dosen Ilmu Komputer IPB khususnya Bapak DR. Ir. Agus Buono, M.Si, M.Kom selaku dosen pembimbing yang telah sabar membimbing, memberi motivasi dan ilmu kepada penulis dalam penelitian ini. Ucapan terima kasih tak lupa penulis tujukan juga kepada teman-teman seperjuangan Program Studi Ilmu Komputer angkatan 42, Ovie Asykari atas kasih sayang, inspirasi, motivasi, dan dukungannya, teman-teman Weckerz, GTM, dan Graderz, serta seluruh pihak yang turut membantu dalam pelaksanaan penelitian ini. Semoga tulisan ini dapat bermanfaat dan dapat dikembangkan bagi pendidikan negeri tercinta Indonesia. Penulis juga berharap semoga bantuan yang telah diberikan mendapat balasan dari Allah SWT, Amin.
Bogor, September 2009 Ferdian Feisal
ii
RIWAYAT HIDUP Penulis dilahirkan di Bandung, tanggal 7 Agustus 1987. Penulis merupakan anak ketiga dari tiga bersaudara dari pasangan Faisal Syam dan Tri Astuti. Penulis lulus dari SMU Negeri 4 Bogor pada tahun 2005 dan diterima menjadi mahasiswa di Departemen Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor melalu jalur Undangan Seleksi Masuk IPB (USMI) pada tahun yang sama. Pada tahun tersebut Penulis juga mendirikan sebuah Game Developer, yaitu Weckerz yang hingga kini sedang dalam tahap pengembangan. Pada Tahun 2006 penulis memulai bisnis multimedia dalam sebuah tim bernama CLIProduction. Dua tahun kemudian penulis memulai bisnis kembali dengan tim bernama Green Technomedia yang juga bergelut pada bidang teknologi dan multimedia.
iii
DAFTAR ISI Halaman DAFTAR GAMBAR ..................................................................................................................... vi DAFTAR TABEL ......................................................................................................................... vi DAFTAR LAMPIRAN................................................................................................................. vii PENDAHULUAN Latar Belakang .......................................................................................................................... 1 Tujuan Penelitian ...................................................................................................................... 1 Ruang Lingkup .......................................................................................................................... 1 Manfaat Penelitian .................................................................................................................... 1 TINJAUAN PUSTAKA Futsal ......................................................................................................................................... 1 Artificial Intelligence Agent ...................................................................................................... 2 State Design Pattern ................................................................................................................. 2 Penggunaan ......................................................................................................................... 2 Struktur ................................................................................................................................ 2 Konsekuensi ........................................................................................................................ 3 Implementasi ....................................................................................................................... 3 Finite State Machine (FSM) ...................................................................................................... 3 Steering Behaviors .................................................................................................................... 4 METODOLOGI PENELITIAN Tinjauan Pustaka ....................................................................................................................... 4 Formulasi Permasalahan ........................................................................................................... 4 Analisis ..................................................................................................................................... 4 Perancangan .............................................................................................................................. 5 Implementasi ............................................................................................................................. 5 Pengujian................................................................................................................................... 5 HASIL DAN PEMBAHASAN Identifikasi Masalah .................................................................................................................. 5 Analisis ..................................................................................................................................... 6 Analisis Kelas ...................................................................................................................... 6 Analisis States ..................................................................................................................... 6 Pembagian Area Menjadi Subarea....................................................................................... 7 Estimasi Posisi Bola ............................................................................................................ 7 Pergerakan Pemain .............................................................................................................. 8 Sustain Dot Analyzer ........................................................................................................... 8 Perancangan .............................................................................................................................. 8 Perancangan Kelas-kelas Utama.......................................................................................... 8 Perancangan Finite State Machine ...................................................................................... 9 Implementasi ............................................................................................................................. 9 Implementasi Kelas-kelas Utama ........................................................................................ 9 Implementasi Finite State Machine ................................................................................... 10 Memulai Permainan........................................................................................................... 11 Mengoper Bola .................................................................................................................. 11 Mengejar Bola ................................................................................................................... 11 Kembali ke Posisi Awal .................................................................................................... 11 Menendang Bola ke Gawang Lawan ................................................................................. 12 Menggiring Bola ................................................................................................................ 12 Mendukung Penyerang ...................................................................................................... 12 Tendangan ke Dalam ......................................................................................................... 13 Tendangan Sudut ............................................................................................................... 13 Pengujian................................................................................................................................. 13
iv
KESIMPULAN DAN SARAN Kesimpulan ............................................................................................................................. 13 Saran ....................................................................................................................................... 14 DAFTAR PUSTAKA ................................................................................................................... 14 LAMPIRAN ................................................................................................................................. 15
v
DAFTAR GAMBAR Halaman 1 Ilustrasi lingkungan olahraga futsal (Roeslan & Suprayitno 2008). ............................................ 1 2 Diagram Artificial Intelligence Agent (Sha’bani et al, 2008)....................................................... 2 3 Struktur State Design Pattern (Gamma et al. 2001). ................................................................... 2 4 Diagram komponen dari FSM (Bosch & Gurp 1999). ................................................................. 3 5 Ilustrasi state pada saat melakukan Double Passing (Murray 2000). .......................................... 4 6 Diagram Metodologi Penelitian yang digunakan. ........................................................................ 5 7 Ilustrasi pada tahap implementasi (Murray 2000). ...................................................................... 5 8 Pembagian area menjadi beberapa subarea pada lapangan futsal. ............................................... 7 9 Estimasi posisi bola setelah dikenai aksi. .................................................................................... 7 10 Ilustrasi dari Sustain Dot Analyzer............................................................................................. 8 11 Diagram FutsalTeamStates saat memulai permainan. ............................................................. 11 12 Diagram FieldPlayerStates saat melakukan tendangan kick off .............................................. 11 13 Diagram FieldPlayerStates saat mengoper bola. ..................................................................... 11 14 Diagram FieldPlayerStates saat mengoper bola. ..................................................................... 12 15 Diagram FieldPlayerStates saat menendang bola ke gawang lawan. ...................................... 12 16 Diagram FieldPlayerStates saat menggiring bola.................................................................... 12 17 Diagram FieldPlayerStates saat akan mendukung pemain penyerang .................................... 12 18 Diagram FieldPlayerStates saat melakukan tendangan ke dalam............................................ 13 19 Diagram FutsalTeamStates saat terjadi tendangan sudut. ........................................................ 13 20 Diagram FieldPlayerStates saat melakukan tendangan sudut. ................................................ 13 DAFTAR TABEL Halaman 1 States untuk tim ........................................................................................................................... 6 2 States untuk pemain lapangan ...................................................................................................... 6 3 States untuk kiper......................................................................................................................... 7
vi
DAFTAR LAMPIRAN Halaman 1 Diagram kelas dari package FutsalClass ................................................................................... 16 2 Diagram kelas dari package FSM .............................................................................................. 16 3 Diagram state dari FutsalTeamStates ........................................................................................ 17 4 Diagram state dari FieldPlayerStates ........................................................................................ 17 5 Diagram state dari GoalKeeperStates ........................................................................................ 18 6 Tampilan saat simulasi berjalan ................................................................................................. 18 7 Tampilan subarea pada FutsalPitch ........................................................................................... 19 8 Tampilan Sustain Dot Analyzer ................................................................................................. 19 9 Tampilan informasi state pemain dan tim.................................................................................. 20 10 Hasil pengujian FutsalTeamStates ........................................................................................... 20 11 Hasil pengujian FieldPlayerStates ........................................................................................... 21 12 Hasil pengujian GoalKeeperStates .......................................................................................... 22
vii
PENDAHULUAN Latar Belakang Perkembangan teknologi komputer saat ini tidak hanya terlihat dari sisi perangkat keras, melainkan juga pada sisi perangkat lunak. Contoh perkembangan pada sisi perangkat lunak yaitu munculnya berbagai aplikasi yang berguna bagi masyarakat. Mulai dari aplikasi web, multimedia, sampai dengan aplikasi permainan yang kini banyak diminati. Diharapkan perkembangan teknologi tersebut dapat mengatasi beberapa masalah yang ada pada perkembangan komputer sampai saat ini. Dari sekian banyak aplikasi yang ada, tidak sedikit aplikasi permainan pada dunia komputer yang bersifat mengasah logika. Seperti aplikasi permainan strategi, olahraga, petualangan, tekateki, dan lain-lain. Dengan banyaknya permainan yang bersifat mengasah logika pemain tersebut, maka pada tugas akhir ini akan diimplementasikan kecerdasan buatan dengan metode Finite State Machine (FSM) pada simulasi permainan olahraga futsal. Metode FSM ini dipilih agar dapat membuktikan bahwa dengan metode ini kita sudah dapat membuat suatu agen kecerdasan buatan yang cukup kompleks dengan struktur yang sederhana. Simulasi permainan olahraga futsal ini adalah sebuah simulasi yang menampilkan pergerakan karakter pada permainan tersebut sesuai dengan perubahan lingkungan yang ada di sekelilingnya. Oleh karena itu, implementasi simulasi tersebut akan menggunakan metode FSM yang dimana akan mempermudah mengatur perilaku dari tiap objek saat terjadi perubahan keadaan. Tujuan Penelitian Penelitian ini bertujuan untuk:
akan digunakan pada sistem berdasarkan materi Peraturan Permainan Futsal FIFA dengan perkecualian hanya mengimplementasi gerakan dasar dalam pertandingan tanpa memperhitungkan keberadaan wasit, pelanggaran dan sangsi (contoh: tendangan bebas, pinalti), pencatatan waktu, ataupun kebijakan pelatih dalam pergantian pemain. Pergerakan bola pada sistem ini juga dibatasi dengan tidak memperhitungkan momentum dan ketinggian bola saat ditendang. Sistem juga hanya terbatas pada tahap menampilkan simulasi perubahan state dari objek-objek tersebut. Manfaat Penelitian Manfaat yang diharapkan dari penelitian ini antara lain: 1 Mengetahui kinerja perubahan state dari metode FSM pada agen kecerdasan buatan yang diterapkan pada simulasi permainan olahraga futsal. 2 Metode FSM ini dapat diimplementasikan pada jenis permainan lain atau bahkan pada aplikasi selain permainan yang membutuhkan kecerdasan buatan. TINJAUAN PUSTAKA Futsal Futsal adalah olahraga permainan yang dimainkan oleh dua tim yang berlawanan, dimana tiap tim terdiri dari 5 orang. Olahraga ini dimainkan di dalam ruangan dengan ukuran lapangan mendekati ukuran lapangan basket dengan batasan berupa garis-garis yang telah ditentukan pada peraturan yang ada (GWY 2007). Ilustrasi lingkungan dari olahraga ini dapat dilihat pada Gambar 1.
1 Menerapkan metode FSM dalam pembuatan kecerdasan buatan pada simulasi permainan olahraga futsal. 2 Menampilkan simulasi kecerdasan buatan pada permainan olahraga futsal untuk mengetahui aliran setiap perubahan state. Ruang Lingkup Mengingat luasnya ruang lingkup permasalahan pada penerapan kecerdasan buatan, maka penulis membatasi permasalahan tersebut dengan memfokuskan penelitian ini pada penggunaan metode FSM untuk mengatur perilaku tiap-tiap objek yang ada pada permainan sesuai dengan perubahan keadaan yang terjadi di sekitarnya. Penentuan state-state yang
Gambar 1 Ilustrasi lingkungan olahraga futsal (Roeslan & Suprayitno 2008).
1
Dari Gambar 1 dapat terlihat bahwa lapangan ditandai dengan garis-garis. Garisgaris tersebut termasuk garis pembatas lapangan, garis samping (touched line), dan garis gawang (goal line). Lapangan dibagi menjadi dua dan diberi garis tengah dimana titik tengah ditandai pada garis setengah lapangan dan diberi lingkaran (Roeslan & Suprayitno 2008).
2 Agen Objek yang memiliki sensor dalam kaitannya dengan perubahan lingkungan yang terjadi, agar dapat menyelesaikan permasalahan dengan hasil yang optimal. 3 Teacher Tugas dari bagian ini adalah memberikan respon terhadap reaksi agen terhadap perubahan lingkungan, agar agen tersebut dapat mengetahui dan mempelajari aksi yang sebelumnya telah agen tersebut lakukan (Sha’bani et al, 2008).
Setiap pemain lapangan dapat melakukan beberapa gerakan dasar seperti menggiring bola (dribble), mengoper bola (passing), menendang bola ke arah gawang (shooting), merebut bola, menerima bola, mengejar lawan, kembali ke posisi awal, sampai dengan menduga gerakan lawan selanjutnya. Untuk penjaga gawang beberapa gerakan dasarnya adalah melindungi gawang dari tembakan lawan, mengambil atau merebut bola dari lawan yang mendekati gawang, dan melempar atau menendang bola kembali ke dalam lapangan.
State design pattern adalah design pattern yang digunakan jika suatu objek dapat mengubah perilakunya terhadap suatu kondisi pada saat terjadi perubahan state di dalamnya. Objek tersebut mengganti kelas yang ada di dalamnya menjadi kelas lain (Gamma et al. 2001).
Artificial Intelligence Agent
a. Penggunaan
Sebuah agen dalam kecerdasan buatan adalah suatu objek yang dapat memahami lingkungannya melalui sensor dan bereaksi dengan menggunakan effector yang dimilikinya (Russell & Norvig 1995). Salah satu model pada agen kecerdasan buatan yaitu Reinforcement Learning. Pada model ini setiap agen dapat memutuskan aksi yang akan dilakukan dengan mempelajari aksiaksi mereka sebelumnya melalui reward yang diberikan. Model suatu agen ini dapat dibagi menjadi tiga bagian, yaitu lingkungan, agen itu sendiri, dan teacher. Ilustrasi bagian-bagian dari model tersebut dapat dilihat pada Gambar 2.
State Design Pattern
State design pattern ini digunakan jika menemui kasus berikut: • Perilaku dari tiap objek bergantung pada state yang dimilikinya dan objek tersebut harus merubah perilakunya pada saat sistem sedang berjalan. • Operasi yang akan dijalankan sangat besar, yang terdiri dari banyak conditional statement sesuai dengan state yang dimilikinya. State ini biasa direpresentasikan sebagai satu atau beberapa enumerasi konstan. Dengan State design pattern setiap kondisi akan dibedakan menjadi beberapa kelas sehingga memudahkan penggunaan state suatu objek sebagai suatu objek tersendiri agar dapat diubah sesuai kebutuhan. b. Struktur Struktur dari design pattern ini dapat dilihat pada Gambar 3.
Gambar 2 Diagram Artificial Intelligence Agent (Sha’bani et al, 2008). 1 Lingkungan (environment) Merupakan bagian yang tidak diketahui atau tak terdefinisi secara pasti yang berinteraksi dengan agen dimana mempengaruhi reaksi dari suatu agen saat menghadapi permasalahan.
Gambar 3 Struktur State Design Pattern (Gamma et al. 2001).
2
Pada struktur State Machine ini terdapat beberapa aspek yang dapat dilihat, yaitu: 1 Context Merupakan suatu penghubung yang digunakan untuk interaksi antara automata dengan pengguna. Aspek ini mendefinisikan suatu interface yang berguna sebagai transisi logika dari kelas-kelas yang akan mengaksesnya. Dengan demikian Context ini dapat mengatur instansiasi dari subkelas ConcreteState yang mendefinisikan state yang sedang berjalan saat ini. 2 State Aspek ini mendefinisikan suatu interface untuk mengenkapsulasi perilaku dari objek yang berasosiasi dengan Context saat berada pada suatu state tertentu. Aspek ini menyimpan instansiasi dari kelas-kelas yang ada serta kondisi state yang sedang berjalan. 3 ConcreteState subclasses Menentukan perilaku dari objek saat berada pada suatu state tertentu. Semua subkelas ini akan mengimplementasi perilaku dari state yang dimiliki oleh Context.
sebagai transisi logika dapat direpresentasikan sebagai State Machine dan State sebagai interface dari setiap kondisi yang ada. Sedangkan untuk concretestates ditentukan dari perilaku tiap objek yang dikelompokkan sesuai dengan kondisinya. Setiap subkelas concretestate yang ada pada penelitian ini akan mengimplementasi Singleton design pattern. Hal ini diperlukan agar saat menginstansiasi kelas dari suatu state hanya dilakukan satu kali. Sehingga walaupun kelas-kelas state yang didefinisikan banyak, tetapi instansiasi dari setiap kelas tidak dilakukan berkali-kali. Finite State Machine (FSM) Merupakan sebuah mesin abstrak yang berfungsi untuk mendefinisikan sekumpulan kondisi yang menentukan kapan suatu state harus berubah. Setiap state yang sedang dijalankan tersebut menentukan perilaku yang terjadi pada objek yang bersangkutan (Bourg & Seeman 2004). Alur kerja dari FSM ini dapat diilustrasikan pada Gambar 4.
c. Konsekuensi Akibat yang ditimbulkan dari penggunaan State design pattern adalah sebagai berikut: • Membuat cakupan perilaku pada suatu state menjadi lokal dengan mengenkapsulasinya sebagai objek dan membagi perilaku tersebut sesuai dengan state tertentu. • Perubahan state menjadi lebih jelas karena setiap state direpresentasikan sebagai sebuah objek yang terpisah. • Objek state dapat diakses bersama-sama oleh objek-objek yang membutuhkan. d. Implementasi Implementasi dilakukan dengan mendefinisikan setiap aspek yang ada pada struktur State design pattern agar sesuai dengan masalah yang ingin diselesaikan. Selain itu juga dilakukan perancangan aliran perubahan kondisi yang mungkin terjadi pada sistem agar dapat membagi perilaku sesuai dengan kondisi tersebut. Dalam penelitian ini objek-objek utama disesuaikan dengan objek yang terdapat pada olahraga futsal. Context yang berfungsi
Gambar 4 Diagram komponen dari FSM (Bosch & Gurp 1999). Metode FSM yang dikembangkan pada penelitian ini akan menggunakan State design pattern. Pada Gambar 4 dapat terlihat bahwa terdapat komponen Context yang mengacu pada state saat ini serta komponen State yang memicu terjadinya suatu transisi antar state. Transisi yang terjadi sesuai dengan Event atau peraturan yang berkaitan dengan state tersebut sehingga dapat menentukan aksi apa yang akan dieksekusi selanjutnya. Jika aksi tersebut akan merubah state saat ini, maka akan digunakan Context untuk merubah state tersebut. FSM ini diimplementasikan pada olahraga futsal dengan mendefinisikan pemain-pemain pada olahraga tersebut sebagai agen-agen kecerdasan buatan. Agen-agen tersebut direpresentasikan sebagai sebuah objek yang perilaku tiap objek tersebut akan berbeda-beda tergantung kondisi yang sedang mereka alami.
3
Kondisi-kondisi ini sebagai sebuah state.
akan
direpresentasikan
sesekali berhenti atau melakukan perlambatan sebelum sampai ke tujuan.
FSM di sini berfungsi dalam mengatur perubahan state dengan memisahkan perilaku yang akan dilakukan pada setiap state dengan objek yang bersangkutan. Sehingga FSM ini akan mengeksekusi perilaku yang sesuai dengan state objek saat ini. Perubahan state tersebut akan ditentukan oleh aksi dari objek lain maupun perilaku dari objek itu sendiri jika mengharuskan adanya perubahan. Contohnya, jika objek A yang sedang dalam state menyerang ke arah objek B, maka objek B yang sebelumnya memiliki state wait akan berganti state menjadi bertahan. Ilustrasi untuk perubahan state ini seperti yang ditunjukkan oleh Gambar 5.
• Pursuit Berguna pada saat objek harus mencegat objek lain yang sedang bergerak. Steering behavior ini menggerakkan objek menuju target dengan memperhitungkan posisi target selanjutnya. • Evade Berprinsip sama dengan Pursuit, namun steering behavior ini menggerakkan objek menjauhi posisi target selanjutnya. • Wander Steering behavior ini menggerakkan objek secara acak pada lingkungannya sehingga terlihat seperti bergerak tanpa tujuan tertentu (Buckland 2005). Kombinasi dari steering behaviors dapat digunakan untuk mencapai tujuan sesuai dengan yang diharapkan (Contoh: bergerak dari titik A menuju ke titik B sembari menghindari hambatan). Pada penelitian ini steering behaviors digunakan untuk menggerakkan objek-objek sesuai dengan state yang ada pada objek tersebut. Steering behaviors yang digunakan adalah Seek, Pursuit, dan Arrive. METODOLOGI PENELITIAN
Gambar 5 Ilustrasi state pada saat melakukan Double Passing (Murray 2000). Steering Behaviors Kemampuan suatu agen kecerdasan buatan agar dapat bergerak menuju posisi tujuan dari area dimana dia berada dengan melakukan improvisasi tertentu (Reynolds 1999). Berikut ini akan dijelaskan beberapa jenis steering behaviors: • Seek Steering behavior ini menggerakkan objek langsung menuju posisi target yang ditentukan. • Flee Merupakan kebalikan dari Seek, steering behavior ini menggerakkan objek langsung menjauhi posisi target yang ditentukan. • Arrive Steering behavior ini menggerakkan objek menuju posisi target yang ditentukan sambil
Metodologi yang digunakan dalam pembuatan simulasi permainan ini dilakukan dengan menggunakan pendekatan kepada pemecahan masalah yang terdiri dari beberapa tahap yang dapat dilihat pada Gambar 6. Studi Pustaka Pada tahap ini mulai dilakukan pencarian pustaka-pustaka yang dibutuhkan. Pustaka yang digunakan bisa berupa buku, jurnal, dan media lain yang terbukti kebenarannya sehingga dapat ditinjau sebagai sumber pustaka penelitian ini. Formulasi Permasalahan Tahap ini dimulai dengan mendefinisikan masalah yang hendak diselesaikan serta kendala-kendala yang mungkin akan muncul saat penelitian ini berlangsung. Analisis Tahap ini meliputi analisis kebutuhan apa saja yang akan digunakan dalam proses pengembangan lingkungan simulasi permainan berdasarkan peraturan yang berlaku. Analisis ini meliputi identifikasi kelas-kelas dalam permainan, state-state yang dimiliki tiap kelas,
4
serta fungsi-fungsi yang mendukung kelas tersebut saat menjalankan state yang sedang aktif.
perancangan yang telah diperoleh dari tahapan sebelumnya. Untuk ilustrasinya, dapat dilihat pada Gambar 7. Implementasi ini berupa pengkodean dengan menggunakan bahasa pemrograman C++.
Gambar 7 Ilustrasi pada tahap implementasi (Murray 2000). Pengujian
Gambar 6 Diagram Metodologi Penelitian yang digunakan.
Jika implementasi yang telah dilakukan belum menyelesaikan masalah yang ada, maka akan dilakukan pengujian untuk menyempurnakan kembali sistem tersebut hingga masalah yang ada telah terselesaikan. Pengujian sistem dilakukan menggunakan metode black-box. Pengujian ini bertujuan untuk mengetahui apakah state-state yang ada dalam sistem telah berjalan dan memeriksa error pada sistem.
Perancangan Tahap perancangan sistem ini mencakup dua hal berikut: 1 Perancangan Kelas-kelas Utama Untuk memudahkan implementasi dengan menggunakan pemrograman berorientasi objek akan ditentukan kelas-kelas dari objek yang ada pada simulasi tersebut. Fungsifungsi yang ada pun disesuaikan dengan kebutuhan yang sebelumnya telah didefinisikan. 2 Perancangan Finite State Machine Proses yang terjadi pada tahap ini yaitu merancang state machine dari agen kecerdasan buatan pada objek-objek yang ada agar sesuai dengan peraturan yang telah ditentukan. Mulai dari penentuan state-state hingga pergerakan objek saat kondisi state berubah. Implementasi Simulasi permainan ini akan diimplementasikan ke dalam bentuk aplikasi prototipe berdasarkan hasil analisa dan
HASIL DAN PEMBAHASAN Identifikasi Masalah Tujuan dari permainan futsal adalah mencetak gol sebanyak-banyaknya karena tim yang skornya lebih tinggi lah yang akan memenangkan permainan. Pada kasus ini masalah yang harus diselesaikan adalah perilaku pemain-pemain dalam tim ketika mencoba mencapai tujuan tersebut. Jika dipandang dari sisi permainan futsal itu sendiri, masalah yang ada antara lain: pendefinisian batas dari lapangan dimana pemain dapat berinteraksi, pendefinisian peran dari pemain dalam tim (pemain lapangan, pemain bertahan, penjaga gawang), reaksi tiap pemain maupun tim jika berada pada kondisi tertentu, perubahan kondisi permainan sesuai dengan keputusan wasit, dan memperkirakan kejadian yang mungkin terjadi selanjutnya (menduga gerakan lawan). Untuk simulasinya, masalah yang ada antara lain: merender permainan dalam bentuk aplikasi, menggerakkan pemain sesuai dengan aksi yang dilakukannya, dan mengubah kondisi
5
(state) pemain maupun tim sesuai perubahan lingkungan di sekitarnya. Sesuai dengan ruang lingkup penelitian ini, perancangan akan difokuskan pada implementasi metode FSM untuk pergerakan dasar pertandingan. Untuk permasalahan mengenai perubahan kondisi permainan sesuai dengan keputusan wasit jika terjadi pelanggaran atau pencatatan waktu, serta kebijakan pelatih dalam mengatur tim tidak akan dirancang karena bersifat subjektif. Subjektif yang dimaksud di sini adalah bergantung pada penglihatan wasit ataupun pelatih. Analisis a. Analisis Kelas Beberapa objek yang berpengaruh pada olahraga futsal ini adalah: • • • • • •
lapangan dua buah gawang satu bola dua tim delapan pemain lapangan dua penjaga gawang
Dari objek-objek tersebut dapat diidentifikasi kelas-kelas yang ada, yaitu: • FutsalPitch Merupakan kelas utama pada sistem yang menginstansiasi kelas-kelas lain yang dibutuhkan agar simulasi dapat dijalankan. • FutsalGoal Kelas yang akan mendefinisikan kedua gawang pada FutsalPitch. • FutsalBall Kelas yang mendefinisikan bola yang digunakan saat simulasi berjalan. • FutsalTeam Kelas yang mendefinisikan tim-tim yang ada pada simulasi. Terdapat 2 tim yang akan dibuat, yaitu tim A yang daerahnya berada di sebelah kiri lapangan, dan tim B yang daerahnya berada di sebelah kanan lapangan. • FutsalPlayer Kelas ini mendefinisikan pemain dalam tim yang ada pada simulasi. Pemain-pemain ini lah yang akan menjadi agen kecerdasan buatan.
• FieldPlayer Merupakan kelas turunan dari FutsalPlayer yang akan mendefinisikan pemain lapangan dalam tim. • GoalKeeper Sama halnya dengan FieldPlayer, kelas ini merupakan kelas turunan dari FutsalPlayer yang akan mendefinisikan penjaga gawang (kiper) dalam tim. b. Analisis States Pada simulasi ini states yang ada dapat dibedakan menjadi tiga bagian, yaitu states untuk tim, states untuk pemain lapangan, dan states untuk penjaga gawang. States yang dimiliki oleh tim dapat dilihat pada Tabel 1. Tabel 1 States untuk tim Formasi Dasar
State
Deskripsi
Kick Off
KickOff
State saat awal permainan dan pada saat memulai kembali permainan setelah terjadi gol.
Menyerang
Attack
State saat tim sedang menguasai bola dan melakukan penyerangan.
Bertahan
Defense
State saat tim sedang tidak menguasai bola dan bertahan dari serangan lawan.
Serangan Penuh
FullAttack
State saat tim sedang melakukan tendangan sudut di daerah gawang lawan agar dapat menyerang sepenuhnya.
Bertahan Penuh
FullDefense State saat tim lawan sedang melakukan tendangan sudut di daerah gawang agar dapat bertahan sepenuhnya.
Sesuai dengan gerakan dasar pemain pada olahraga futsal, dapat didefinisikan beberapa state yang dimiliki oleh pemain lapangan yang dapat dilihat pada Tabel 2. Tabel 2 States untuk pemain lapangan Gerakan Dasar
State
Deskripsi
Kembali ke formasi
BackTo Formation
State untuk menginstruksi pemain agar kembali ke formasi yang sedang dijalankan.
Menunggu instruksi
Idle
State saat pemain tidak sedang mengontrol bola dan menunggu instruksi dari pemain lain.
Mengejar bola
Chase
State saat pemain sedang mengejar bola yang dijalankan oleh pemain yang paling dekat dengan bola dan pemain bertahan saat daerah tim sedang diserang oleh lawan.
Menendang Kick bola
State saat pemain akan menendang bola, baik itu melakukan operan ataupun tendangan langsung ke gawang.
6
Menerima bola
Receive
State saat pemain akan menerima operan bola dari pemain lain.
Tendangan ke dalam
OutKick
State saat pemain akan menendang bola kembali ke lapangan setelah lawan menendang bola keluar melewati garis samping.
Tendangan sudut
CornerKick State saat pemain melakukan tendangan sudut ketika lawan menendang bola keluar melewati garis gawang daerah lawan tersebut.
Menggiring Dribble bola
State saat pemain sedang menggiring bola.
Mendukung Support penyerang
State saat pemain mencari posisi yang mendukung penyerang pada saat tim sedang menyerang daerah musuh.
-
State ini merupakan state global yang akan dieksekusi terlebih dahulu sebelum mengeksekusi state yang dimiliki FieldPlayer yang bersangkutan.
GlobalFP
Untuk states kiper dapat dilihat pada Tabel 3. Tabel 3 States untuk kiper Gerakan Dasar
State
Deskripsi
Kembali ke gawang
BackTo Goal
State saat penjaga gawang keluar dari garis batas gawang dan akan kembali menjaga gawangnya.
Melindungi gawang
Cover Goal
State saat penjaga gawang sedang melindungi gawang.
Mencegat bola
Intercept State yang dijalankan ketika bola memasuki jangkauan penjaga gawang untuk menghentikan atau mencegat bola.
Mengembalikan bola
State untuk mengembalikan bola Bring BallBack kembali ke lapangan setelah sebelumnya bola dihentikan oleh penjaga gawang, atau saat pemain lawan menendang bola melewati garis gawang di daerah penjaga gawang.
-
Global GK
State global dari penjaga gawang, yang akan dieksekusi terlebih dahulu sebelum mengeksekusi state yang dimilikinya.
c. Pembagian Area Menjadi Subarea Untuk mengidentifikasi formasi atau posisi pemain ketika permainan akan dimulai atau pada saat sedang berlangsung, akan dilakukan pembagian area pada lapangan futsal menjadi beberapa subarea seperti yang terlihat pada Gambar 8.
Gambar 8 Pembagian area menjadi beberapa subarea pada lapangan futsal. d. Estimasi Posisi Bola Untuk menentukan posisi bola saat bergerak, dibutuhkan fungsi yang dapat mengestimasi posisi bola setelah dikenai aksi. Ilustrasinya dapat dilihat pada Gambar 9. Untuk menghasilkan estimasi yang lebih nyata, dibutuhkan suatu parameter gesekan dengan permukaan lapangan agar bola yang sedang bergerak kecepatannya dapat berkurang perlahan-lahan. Hal ini dapat dilakukan dengan memberikan kecepatan negatif atau berlawanan dengan kecepatan bola saat bergerak sehingga untuk menentukan posisi bola selanjutnya setelah t waktu dapat menggunakan rumus berikut: ∆𝑥 = 𝑢∆𝑡 + 𝑎 ∆𝑡
,
dengan ∆𝑥 adalah jarak yang ditempuh u adalah kecepatan bola saat ditendang, dan a adalah pengurangan kecepatan karena pergeseran.
Gambar 9 Estimasi posisi bola setelah dikenai aksi. Selain itu juga diperlukan penghitungan waktu yang diperlukan bola menuju target sesuai dengan jarak yang ditempuhnya sehingga jika dilakukan tendangan dengan tenaga yang relatif kecil sedangkan target tendangan berada di titik yang jauh dari pemain, dapat dihitung bahwa bola tidak akan dapat menempuh jarak tersebut. Rumus yang digunakan yaitu: 𝑣 = 𝑢 + 2𝑎∆𝑥 , ∆𝑡 =
,
dengan 𝑣 adalah kecepatan bola saat mencapai tujuan, u adalah kecepatan bola saat ditendang, a adalah pengurangan kecepatan karena pergeseran, ∆𝑥 adalah jarak yang ditempuh, dan ∆𝑡 adalah interval waktu (Buckland 2005).
7
e. Pergerakan Pemain Seluruh pemain hampir setiap saat harus melihat dan mengikuti posisi bola. Pergerakan yang dilakukan bergantung pada formasi tim dan peran pemain dalam tim tersebut, apakah menjadi penyerang, pemain bertahan, atau penjaga gawang. Pada saat tim sedang melakukan penyerangan, pemain penyerang akan berusaha mencetak angka dengan memasuki daerah musuh, sedangkan pemain bertahan akan menjaga daerah timnya dari serangan lawan. Pada saat tim sedang bertahan, seluruh pemain akan kembali ke posisi awal untuk menjaga daerah timnya. Berbeda dengan pemain lapangan, penjaga gawang akan tetap berada di posisinya baik tim dalam formasi menyerang ataupun bertahan. Setiap aksi yang dilakukan oleh pemain dalam simulasi ini akan mempengaruhi pergerakan pemain lainnya. Baik itu pemain dalam satu tim maupun pemain lawan. Aksi tersebut direpresentasikan dalam bentuk state. Transisi perubahan aksi tersebut akan dilakukan oleh state machine. f. Sustain Dot Analyzer Jika penyerang memasuki daerah musuh, maka akan dicari pemain lain yang akan menjadi pendukung penyerang tersebut. Pencarian ini dilakukan dengan membagi daerah musuh tersebut menjadi titik-titik, dan menghitung nilai setiap titik tersebut berdasarkan parameter tertentu. Penghitungan ini akan dinamakan Sustain Dot Analyzer. Parameter yang akan dihitung antara lain: • Keamanan titik jika pemain yang sedang mengontrol bola melakukan operan ke titik tersebut • Kemungkinan menendang bola langsung menuju gawang untuk mencetak angka dari titik tersebut • Menghitung jarak titik tersebut dari pemain yang sedang mengontrol bola, semakin jauh nilainya akan semakin tinggi. Namun, jika melewati batas jarak optimal yang telah ditentukan, titik tersebut tidak akan diberi nilai. Nilai akhir pada tiap titik merupakan jumlah nilai dari tiap parameter. Jika nilai akhir tersebut merupakan nilai tertinggi, maka pemain
yang akan mendukung penyerang akan bergerak ke titik tersebut. Untuk ilustrasi dari Sustain Dot Analyzer ini dapat dilihat pada Gambar 10.
Gambar 10 Ilustrasi dari Sustain Dot Analyzer. Perancangan Dari hasil analisis kelas yang telah dilakukan sebelumnya, dapat dirancang relasi antar kelas tersebut dengan menggunakan diagram kelas. Karena modul simulasi ini dapat dibagi menjadi dua bagian yang terpisah, maka tiap bagian tersebut akan direpresentasikan dalam bentuk package-package. a. Perancangan Kelas-kelas Utama Package FutsalClass membutuhkan beberapa kelas tambahan untuk membantu perancangan simulasi permainan olahraga futsal ini. Kelas-kelas tambahan tersebut diambil dari sample code yang terdapat pada buku Programming Game AI by Example yang ditulis oleh Mat Buckland. Kelas-kelas tambahan ini direpresentasikan dalam package Common. Diagram kelas dari package FutsalClass ini dapat dilihat pada Lampiran 1. Pada saat pergantian state, objek-objek dapat bergerak sesuai dengan pesan yang dikirimkan. Dalam simulasi ini FutsalPlayer dan FutsalBall merupakan objek yang bergerak, sehingga didefinisikan sebagai turunan dari kelas MovingEntity yang membantu dalam menentukan koordinat lokal dari objek tersebut dan merotasi arah dari pemain agar sesuai dengan tujuan gerakannya. Selain itu FutsalPlayer memiliki hubungan composition dengan kelas SteeringBehaviors yang digunakan untuk menggerakkan objek tersebut sesuai instruksi yang dikirimkan. Walaupun FutsalBall merupakan objek yang bergerak, tetapi kelas ini tidak memerlukan SteeringBehaviors karena gerakannya hanya dipengaruhi oleh pemain (tidak dapat bergerak sendiri). FutsalPlayer juga merupakan turunan dari kelas AutoList dimana kelas ini berfungsi untuk membuat sebuah list dari beberapa objek yang sama secara otomatis.
8
b. Perancangan Finite State Machine
Implementasi
Package FSM ini akan dibuat sesuai dengan struktur State Design Pattern dengan mendefinisikan aspek-aspek yang terdapat di dalam simulasi. Diagram kelas dari package FSM ini dapat dilihat pada Lampiran 2.
Lingkungan pengembangan simulasi ini menggunakan bahasa pemrograman C++ dengan Microsoft Visual Studio 2008 sebagai kompilator serta seperti yang sebelumnya telah disebutkan, bahwa dalam perancangan simulasi ini juga akan digunakan library tambahan dari buku Programming Game AI by Example yang ditulis oleh Mat Buckland.
1 State Kelas ini merupakan kelas abstrak yang berfungsi sebagai interface bagi state-state yang akan diidentifikasi. Sehingga setiap state yang ada dapat mengimplementasi kelas ini sesuai dengan aksi yang akan dilakukan saat memasuki state, saat di dalam state, saat keluar dari state, dan saat menerima pesan. 2 StateMachine Fungsi utama dari state machine adalah memisahkan antara kelas state dengan kelas yang mengimplementasi transisi logika. Kelas inilah yang digunakan oleh objek untuk bertransisi agar dapat berinteraksi dengan kelas state yang dimiliki objek tersebut. 3 FutsalTeamStates Merupakan kumpulan kelas-kelas state untuk mendefinisikan aksi tiap FutsalPlayer dalam satu tim pada saat berganti formasi. State-state yang ada di sini merupakan state yang dimiliki oleh tim. Aliran state pada FutsalTeamStates diilustrasikan dalam bentuk diagram state pada Lampiran 3. 4 FieldPlayerStates Merupakan kumpulan kelas-kelas state yang dimiliki oleh pemain lapangan (FieldPlayer). Diagram state dari FieldPlayerStates dapat dilihat pada Lampiran 4. 5 GoalKeeperStates Merupakan kelas-kelas state yang dimiliki oleh kiper (GoalKeeper). Diagram state dari GoalKeeperStates dapat dilihat pada Lampiran 5. Kelas-kelas di atas dapat didefinisikan sebagai aspek-aspek yang terdapat di dalam struktur State design pattern. Dimulai dari StateMachine yang berfungsi sama halnya dengan aspek Context, State yang berfungsi sama halnya dengan aspek State, serta statestate yang terdapat pada FutsalTeamStates, FieldPlayerStates, dan GoalKeeperStates yang berfungsi sama dengan aspek ConcreteState.
Simulasi permainan olahraga futsal ini akan diimplementasikan dalam bentuk Windows Application dengan nama Futsal Agent SimulaTion (FAST). Pengguna bisa melihat jalannya simulasi dan memilih menu yang tersedia untuk mengaktifkan beberapa pilihan yang membantu pengguna dalam melihat aliran perubahan state dari tiap objek yang ada. a. Implementasi Kelas-kelas Utama Lapangan akan dienkapsulasi pada kelas FutsalPitch yang dimana instansiasi dari kelas ini akan dilakukan saat aplikasi dijalankan. Pada kelas inilah terdapat fungsi untuk membagi area lapangan menjadi beberapa subarea agar objek mengetahui dimana mereka berada saat menjalankan formasi tertentu. Pada simulasi ini area dibagi secara horizontal menjadi 5 bagian dan secara vertikal menjadi 10 bagian, sehingga total subarea yang terbentuk ada 50. Di awal simulasi setiap objek akan diposisikan pada suatu subarea tertentu, yang kemudian akan berubah sesuai dengan formasi yang sedang dijalankan. Kelas ini selanjutnya akan menginstansiasi FutsalBall, FutsalGoal, dan FutsalTeam. Hal yang diperhatikan saat mengimplementasi FutsalGoal hanyalah identifikasi titik tepi kiri dan kanan dari gawang sehingga jika bola melewati garis yang menghubungkan kedua titik tersebut, akan tercipta gol. FutsalTeam akan menginstansiasi setiap pemain dalam tim dan pointer-pointer yang mengacu pada lapangan, tim lawan, gawang tim, dan gawang lawan. Selain itu juga terdapat pointer yang mengacu kepada pemain-pemain penting yang terdapat dalam tim, yaitu: • Control Player Pemain yang sedang membawa bola yang berguna juga sebagai indikasi bahwa timnya sedang menguasai bola. • Support Player Pemain yang mendukung penyerang untuk mencetak gol.
9
• Receive Player Penerima bola yang dimana hanya akan ada satu penerima bola saja pada satu waktu. • Closest To Ball Player Pemain yang paling dekat dengan bola (Buckland 2005). Selain itu dibuat beberapa fungsi yang dapat mendukung state-state saat dieksekusi. Fungsifungsi tersebut antara lain: • Mengganti state semua pemain lapangan untuk kembali ke posisi awal (sering digunakan pada saat penjaga gawang sedang menguasai bola) • Mengecek apakah terdapat lawan dalam radius posisi pemain saat ini • Memeriksa apakah operan dapat dilakukan • Memeriksa beberapa strategi operan yang mungkin dapat dilakukan dan menentukan penerima operan terbaik yang berada pada jangkauan operan • Mengecek apakah operan yang akan dilakukan bebas dari lawan • Mengecek apakah pemain dapat melakukan tendangan ke gawang Selain itu juga dibuat fungsi pendukung yang akan dienkapsulasi bersama pemain dalam tim, yaitu pada kelas FutsalPlayer. Fungsi-fungsi tersebut antara lain: • Mengecek apakah pemain berada pada areanya • Mengecek apakah suatu objek berada di depan pemain • Mengecek apakah ada lawan yang mengancam posisi pemain • Mengecek apakah pemain berada di daerah gawang lawan • Mengecek apakah pemain merupakan pemain yang paling dekat dengan bola • Memberitahukan support player untuk mendukung pemain ketika sedang menyerang • Mengecek apakah bola terdapat pada jangkauan penjaga gawang • Mengecek apakah bola berada pada jangkauan tendangan • Mengecek apakah bola terdapat pada jangkauan penerima bola • Menghitung jarak ke gawang tim • Menghitung jarak ke gawang lawan Pada FutsalPlayer ini juga terdapat enumerasi yang mendefinisikan peranan pemain dalam tim sehingga dapat menentukan apakah pemain akan menjadi penyerang (attacker), pemain bertahan (defender), atau kiper
(goalkeeper). Untuk penyerang dan pemain bertahan akan diinisialisasi sebagai FieldPlayer, dan kiper sebagai GoalKeeper, dimana keduanya merupakan turunan dari FutsalPlayer. b. Implementasi Finite State Machine Kelas State hanya memuat fungsi-fungsi abstrak yang kemudian akan diturunkan ke setiap state-state yang ada agar dapat diimplementasi sesuai dengan perilaku dari state-state tersebut. Kode dari kelas State tersebut adalah sebagai berikut: template
class State { public: virtual ~State(){}; virtual void Enter(data_model*)=0; virtual void Execute(data_model*)= 0; virtual void Exit(data_model*)=0; virtual bool ReceiveMessage(data_model*, const Telegram&)=0; };
Kelas State Machine pada sistem ini memiliki atribut yang menyimpan objek yang diacu, kondisi state saat ini, kondisi state sebelumnya, dan kondisi state global. Pada saat memperbaharui state, state global akan dieksekusi terlebih dahulu sebelum state saat ini. Hal ini diperlukan untuk memberikan kondisi yang sama pada semua pemain, misalnya pada saat bola keluar garis lapangan dimana setiap pemain harus dapat mengetahui peristiwa tersebut. Penggalan kode dari state machine ini adalah sebagai berikut: template class StateMachine { private: data_model* sm_holder; State* sm_current; State* sm_previous; State* sm_global; … void ChangeState(State* NewState){ sm_previous = sm_current; sm_current->Exit(sm_holder); sm_current = NewState; sm_current->Enter(sm_holder); } void Update()const{ if(sm_global) sm_global->Execute(sm_holder); if(sm_current) sm_current->Execute(sm_holder); } … };
Setelah mengimplementasi kelas State dan State Machine, kelas state-state yang berupa concrete state akan dibuat sesuai dengan perancangan yang sebelumnya telah dijelaskan.
10
Selanjutnya akan d dijelaskan aliran peerubahan s state yangg terjadi saat meengimplemenntasi gerakann dasar darii tiap peemain ataupunn tim. Untukk tampilan sim mulasi saaat dijalankan dapat dilihatt pada Lampiiran 6, 7, 8 dan 9.
b.. Mengoper Bola B Aliran statte dari FielldPlayerStatess saat peemain melakuukan operan ke pemain lainnya daalam satu tim dapat dilihat ppada Gambar 13.
a. Memulai Peermainan Aliran statte dari FutssalTeamStatess saat meemulai permaainan dapat diilihat pada Gambar 111.
Gambar 13 Diagram D FielddPlayerStates saat mengoper boola.
D FutsaalTeamStates saat s Gambar 11 Diagram m memulai permaainan. Setiap tim memulai m perm mainan dengann state yaang sama yaitu KickOff. Jika J semua pemain daalam tim telaah berada di posisinya masingm maasing, maka state akan berubah menjadi m Deefense. Pada kondisi ini, pemain dalam m tim yaang akan melakukan tendaangan kick off ff akan meengejar bola dan d mengoperr ke pemain laainnya sebagai tanda permainan p tellah dimulai. Aliran A staate pada pemaain ini dapat dilihat d pada Gambar 122. Tim dari pemain yangg mengontroll bola setelah permaiinan dimulaii akan menngubah staate-nya menjaadi Attack.
Sebelum melakukan m opperan, pemain n yang seedang mengontrol bola akan mem meriksa ap pakah operann dapat dilaakukan atau tidak deengan mempeertimbangkan posisi musuh h, jarak op peran, dan possisi penerima operan. Jika operan o daapat dilakukann, pemain inii akan mengirrimkan peesan kepada pemain yangg menjadi kaandidat peenerima operaan. Pemain yaang menerimaa pesan teersebut akann merubah state-nya menjadi m Receive dan mengejar m bolaa yang diopeer saat masuk m ke dalam m jangkauan ppenerima bolaa. c. Mengejar Bola B Mengejar bola yang dimaaksud di sini adalah paada saat tim tiidak sedang m menguasai bola. Tim teersebut akan menentukan ppemain manaa yang teerdekat dengaan bola lalu merubah sta ate-nya menjadi m Chase. Jika selaanjutnya ditem mukan peemain lain daalam satu tim m yang lebih dekat deengan bola, maka m pemain tersebut akan diubah d sttate-nya meenjadi Chasse dan pemain p seebelumnya akkan diubah staate-nya menjadi Idle attau BackToFoormation sesuuai dengan kondisi k lin ngkungannya.. d.. Kembali kee Posisi Awal
Gambar 12 Diagram D FieldP dPlayerStates saat s melakuukan tendangan kick off
Jika pemaiin yang sedaang dalam kondisi k Ba ackToFormattion telah berrada di posisii yang diiharuskan, maka m state-nnya akan diubah d menjadi m Idle. Jika J pada saaat kembali ke posisi teersebut tim tiddak sedang m menguasai bola dan peemain merupaakan yang terdekat dengan n bola maka m state-nyaa akan diubah menjadi Chasse. Pada saat pemain p telah bberada di possisinya daan pemain teersebut memiiliki peran sebagai s peemain bertahaan, akan dicekk apakah daerrah tim teersebut sedangg diserang oleeh lawan atau u tidak.
11
Jikka ya, makaa pemain terssebut akan diubah d staate-nya menjadi Chase unntuk menghenntikan law wan. Aliran state s dari FieeldPlayerStatees saat akkan kembali ke k posisi awall dapat dilihatt pada Gaambar 14.
gaawang lawan selama tidakk ada ancamaan dari laawan sambil mencari peemain yang dapat mendukungnya m a dalam melakkukan penyerrangan. Aliran A state saat s pemain sedang meng ggiring bo ola dapat dilihhat pada Gambbar 16.
Gambar 14 Diagram D FieldP dPlayerStates saat s mengoper boola.
Gambar 16 Diagram D FielddPlayerStates saat menggiring bbola.
e. Menendang Bola ke Gaw wang Lawan
g.. Mendukungg Penyerang
Aliran staate saat peemain melaakukan tenndangan ke gawang daapat dilihat pada Gaambar 15.
Aliran statee saat pemainn akan mend dukung peemain lain dalam d tim ssaat menyeran ng ke daaerah lawan dapat d dilihat paada Gambar 17.
Gambar 15 Diagram D FieldP dPlayerStates saat s menendaang bola ke gaawang lawan. Sebelum melakukan m teendangan, pemain yaang sedang mengontrol m bola akan mem meriksa appakah tendanggan dapat dillakukan atau tidak deengan mempeertimbangkan jarak ke gaawang law wan dan possisi kiper. Jikka tendangan dapat dillakukan, peemain ini akan melaakukan tenndangan laluu mencari peemain yang dapat meenjadi penddukung penyyerang agar jika tenndangan berhhasil ditepis oleh kiper pemain terrsebut akaan langsunng melanjjutkan peenyerangan. f. Menggiring Bola Pemain mennggiring bola dengan melaakukan tenndangan kecill ke depan pem main sesuai dengan d araah dari pemaain tersebut lalu l mengejarr bola yaang telah diteendang dan menendangny m ya lagi saaat bola beradda dalam janngkauan tendaangan. Peemain akan terus t menggiiring bola kee arah
Gambar 17 Diagram D FielddPlayerStates saat akan menndukung pemaain penyerang g Pemain yanng mendukunng penyerang g akan mencari m posisi yang tepat ddengan menjalankan fu ungsi SustainnDotAnalyzer. Jika posisi telah diitemukan, maka m pemaiin tersebut akan mengirim m pesaan kepada peemain yang sedang s membawa m boola agar m memberikan operan o paadanya dan mengubah state-nya menjadi m Receive. Pemaain yang mennerima pesan n akan mengecek m apaakah memangg dapat dilaakukan op peran ke pem main tersebut atau tidak. Jiika ya, op peran akan lanngsung dilakuukan. Pada saat bola b tidak laggi dikuasai oleh tim daari pemain pendukung, p m maka pemain n akan keembali ke possisi awal denggan mengubah h stateny ya menjadi BaackToFormatiion.
12
h. Tendangan ke k Dalam Tendangan ke k dalam dilaakukan oleh pemain daalam tim seteelah bola diteendang oleh lawan keeluar lapangann melewati gaaris samping. Aliran A staate yang terjaddi dapat dilihaat pada Gambar 18.
Gambar 18 Diagram D FieldP dPlayerStates saat s melakuukan tendangann ke dalam. Pemain yaang melakukkan tendangaan ke daalam akan diuubah state-nyaa menjadi OuutKick. Seelama berada pada state terrsebut pemainn akan meenentukan peemain lain dallam tim yangg akan meenerima tenddangan ke dalam. d Jika telah dittemukan, peemain akan mengirim pesan keepada penerim ma tersebut agaar menerima bola. b Setelah mellakukan tendaangan, pemainn akan meengubah statee-nya menjadi Support agarr dapat lanngsung menndukung pem main yang telah meenerima bola. i. Tendangan Sudut S Tendangan sudut dilakuukan oleh pemain daalam tim seteelah bola diteendang oleh lawan keeluar lapangann melewati gaaris gawang daerah d law wan. Alirann state yaang terjadi pada FuutsalTeamStattes dapat dillihat pada Gambar 199.
peemain dapatt bertahan sepenuhnya dari seerangan law wan. Tim yang melaakukan teendangan suddut akan m mengubah sta ate-nya menjadi m FullA Attack agar dapat melaakukan seerangan penuhh ke gawang laawan.
Gambar 20 Diagram D FielddPlayerStates saat melakkukan tendanggan sudut. pada Aliran s state yang terjadi FieldPlayerSta F ates saat melakukan tend dangan su udut hampir sama dengann aliran statte saat teendangan ke dalam. Alirran tersebut dapat diilihat pada Gambar 220. Pemain yang melakukan m tendangan sudutt akan diubah h stateny ya menjadi CornerKick. C S Selama beradaa pada sttate tersebut pemain p akan m menentukan pemain p laain dalam tim yang akan m menerima tend dangan su udut. Jika teelah ditemukkan, pemain akan mengirim m pesan kepada pennerima tersebu ut agar menerima m bola. n akan Setelah mellakukan tendaangan, pemain mengubah m statee-nya menjadii Support agarr dapat laangsung menndukung pemain yang telah menerima m bola. Pengujian unakan Pengujian sistem dilakuukan menggu metode m black-bbox. Pengujiann dilakukan dengan d memeriksa m kessesuaian perubbahan state dengan d ou utput yang dihhasilkan pada saat simulasi. Hasil peengujian ini dapat d dilihat pada Lampiran 10, 11 1, dan 12. Hasil penguujian membu uktikan baahwa state-staate telah berjjalan sesuai dengan d yaang diharapkaan dari skenariio uji. KESIM MPULAN DA AN SARAN Kesimpulan K
D FutsaalTeamStates saat s Gambar 19 Diagram terjadi tendangann sudut. Tim yangg mengakibbatkan terjaadinya tenndangan suddut akan meengubah state-nya meenjadi FullDefense. Hal ini i dilakukann agar
F yang diimplementtasikan Metode FSM daalam simulasi permainan olahraga futssal ini beerhasil memoodelkan agen kecerdasan buatan b daan dapat meemberikan innformasi men ngenai alliran perubahhan state darii setiap agen n yang
13
ada. Hal ini menunjukkan bahwa agen kecerdasan buatan yang berbasis tim dapat diciptakan hanya dengan teknik kecerdasan buatan yang cukup sederhana. Hasil pengujian yang dilakukan dengan memeriksa perubahan dari state saat ini ke state selanjutnya saat dipicu oleh kondisi tertentu telah menunjukkan bahwa semua perubahan yang terjadi pada FutsalTeamStates, FieldPlayerStates, dan GoalKeeperStates telah berhasil berjalan sesuai skenario uji. Saran Penelitian ini masih dapat dilanjutkan agar dapat menciptakan agen kecerdasan buatan yang lebih baik. Saran-saran yang dapat diberikan adalah sebagai berikut: 1 Penambahan state pada level tertentu (pemain lapangan, kiper, atau tim) akan memberikan hasil yang lebih maksimal karena dapat menambah perilaku agen dalam kaitannya dengan perubahan kondisi permainan. 2 Mengimplementasi wasit atau pelatih agar dapat menampilkan simulasi yang lebih realistis dan memenuhi peraturan dalam olahraga futsal yang belum diterapkan dalam penelitian ini.
Buckland, Mat. 2005. Programming Game AI by Example. Wordware Publishing. Gamma E., Helm R., Johnson R., Vlissides J. 2001. Design Patterns. MA: AddisonWesley Professional. Murray, J. et al. 2000. Towards a Logical Approach for Soccer Agents Engineering. Universität Koblenz-Landau Institut für Informatik Reynolds, Craig W. 1999. Steering Behaviors for Autonomous Characters. Sony Computer Entertainment America: California. Roeslan, H. Hatta H. & Puji Suprayitno. 2008. Peraturan Permainan Futsal FIFA. Difamata Sport E.O. Russell, Stuart J. & Peter Norvig. 1995. Artificial Intelligence A Modern Approach. Prentice Hall, New Jersey. Sha’bani, J. et al. 2008. Reinforcement Learning In Soccer Simulation. Electrical Engineering Department Sharif University of Technology.
3 Memperbaiki steering behaviors pada agenagen agar gerakan yang dihasilkan saat perubahan state tidak kaku dan lebih halus. Hal ini dapat dilakukan dengan memperbanyak jenis steering behaviors yang digunakan, seperti Evade, Wander, dan lainnya. Selain itu juga dapat dilakukan dengan meningkatkan penggunaan jenis Pursuit atau Interpose pada pemain lapangan. DAFTAR PUSTAKA [GWY] Greater Wichita YMCA. 2007. About Futsal. http://www.wichitaymca.org/User Files/File/fsc/futsal-about.pdf. Bosch, Jan & Jilles van Gurp. 1999. On The Implementation of Finite State Machines. Department of Software Engineering and Computer Science: University of Karlskrona/Ronneby. Bourg, David M. & Glenn Seeman. 2004. AI for Game Developers. O’Reilly Publisher. Brownlee, Jason. 2009. A Finite State Machine Framework. http://ai-depot.com/FiniteState Machines/FSM-Framework.html.
14
LAMPIRAN
15
Laampiran 1 Diaagram kelas daari package FutsalClass F
Laampiran 2 Diaagram kelas daari package FSM FS
16
Laampiran 3 Diaagram state daari FutsalTeam mStates
Laampiran 4 Diaagram state daari FieldPlayeerStates
17
Laampiran 5 Diaagram state daari GoalKeepeerStates
mpilan saat sim mulasi berjalaan Laampiran 6 Tam
18
Lampiran 7 Tampilan subarea pada FutsalPitch
Lampiran 8 Tampilan Sustain Dot Analyzer
19
Lampiran 9 Tampilan informasi state pemain dan tim
Lampiran 10 Hasil pengujian FutsalTeamStates State saat ini
State selanjutnya
Pemicu
Status
KickOff
Defense
Tim A dan Tim B berada di areanya masingmasing dan permainan dimulai
OK
Defense
Attack
Tim sedang menguasai bola
OK
Defense
FullAttack
Tim musuh menendang bola keluar garis gawang di daerahnya sendiri
OK
Attack
Defense
Tim tidak sedang menguasai bola
OK
Attack
FullDefense
Tim menendang bola keluar garis gawang di daerah sendiri
OK
FullAttack
Defense
Tim tidak menguasai bola setelah terjadi corner kick di daerah lawan
OK
FullDefense
Attack
Tim menguasai bola setelah terjadi corner kick di daerahny sendiri
OK
[state apapun]
KickOff
Telah terjadi gol baik itu di daerah musuh atau di daerah sendiri, sehingga permainan dihentikan dan akan dimulai kembali
OK
20
Lampiran 11 Hasil pengujian FieldPlayerStates State saat ini
State selanjutnya
Pemicu
Status
Idle
Chase
- Pemain yang paling dekat dengan bola dan kiper tidak sedang memegang bola - Merupakan pemain bertahan dan daerah tim sedang diserang musuh
OK
Chase
Kick
Bola berada di jangkauan tendangan
OK
Chase
BackToFormation
Bukan pemain yang paling dekat dengan bola
OK
Kick
Idle
Bisa menendang bola atau bisa melakukan operan
OK
Kick
Chase
Tidak siap melakukan tendangan atau bola sedang dikuasai oleh kiper
OK
Kick
Dribble
Tidak sedang dalam kondisi terancam oleh musuh
OK
Dribble
Chase
Telah melakukan tendangan
OK
Receive
Chase
Bola berada dalam jangkauan penerima atau bola berhasil direbut oleh musuh
OK
BackToFormation
Chase
Merupakan pemain yang paling dekat dengan bola dan kiper tidak sedang memegang bola
OK
BackToFormation
Idle
Permainan tidak sedang dimulai dan pemain berada di posisi awal
OK
Support
BackToFormation
Tim tidak sedang menguasai bola
OK
OutKick
Support
Telah melakukan tendangan ke dalam
OK
CornerKick
Support
Telah melakukan tendangan sudut
OK
[state apapun]
BackToFormation
Menerima pesan agar kembali ke posisi awal
OK
[state apapun]
OutKick
Menerima pesan agar melakukan tendangan ke dalam
OK
[state apapun]
CornerKick
Menerima pesan agar melakukan tendangan sudut
OK
21
[state apapun]
Receive
Menerima pesan agar menerima operan bola
OK
[state apapun]
Support
Menerima pesan agar mendukung penyerang
OK
[state apapun]
Idle
Menerima pesan agar menunggu instruksi selanjutnya
OK
Lampiran 12 Hasil pengujian GoalKeeperStates State saat ini CoverGoal
State selanjutnya BringBallBack
Pemicu Bola berada di dalam jangkauan kiper dan berhasil ditangkap
Status OK
CoverGoal
BackToGoal
Tim sedang menguasai bola dan kiper berada di luar daerahnya
OK
CoverGoal
Intercept
Bola berada di dalam jangkauan kiper dan tim tidak sedang menguasai bola atau kiper bukan pemain yang paling dekat dengan bola
OK
BringBallBack
CoverGoal
Bola telah dikembalikan ke lapangan
OK
BackToGoal
CoverGoal
Tim tidak sedang menguasai bola dan kiper telah kembali ke posisinya
OK
Intercept
BackToGoal
Kiper keluar dari daerah jangkauannya dan merupakan pemain yang paling dekat dengan bola
OK
Intercept
BringBallBack
Bola berada dalam jangkauan kiper dan berhasil ditangkap
OK
[state apapun]
Intercept
Menerima pesan agar menerima bola dari pemain lain
OK
[state apapun]
BackToGoal
Menerima pesan agar kembali ke posisi awal
OK
22