GENERATOR PADA GAME 3D MAZE
SKRIPSI
M. AULIA RAMADHAN 171401099
PROGRAM STUDI S-1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2021
IMPLEMENTASI ALGORITMA A* DAN DEPTH-FIRST SEARCH MAZE GENERATOR PADA GAME 3D MAZE
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
M. AULIA RAMADHAN 171401099
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
MEDAN 2021
Judul : IMPLEMENTASI ALGORITMA A* DAN DEPTH- FIRST SEARCH MAZE GENERATOR PADA GAME 3D MAZE
Kategori : SKRIPSI
Nama : M. AULIA RAMADHAN
Nomor Induk Mahasiswa : 171401099
Program Studi : SARJANA (S-1) ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI UNIVERSITAS SUMATERA
UTARA
Medan, Desember 2021 Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Jos Timanta Tarigan, S.Kom., M.Sc Dian Rachmawati, S.Si, M.Kom
NIP. 198501262015041001 NIP. 198307232009122004
Diketahui/disetujui oleh
Program Studi S-1 Ilmu Komputer Ketua,
Dr. Amalia, S.T, M.T NIP. 197812212014042001
iii
Universitas Sumatera Utara PERNYATAAN
IMPLEMENTASI ALGORITMA A* DAN DEPTH-FIRST SEARCH MAZE GENERATOR PADA GAME 3D MAZE
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan, 27 Desember 2021
M. Aulia Ramadhan 171401099
1. Bapak Dr. Muryanto Amin, S.Sos., M.Si. selaku Rektor Universitas Sumatera Utara.
2. Ibu Dr. Maya Silvi Lydia B.Sc., M.Sc., selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara.
3. Ibu Dr. Amalia S.T., M.T. selaku Kepala Program Studi S-1 Ilmu Komputer, Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara.
4. Ibu Dian Rachmawati, S.Si., M.Kom selaku Dosen Pembimbing I yang telah banyak memberikan bimbingan, saran dan dukungan dalam pengerjaan skripsi ini.
5. Bapak Jos Timanta Tarigan, S.Kom., M.Sc selaku Dosen Pembimbing II yang telah banyak memberikan bimbingan, saran dan dukungan dalam pengerjaan skripsi ini.
6. Bapak Dr. Poltak Sihombing, M.Kom selaku Dosen Penguji I yang telah banyak memberikan bimbingan, saran dan dukungan dalam pengerjaan skripsi ini.
7. Bapak Handrizal S.Si, M.Comp.Sc, selaku Dosen Penguji II yang telah banyak memberikan bimbingan, saran dan dukungan dalam pengerjaan skripsi ini.
8. Seluruh tenaga pengajar dan pegawai Program Studi S-1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi, Universitas Sumatera Utara.
9. Orang tua tersayang Almarhum Ayah Ahmad Mauluddin, Ibu Nuriani Ekawati, serta Pak Sugito, adik-adik Nugroho Dwiki Ramadhan dan Cantyka Laily Sabila. Terima kasih untuk segala doa, nasihat dan kerja keras serta selalu memberikan dukungan semangat kepada penulis dalam menyelesaikan skripsi ini.
10. Teman-teman Keep Never Tired Learning dan Gamer Go Brrrr. Ferouz Syahalam, Rizki Ramadhan Tanjung, Zidane Fathur Rahman Lubis, Mailan Roni Saputra, Charlie dan teman-teman yang tidak bisa saya sebutkan satu per satu.
11. Teman-teman penulis, Try Jaka Gunawan, Rafley Husein Alwi, Fadhli Ibrahim Siregar serta seluruh keluarga besar Kom C angkatan 2017 Ilmu Komputer Universitas Sumatera Utara yang telah banyak memberi motivasi kepada penulis dalam pengerjaan
v
Universitas Sumatera Utara 12. Teman-teman seperjuangan Mahasiswa Ilmu Komputer Universitas Sumatera Utara stambuk 2017 yang telah banyak memberi motivasi kepada penulis dalam pengerjaan skripsi ini.
13. Dan semua pihak yang telah banyak membantu dan mendukung penulis yang tidak bisa disebutkan satu per satu.
Medan, Desember 2021
Penulis
ABSTRAK
Game dengan genre maze merupakan game dimana pemain harus melewati jalur-jalur bercabang untuk menemukan jalan keluar dan jika salah dalam memilih jalur akan bertemu dengan jalan buntu. Terdapat banyak game dengan genre maze, namun masih sering ditemukan maze yang dibuat secara manual oleh developer. Algoritma Depth-First Search diterapkan untuk mengenerasi maze secara otomatis sehingga maze yang dihasilkan memiliki jalur yang berbeda-beda setiap kali level game dimulai. Game maze dalam penelitian ini dikembangkan dengan menambahkan elemen yang dapat memberikan bantuan kepada pemain dalam game yaitu hint. Algoritma A* diterapkan dalam game ini sebagai hint untuk menemukan jalur terpendek menuju jalan keluar dari maze. Setelah dilakukan implementasi pada masing-masing algoritma diketahui bahwa pada rata-rata waktu yang dibutuhkan dalam implementasi algoritma Depth-First Search mengenerasi maze yaitu sekitar 1.58827ms dengan kompleksitas algoritma Θ(n1) dan rata-rata waktu yang dibutuhkan dalam implementasi algoritma A* untuk mencari jalan menuju tujuan yaitu sekitar 1.62207ms dengan kompleksitas algoritma Θ(n2).
Kata Kunci : Depth-First Search, Algoritma A*, Game Development, Maze.
vii
Universitas Sumatera Utara IMPLEMENTATION OF A* ALGORITHM AND DEPTH-FIRST SEARCH
MAZE GENERATOR IN 3D MAZE GAME
ABSTRACT
Games with the maze genre are games where players have to pass through branching paths to find a way out and if they choose the wrong path, they will meet a dead end. There are many games with the maze genre, but often that the maze is created manually by developers. The Depth-First Search algorithm is to create a maze automatically so that the resulting maze has a different path each time the game level starts. The maze game in this study was developed by adding element that can provide assistance to players in the game, namely hint. The A* algorithm is applied as a hint to search the shortest route to the exit of maze. After implementing each algorithm, it is known that in implementing the Depth-First Search algorithm the average time needed to generate a maze is about 1.58827ms with algorithm complexity is Θ(n1) and in implementing the A* algorithm the average time needed to find a way out is about 1.62207ms with algorithm complexity is Θ(n2).
Keywords : Depth-First Search, A* Algorithm, Game Development, Maze.
Hal.
Persetujuan ii
Pernyataan iii
Penghargaan iv
Abstrak vi
Abstract vii
Daftar Isi viii
Daftar Tabel x
Daftar Gambar xi
Daftar Lampiran xii
Bab 1 Pendahuluan
1.1 Latar Belakang 1
1.2 Rumusan Masalah 3
1.3 Batasan Masalah 3
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 4
1.6 Metode Penelitian 4
1.7 Sistematika Penulisan 5
Bab 2 Landasan Teori
2.1 Game Maze 6
2.2 Algoritma 7
2.3 Heuristik 8
2.4 Algoritma Depth-First Search (DFS) 8
2.5 Pathfinding 10
2.6 Algoritma A* 10
2.7 Kompleksitas Algoritma 12
2.8 Penelitian yang Relevan 13
Bab 3 Analisis dan Perancangan Sistem
3.1 Analisis Sistem 15
ix
Universitas Sumatera Utara
3.1.3 Analisis Proses 17
3.2 General Arsitektur Sistem 18
3.3 Pemodelan Sistem 19
3.3.1 Use Case Diagram 19
3.3.2 Activity Diagram 21
3.3.3 Sequence Diagram 22
3.4 Flowchart 23
3.4.1 Flowchart Sistem 23
3.4.2 Flowchart Algoritma DFS 25
3.4.3 Flowchart Algoritma A* 28
3.5 Perancangan Antarmuka 30
3.5.1 Rancangan Halaman Title Menu 30
3.5.2 Rancangan Halaman Cara Bermain 31
3.5.3 Rancangan Halaman Credit 32
3.5.4 Rancangan Antarmuka Dalam Game 33
3.5.5 Rancangan Halaman Pause Menu 34
Bab 4 Implementasi dan Pengujian
4.1 Implementasi Sistem 35
4.1.1 Tampilan Halaman Title Menu 35
4.1.2 Tampilan Halaman Cara Bermain 36
4.1.3 Tampilan Halaman Credit 37
4.1.4 Tampilan Permainan 38
4.1.5 Tampilan Halaman Pause Menu 39
4.2 Pengujian 40
4.2.1 Pengujian Implementasi Algoritma DFS 40 4.2.2 Perhitungan Manual Algoritma DFS 43 4.2.3 Pengujian Implementasi Algoritma A* 49 4.2.4 Perhitungan Manual Algoritma A* 52
4.3 Hasil Pengujian 66
4.3.1 Pengujian Mulai Game 66
4.3.2 Pengujian Hint 66
4.4 Kompleksitas Algoritma 66
4.4.1 Kompleksitas Algoritma DFS 67
4.4.2 Kompleksitas Algoritma A* 68
Bab 5 Kesimpulan dan Saran
5.1 Kesimpulan 70
5.2 Saran 71
Daftar Pustaka 72
Lampiran
Hal.
Tabel 4.1 Hasil Real Running Time Algoritma DFS 42
Tabel 4.2 Hasil Real Running Time Algoritma A* 52
Tabel 4.3 Kompleksitas Algoritma DFS 67
Tabel 4.4 Kompleksitas Algoritma A* 68
xi
Universitas Sumatera Utara DAFTAR GAMBAR
Hal.
Gambar 2.1 Contoh Game Maze 7
Gambar 2.2 Contoh maze yang dihasilkan dengan algoritma DFS 9
Gambar 2.3 Grafik Notasi Big-Theta 13
Gambar 3.1 Ishikawa Diagram 16
Gambar 3.2 General Arsitektur 18
Gambar 3.3 Use Case Diagram 20
Gambar 3.4 Acitivity Diagram 21
Gambar 3.5 Sequence Diagram 22
Gambar 3.6 Flowchart Sistem 23
Gambar 3.7 Flowchart Algoritma DFS 27
Gambar 3.8 Flowchart Algoritma A* 29
Gambar 3.9 Rancangan Halaman Title Menu 30
Gambar 3.10 Rancangan Halaman Cara Bermain 31
Gambar 3.11 Rancangan Halaman Credit 32
Gambar 3.12 Rancangan Antarmuka Permainan 33
Gambar 3.13 Rancangan Halaman Pause Menu 34
Gambar 4.1 Halaman Title Menu 36
Gambar 4.2 Halaman Cara Bermain 36
Gambar 4.3 Halaman Credit 37
Gambar 4.4 Tampilan Permainan (Gameplay) 38
Gambar 4.5 Hasil Pencarian Jalan Keluar dengan Algoritma A* 38
Gambar 4.6 Halaman Pause Menu 39
Gambar 4.7 Hasil Pengujian Algoritma DFS dalam Mengenerasi Maze
Pada Unity Editor 41
Gambar 4.8 Hasil Pengujian Algoritma DFS dalam Mengenerasi Maze
Pada Game 42
Gambar 4.9 Hasil Struktur Pohon 48
Gambar 4.10 Hasil Pengujian Algoritma A* Pada Unity Editor 50 Gambar 4.11 Hasil Pengujian Algoritma A* Pada Game 51
Hal.
Lampiran 1 Listing Program A-1
Lampiran 2 Daftar Riwayat Hidup B-1
Universitas Sumatera Utara BAB 1
PENDAHULUAN
1.1 Latar Belakang
Game adalah media hiburan yang tak hanya menghibur, tapi juga dapat meningkatkan kemampuan cara kerja otak. Karena itu, game telah menjadi media hiburan utama bagi banyak orang, baik tua maupun muda. Dengan perkembangan kreativitas, teknologi serta inovasi, genre game menjadi lebih beragam, namun genre yang masih populer hingga kini adalah game maze.
Game maze adalah genre pada video game. Pada game bergenre ini, pemain harus melalui jalur-jalur yang bercabang untuk menemukan jalan keluar. Pemain harus menemukan jalan yang benar dan jika mereka memilih jalan yang salah mereka berakhir di jalan buntu. Oleh karena itu, game ini akan melatih konsentrasi dan mengasah otak pemain untuk memilih jalan.
Ada banyak algoritma yang dapat digunakan untuk membuat maze seperti algoritma DFS (Depth-First Search), algoritma Kruskal, algoritma Prim dan lain-lain.
Namun penelitian ini menggunakan algoritma Algoritma DFS agar maze yang dihasilkan tidak memiliki banyak memasuki ruang buntu yang nantinya menyulitkan pemain pencarian jalan keluar (Kurniawan & Jumeilah, 2015).
Algoritma DFS dalam maze generation lebih dikenal sebagai algoritma recursive backtracker karena graph search bukanlah satu-satunya aplikasi dari algoritma ini, sehingga nama “search” dianggap kurang tepat. Aspek penting yang membedakan algoritma recursive backtracker dengan algoritma DFS pada umumnya adalah randomization (Foltin, 2011).
Algoritma searching dibagi menjadi dua kelompok: informed dan uninformed.
Metode uninformed (blind search) digunakan jika lokasi target tidak ditentukan. Pada metode informed, fungsi heuristik umumnya digunakan untuk mencari target sehingga arah pencariannya mengarah ke target (Noori & Moradi, 2015). Salah satu algoritma informed search adalah A*, algoritma yang digunakan untuk menyelesaikan banyak masalah, termasuk pathfinding (Mathew & Malathy, 2015). Penggunaan algoritma A*
dalam penelitian ini adalah untuk memberikan hint yang muncul sementara untuk menunjukkan jalan keluar dari maze.
Pengembangan video game memerlukan game engine, yang digunakan sebagai dasar pengembangan video game sehingga developer video game dapat membuat video game dengan cepat tanpa perlu membuatnya dari dasar. Unity merupakan game engine yang digunakan oleh penulis karena sifatnya yang cross-platform serta dapat men- deploy game pada banyak platform termasuk web (Dickson, 2015). Unity mudah untuk dipelajari oleh pelajar dan dapat digunakan untuk membuat game dalam jangka waktu terbatas (Dickson et al., 2017).
Berdasarkan uraian di atas, penulis akan mengembangkan sebuah game 3D pada platform Android yang memiliki beberapa objek seperti musuh dan collectible item yang di-generate secara random serta objek dinding sebagai pendukung maze.
Algoritma A* digunakan dalam hint untuk menemukan jalur terdekat dari posisi karakter pemain hingga keluar dari maze dan Algoritma DFS digunakan untuk membuat maze.
Oleh karena itu, penulis ingin menggunakan algoritma-algoritma di atas untuk melakukan penelitian dengan topik pembahasan game development dan heuristik dengan judul “Implementasi Algoritma A* dan Depth First Search Maze Generator pada Game 3D Maze”.
3
Universitas Sumatera Utara 1.2 Rumusan Masalah
Pada penelitian ini permasalahan mengenai bagaimana mengimplementasikan Algoritma DFS dalam pembuatan maze dan implementasi Algoritma A* pada hint sementara yang menunjukkan jalan keluar.
1.3 Batasan Masalah
Batasan-batasan masalah penelitian ini adalah sebagai berikut:
1. Game dibangun menggunakan bahasa pemrograman C# dan game engine Unity.
2. Game dapat berjalan pada platform Android.
3. Menggunakan beberapa asset dari Asset Store dan beberapa sumber dari internet yang tanpa bayar atau gratis.
4. Game tidak membutuhkan koneksi internet (bersifat offline) sehingga hanya dapat dimainkan oleh satu orang.
5. Game memiliki beberapa item seperti collectible item, health recovery item, dan hint item.
6. Hint mencari jalur terpendek menuju jalan keluar maze menggunakan algoritma A*.
7. Pembuatan maze dengan menggunakan algoritma DFS.
8. Untuk pengukuran performa algoritma DFS dan A* digunakan running time (ms) dan kompleksitas algoritma (big Θ).
1.4 Tujuan Penelitian
Tujuan penelitian ini adalah sebagai berikut:
1. Menerapkan algoritma DFS dalam pembuatan maze dan algoritma A* untuk hint yang menunjukkan jalan terpendek menuju jalan keluar maze dalam game.
2. Mengetahui running time dan kompleksitas algoritma DFS dan algoritma A*.
1.5 Manfaat Penelitian
Manfaat dari penelitian ini adalah :
1. Mengetahui cara kerja algoritma DFS untuk membuat maze secara otomatis.
2. Mengetahui cara kerja algoritma A* untuk menemukan jalan keluar dari maze.
3. Mengembangkan game yang lebih menyenangkan dan menarik untuk dimainkan.
1.6 Metode Penelitian
Metode penelitian yang dilakukan dalam penelitian ini adalah:
1. Studi Pustaka
Pada tahap ini, peneliti mencari informasi terkait topik penelitian dari berbagai sumber terpercaya dan melakukan studi literatur melalui buku, jurnal penelitian dan sumber-sumber lain yang berhubungan dengan algoritma DFS pada maze generation, algoritma A*, game engine Unity.
2. Analisis dan Perancangan Sistem
Pada tahap ini, peneliti membuat desain sistem sesuai dengan kebutuhan sehingga dapat mengimplementasikan algoritma DFS pada maze generation dan A*, melakukan perancangan diagram Ishikawa, use case diagram, activity diagram, sequence diagram, flowchart, dan user interface serta tampilan pada sistem.
3. Implementasi Sistem
Pada tahap ini, peneliti mengimplementasikan sistem berdasarkan apa yang telah dirancang dengan menggunakan bahasa pemrograman C# dan game engine Unity.
4. Pengujian Sistem
Pada tahap ini, peneliti melakukan uji coba program sistem untuk memeriksa apakah sistem dan kedua algoritma bekerja sesuai dengan fungsinya.
5. Dokumentasi Sistem
Pada tahap ini, peneliti mendokumentasikan segala sesuatu mulai dari metode analisis hingga percobaan sistem dalam bentuk skripsi.
5
Universitas Sumatera Utara 1.7 Sistematika Penulisan
Berikut ini adalah penjelasan mengenai beberapa bagian penting dari sistematika penulisan skripsi.
BAB 1 PENDAHULUAN
Pada bab ini terdapat latar belakang masalah dan menjelaskan rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metode penelitian, dan sistematika penulisan skripsi.
BAB 2 LANDASAN TEORI
Dalam bab ini terdapat tinjauan teoritis dari algoritma-algoritma yang digunakan, serta penjelasan tambahan yang berkaitan dengan penelitian ini.
BAB 3 ANALISIS DAN PERANCANGAN
Dalam bab ini terdapat arsitektur umum untuk penelitian sistem dan analisis masalah untuk menganalisis hal-hal yang diperlukan untuk membangun sistem.
BAB 4 IMPLEMENTASI DAN PENGUJIAN
Pada bab ini mencakup proses implementasi hal-hal yang diperlukan untuk membangun sistem dan menguji masalah yang telah diuraikan sebelumnya.
BAB 5 KESIMPULAN DAN SARAN
Pada bab ini, penulis menguraikan kesimpulan dari pembahasan pada bab-bab sebelumnya dan memberikan saran sebagai masukan atas permasalahan yang muncul dan diharapkan dapat membantu menyelesaikan permasalahan tersebut.
BAB 2
LANDASAN TEORI
2.1 Game Maze
Video game adalah game elektronik di mana user berinteraksi dengan user interface untuk menghasilkan feedback visual pada perangkat tampilan video seperti televisi/monitor, headset VR, atau touchscreen. Menurut Esposito (2005), video game adalah permainan yang menggunakan peralatan audiovisual serta dapat memiliki sebuah cerita di dalamnya. Maksud dari peralatan audiovisual disini adalah sistem elektronik dengan kemampuan komputasi, perangkat input (controller, mouse, keyboard, dan lain-lain), dan perangkat output (layar, loudspeaker, dan lain-lain). Bisa jadi berupa arcade video game, konsol video game, konsol genggam video game, komputer, handphone, dan sebagainya.
Maze adalah kumpulan jalur-jalur bercabang kompleks dan memiliki banyak jalan buntu yang harus dicari jalan keluarnya. Dalam penerapannya di dunia nyata, maze digunakan sebagai taman wisata yang tidak hanya menghibur tetapi juga membutuhkan keberanian dan kecerdikan untuk dapat keluar.
Maze juga dapat diaplikasikan dalam bentuk game. Ada dua pendekatan yang berbeda untuk menghasilkan maze, dapat dirancang secara manual atau dihasilkan secara otomatis. Untuk dapat menghasilkan maze secara otomatis, diperlukan sebuah algoritma untuk pembuatannya. Terdapat beberapa algoritma berbeda yang dapat digunakan untuk membuat maze, tetapi pada penelitian ini hanya menggunakan algoritma DFS.
7
Universitas Sumatera Utara Gambar 2.1 Contoh Game Maze (Sumber:
https://play.google.com/store/apps/details?id=com.Lot10Games.EpicMazeBall3D)
2.2 Algoritma
Kata algoritma berasal dari nama seorang ahli matematika asal Persia abad ke-9 Muhammad ibn Musa al-Khwarizmi yang mana Khwarizmi dilatinkan menjadi Algoritmi. Dalam Ilmu Komputer, algoritma adalah proses langkah demi langkah yang digunakan untuk memecahkan suatu masalah atau melakukan suatu perhitungan.
Dalam algoritma, langkah-langkahnya haruslah logis dan dapat ditentukan bernilai benar atau salah. Ciri-ciri algoritma menurut Donald E. Knuth (1997) adalah:
a. Finiteness, algoritma tidak boleh berjalan terus menerus tanpa henti. Dengan kata lain, algoritma harus memiliki batas atau harus berhenti setelah langkah- langkah yang diperlukan telah selesai.
b. Definiteness/Unambigous, algoritma harus jelas. Dengan kata lain, langkah- langkah yang dilakukan algoritma harus memiliki maksud serta tujuan yang jelas agar tidak ambigu.
c. Effectiveness, algoritma tidak boleh memiliki suatu langkah yang tidak perlu dilakukan.
d. Input, algoritma membutuhkan nol atau lebih input yang terdefinisi dengan baik.
e. Output, algoritma membutuhkan satu atau lebih output yang terdefinisi dengan baik dan harus sesuai dengan output yang diinginkan (Sitorus, 2015).
2.3 Heuristik
Teknik heuristik adalah segala pendekatan dalam pemecahan masalah yang menggunakan metode yang tidak dijamin akan optimal, tetapi cukup memadai untuk mencapai tujuannya.
Dalam Ilmu Komputer, heuristik adalah teknik pemecahan masalah dengan lebih cepat ketika metode konvensional terlalu lambat untuk menyelesaikannya. Walaupun cepat, solusi yang diberikan tidak dijamin optimal, lengkap, akurat ataupun tepat.
2.4 Algoritma Depth-First Search (DFS)
Depth-First Search adalah algoritma pencarian pohon dimana node anak pertama diperluas dan berjalan terus menerus sampai node tujuan atau node tanpa anak ditemukan. Kemudian dilakukan backtracking, dimana algoritma kembali ke node- node yang belum selesai ditelusuri (Inggiantowi, 2008).
Terdapat banyak algoritma yang dapat membuat maze, namun penerapan dengan menggunakan algoritma DFS dikenal sebagai salah satu yang paling mudah (Kozlova et al., 2015). Dalam penggunaannya untuk menghasilkan maze, algoritma DFS lebih sering disebut sebagai Recursive Backtracker. Aspek penting yang membedakan algoritma Recursive Backtracker dari algoritma DFS pada umumnya adalah randomization (Foltin, 2011).
Setiap node diinisialisasi agar memiliki dinding di setiap sisi. Langkah awal DFS adalah dengan memilih node secara acak, node ini adalah node awal, kemudian mengunjungi seluruh node satu per satu menghancurkan dinding hingga seluruh node
9
Universitas Sumatera Utara dikunjungi (Kozlova et al., 2015). Berikut pada Gambar 2.2 contoh maze yang dibuat dengan algoritma DFS.
Gambar 2.2 Contoh maze yang dibuat dengan algoritma DFS (Kozlova et al., 2015)
Langkah-langkah algoritma DFS untuk membuat maze adalah sebagai berikut:
1. Sebuah node acak dipilih sebagai titik awal. Node tersebut ditambahkan ke dalam stack.
2. Salah satu node tetangga dari node saat ini dipilih secara acak.
3. Jika node tetangga yang dipilih masih belum dicek oleh algoritma, dinding diantara node saat ini dan node yang dipilih dihancurkan. Langkah 1 hingga 3 diulang terus menerus, tapi kini titik awalnya adalah node tetangga yang dipilih.
4. Jika node tetangga yang dipilih sudah dicek, maka dipilih node tetangga yang lain dan ulangi langkah 3.
5. Jika seluruh node tetangga dari node saat ini telah dicek, maka kembali ke node sebelumnya dan jadikan node saat ini, lalu lakukan langkah 2.
6. Algoritma berhenti ketika seluruh node telah dicek.
2.5 Pathfinding
Pathfinding adalah proses pencarian jalur tercepat antara dua titik, yaitu dari titik asal ke titik tujuan. Contoh masalah tersebut termasuk perencanaan transportasi umum, perutean lalu lintas telepon, navigasi maze dan perencanaan jalur robot (Cui & Shi, 2011). Titik-titik (node) tersebut dihubungkan oleh garis (edge). Pathfinding bekerja dengan cara mencari sebuah graf, dimulai dari satu node kemudian node yang berdekatan dijelajahi hingga mencapai node tujuan, biasanya dengan tujuan untuk menemukan biaya rute termurah.
2.6 Algoritma A*
Algoritma A* adalah algoritma pencarian yang dapat menemukan jalur terpendek antara node awal dan node akhir. Algoritma ini dapat menjadi solusi untuk banyak masalah, misalnya pada peta, dimana algoritma ini digunakan untuk menghitung jarak terpendek antara titik awal dan titik tujuan.
Algoritma A* dapat dikatakan sebagai lanjutan dari algoritma Dijkstra. Dalam pathfinding, algoritma Dijkstra mencoba setiap jalur dan setiap node untuk menemukan jalur terpendek antara titik awal dan titik tujuan, sedangkan A* memiliki atribut tambahan yaitu heuristic, yang memungkinkan untuk menemukan jalur terpendek tanpa perlu memeriksa setiap jalur dan node sehingga lebih cepat dibanding Dijkstra.
Algoritma A* adalah algoritma best-first search yang menggunakan open list dan closed list untuk menemukan jalur terbaik menuju destinasi. Open list adalah antrian berisi node-node yang akan diperiksa, yaitu nilai heuristic-nya telah dihitung dan masih berpeluang untuk dipilih sebagai node terbaik. Closed list adalah antrian berisi node-
11
Universitas Sumatera Utara node yang sudah pernah dipilih sebagai node terbaik dan tidak dapat dipilih sebagai node terbaik lagi (peluangnya sudah tertutup), dengan kata lain sudah pernah diperiksa (Widodo & Ahmad, 2018).
Secara matematis, fungsi estimasi biaya jalan yang dibutuhkan menuju destinasi adalah sebagai berikut.
F(n) = g(n) + h(n) dengan
F(n) = fungsi estimasi biaya jalan yang dibutuhkan menuju destinasi g(n) = menghitung biaya jalan antara node awal dan node saat ini
h(n) = heuristic untuk menghitung estimasi biaya jalan dari node saat ini menuju node tujuan
Berikut adalah tahapan algoritma A* (Nillson, 1998):
1. Buat open list dan closed list yang kosong. Node awal ditambahkan ke dalam open list.
2. Ulangi langkah-langkah dibawah:
a. Temukan node dengan biaya F terendah di dalam open list dan jadikan sebagai node saat ini.
b. Node saat ini dihapus dari open list dan ditambah ke dalam closed list.
c. Untuk node-node tetangga dari node saat ini:
i. Jika node tetangga berada di dalam closed list, abaikan.
ii. Jika node tetangga tidak berada di dalam open list, tambahkan ke dalam open list. Jadikan node saat ini menjadi parent node tersebut. Catat nilai f, g dan h dari node ini.
iii. Jika node tetangga sudah berada dalam open list, periksa apakah ini jalan yang lebih baik. Jika iya, ubah parent-nya menjadi node saat ini, dan hitung ulang nilai f dan g.
d. Berhenti ketika
i. Node destinasi ditambah ke dalam closed list.
ii. Gagal untuk menemukan node destinasi, dan open list-nya kosong.
3. Telusuri mundur dari node destinasi ke node awal.
2.7 Kompleksitas Algoritma
Algoritma yang baik harus tepat sasaran, terstruktur dan, di atas segalanya, efisien.
Waktu eksekusi algoritma dan ruang memori menjadi ukuran apakah suatu algoritma memiliki kualifikasi tersebut. Semakin minimum kebutuhan waktu dan ruang maka semakin efisien suatu algoritma (Rahayuningsih, 2016).
Kompleksitas algoritma adalah ukuran jumlah waktu atau ruang yang dibutuhkan ketika algoritma berjalan. Dari pengertian tersebut kompleksitas algoritma dapat dibagi menjadi dua jenis, yaitu kompleksitas waktu dan kompleksitas ruang. Dalam penelitian ini, hanya kompleksitas waktu yang dianalisis.
Kompleksitas waktu, T(n), adalah banyaknya operasi yang dilakukan untuk menjalankan algoritma berdasarkan ukuran input n. Oleh karena itu, banyaknya operasi yang dilakukan oleh suatu algoritma digunakan untuk mengukur kompleksitas waktu (Tjaru, 2009).
Kompleksitas waktu dapat dibagi menjadi tiga jenis. Kompleksitas waktu dilambangkan dengan Ω(g(n))(Big-Omega) untuk best case (kasus terbaik), Θ(g(n))(Big-Theta) untuk average case (kasus rata-rata), dan O(g(n))(Big-O) untuk worst case (kasus terburuk). Dalam penelitian ini, hanya Notasi Θ (Big-Theta) – (Average case) yang dibahas.
Fungsi T(n) termasuk ke dalam himpunan Θ(g(n), dilambangkan T(n) ∈ Θ(g(n)), jika terdapat konstan positif c1 dan c2 dimana T(n) dapat berada diantara c1g(n) dan c2g(n) untuk semua n bernilai besar. Sehingga
c2g(n)≤t(n)≤c1g(n) untuk semua n≥n0
13
Universitas Sumatera Utara Grafik fungsi big-theta dapat dilihat pada Gambar 2.3.
Gambar 2.3 Grafik Notasi Big-Theta (Cormen, 2009)
2.8 Penelitian yang Relevan
Berikut ini adalah beberapa penelitian terdahulu yang berkaitan dengan penelitian yang ingin dilakukan penulis:
1. Pada penelitian (Kurniawan & Jumeilah, 2015) yang berjudul “Penerapan Algoritma Depth-First Search Sebagai Maze Generator pada Game Labirin Menggunakan Unity 3D”, disimpulkan bahwa pembuatan maze dengan menggunakan algoritma pencarian DFS biasanya memiliki jalur yang panjang dan berliku dengan sedikit jalan buntu.
2. Pada penelitian (Kozlova et al., 2015) yang berjudul “Examination of Representational Expression in Maze Generation Algorithms”, disebutkan bahwa algoritma DFS adalah salah satu algoritma paling sederhana untuk menghasilkan maze.
3. Pada penelitian (Cui & Shi, 2011) yang berjudul “A*-based Pathfinding in Modern Computer Games”, disebutkan bahwa algoritma A* merupakan salah satu dari banyak algoritma yang dapat memecahkan masalah shortest path dan terbukti merupakan solusi yang optimal untuk pathfinding.
4. Pada penelitian (Foltin, 2011) yang berjudul “Automated Maze Generation and Human Interaction”, dijelaskan beberapa algoritma-algoritma pembuatan maze seperti Algoritma Prim , Recursive Backtracker, Kruskal, Hunt and Kill dan lain- lain serta implementasinya.
5. Pada penelitian (Noori & Moradi, 2015) yang berjudul “Simulation and Comparison of Efficency in Pathfinding algorithms in Games”, disebutkan bahwa algoritma A* membutuhkan informasi mengenai lokasi tujuan dan kinerjanya bergantung pada penggunaan fungsi heuristik.
Universitas Sumatera Utara BAB 3
ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem
Analisis sistem adalah metode penyelesaian masalah dimana sistem digambarkan dari segi komponen sehingga tampak bagaimana komponen-komponen tersebut bekerja dan berinteraksi untuk merancang suatu sistem. Analisis sistem melibatkan beberapa tahap, yaitu analisis masalah dan analisis kebutuhan.
3.1.1 Analisis Masalah
Game maze merupakan game dimana pemain harus menemukan jalan keluar dari maze yang diberikan. Pada umumnya terdapat beberapa level yang berbeda-beda sehingga maze yang harus diselesaikan pemain juga bervariasi. Namun, apabila pemain mengulang kembali game-nya dari awal, maka pemain akan menemukan level maze dengan variasi yang sama dengan sebelumnya sehingga permainan pun menjadi tidak menarik dan membosankan. Untuk mengatasi masalah itu, diperlukan sebuah cara agar developer game dapat menghasilkan maze secara otomatis yang berbeda-beda tiap levelnya dengan menerapkan algoritma DFS. Karena semakin tinggi level yang dicapai pemain maka semakin besar pula ukuran maze, maka diperlukan juga sebuah hint jalan keluar maze yang muncul sementara yang diterapkan menggunakan algoritma A* agar dapat memudahkan pemain dan membuat game semakin menarik.
Analisis masalah dilakukan untuk mengidentifikasi mengapa suatu masalah terjadi dan apakah masalah tersebut dapat diselesaikan. Identifikasi dilakukan dengan menggunakan diagram Ishikawa (Fishbone Diagram) yang merupakan diagram yang
bertujuan menggambarkan dan mengidentifikasi suatu masalah dengan mencari penyebab dari masalah yang ingin diselesaikan. Gambar 3.1 merupakan gambaran umum atau diagram Ishikawa mengenai masalah pada penelitian ini.
Gambar 3.1 Ishikawa Diagram
Pada Gambar 3.1 dapat dilihat komponen paling kanan merupakan permasalahan utama yaitu implementasi algoritma A* dan Depth First Search Maze Generator pada game 3D maze, dan kategori masalah terdiri dari human, method, system dan material.
3.1.2 Analisis Kebutuhan
Sebuah sistem dapat dikatakan baik bila memenuhi standar, spesifikasi, atau kriteria untuk penggunanya. Untuk dapat memenuhi kriteria tersebut, maka analisis kebutuhan sistem dibagi menjadi dua bagian yaitu kebutuhan fungsional dan kebutuhan non-fungsional.
17
3.1.2.1. Kebutuhan Fungsional
Kebutuhan fungsional sistem adalah kebutuhan yang menjelaskan kemampuan yang dapat dilakukan oleh sistem. Kebutuhan fungsional dari aplikasi yang dirancang adalah sebagai berikut:
a. Sistem harus dapat mengenerasi maze dengan algoritma DFS.
b. Sistem harus dapat mengenerasi musuh dan collectible item secara random.
c. Sistem harus dapat menerima masukan pergerakan karakter user dalam game.
d. Sistem harus dapat melakukan pencarian jalur optimum dari maze dengan menggunakan algoritma A* jika item hint diambil.
3.1.2.2. Kebutuhan Non-fungsional
Kebutuhan non-fungsional adalah kebutuhan yang menjelaskan batasan sistem seperti batasan waktu, batasan pengembangan proses, dan batasan-batasan lain yang mendukung kinerja sistem. Kebutuhan non-fungsional dari aplikasi yang dirancang adalah sebagai berikut:
a. Aplikasi tidak memerlukan koneksi internet.
b. Aplikasi dapat dimainkan dengan smartphone Android.
c. Aplikasi yang dibangun tidak memerlukan perangkat dengan spesifikasi tinggi maupun perangkat tambahan sehingga tidak memerlukan biaya besar.
d. Tampilan GUI aplikasi dirancang sederhana dan menarik sehingga mudah dipahami dan meningkatkan pengalaman bermain user.
3.1.3 Analisis Proses
Pada sistem akan diimplementasikan algoritma DFS pada pembuatan maze dan algoritma A* sebagai hint untuk mencari jalan keluar dari maze.
Ketika user memulai permainan dengan menekan tombol mulai game pada title menu, sistem akan mengenerasi maze dengan menggunakan algortima DFS. Kemudian sistem juga akan mengenerasi karakter yang dapat dikendalikan oleh user, musuh-
musuh, collectible item dan item hint. Selanjutnya, apabila karakter pemain menyentuh item hint, maka sistem akan mencari jalan keluar optimum dari maze.
3.2 General Arsitektur Sistem
General Arsitektur Sistem adalah perancangan yang menggambarkan proses, alur dan interaksi antar komponen dalam suatu sistem. Pada Gambar 3.2 terdapat perancangan keseluruhan aplikasi.
Gambar 3.2 General Arsitektur
Langkah pertama setelah pemain memasuki game adalah membuat maze dengan menggunakan algoritma DFS / Recursive Backtracking. Maze dibuat memiliki titik awal (posisi awal pemain) dan titik tujuan. Maze yang dibentuk hanya memiliki satu titik tujuan dan harus memiliki jalur untuk mencapainya.
Langkah berikutnya adalah menghasilkan collectible item, health recovery item,
19
item bisa didapatkan oleh pemain apabila pemain menyentuhnya. Item ini berfungsi sebagai patokan skor prestasi pemain. Health recovery item digunakan untuk meningkatkan health point. Musuh dibuat bergerak secara random sehingga pemain tidak dapat memprediksi pergerakannya, apabila pemain bersentuhan dengan musuh maka health point pemain akan berkurang. Terdapat musuh khusus yang akan menjatuhkan hint yang akan menunjukkan jalan keluar dari maze menggunakan algoritma A*.
Langkah yang paling penting dalam game maze ini adalah pergerakan pemain.
Pemain yang menentukan apakah game terus berlanjut atau berakhir. Apabila pemain dapat menemukan jalan keluar dari maze maka permainan akan terus berlanjut di mana maze akan diperbarui (di-generate kembali) dengan ukuran yang lebih besar dan kesulitan yang bertambah. Pemain diberikan health point atau darah di mana jika darah mencapai 0, game akan berakhir. Pemain memiliki cara untuk menghindari akhir permainan yaitu melawan musuh dan terus menerus mencapai jalan keluar dari maze.
3.3 Pemodelan Sistem
Pada tahap pemodelan sistem, diberikan gambaran terhadap sistem yang dirancang dan bagaimana sistem tersebut bekerja.
3.3.1 Use Case Diagram
Use Case Diagram adalah diagram yang menampilkan interaksi yang dapat dikerjakan oleh user terhadap sistem serta proses-proses yang berlangsung di dalamnya. Diagram ini menjelaskan kebutuhan fungsional yang sudah dijelaskan sebelumnya. Use case diagram pada sistem ditampilkan pada Gambar 3.3.
Gambar 3.3 Use Case Diagram
Pada Gambar 3.3 dijelaskan bahwa saat user menjalankan game, user berada di menu utama yang mana ia dapat memilih tiga pilihan yaitu mulai game, instruksi game dan credit. Pada credit, sistem akan menampilkan credit dari aset-aset yang digunakan pada game. Pada instruksi game, sistem akan menampilkan cara untuk memainkan game. Pada mulai game, sistem mengenerasi maze dengan menggunakan algoritma DFS serta elemen-elemen di dalamnya seperti collectible item, musuh dan hint. Setelah itu user dapat menggerakkan karakter sesuai keinginan dimana user dapat menjumpai musuh, item atau hint yang dapat menunjukkan jalan keluar dari maze dengan menggunakan algoritma A*.
21
3.3.2 Activity Diagram
Activity Diagram adalah diagram yang menampilkan bagaimana aktivitas dan tindakan sistem, dimulai dari bagaimana sistem dimulai sampai dengan bagaimana sistem berakhir. Activity diagram pada sistem ditunjukkan pada Gambar 3.4.
Gambar 3.4 Acitivity Diagram
Pada Gambar 3.4 di atas dapat dilihat, kolom kiri merupakan aktivitas dari user yang memberikan tindakan kepada sistem dan kolom kanan adalah aktivitas dari sistem yang memberikan respons terhadap aktivitas user.
3.3.3 Sequence Diagram
Sequence Diagram adalah diagram yang menggambarkan bagaimana objek saling berinteraksi di dalam sistem yang disusun secara berurutan. Gambar 3.5 menunjukkan Sequence Diagram dari sistem yang dirancang.
Gambar 3.5 Sequence Diagram
Gambar 3.5 menunjukkan interaksi sekuensial user dengan sistem. Aksi user pada sistem ditunjukkan oleh panah padat, dan respons sistem pada user ditunjukkan oleh panah putus-putus.
23
3.4 Flowchart
Flowchart adalah diagram yang menunjukkan langkah-langkah untuk memecahkan masalah dalam bentuk simbol grafik yang secara berurutan dihubungkan oleh panah.
3.4.1 Flowchart Sistem
Gambar 3.6 Flowchart Sistem
Flowchart sistem yang ditunjukkan pada Gambar 3.6 dijelaskan di bawah ini.
1. Start
Pada tahap ini, user membuka aplikasi dan memulai game.
2. Size.x, size.y = 3, Score = 0 dan healthPoint = 3
Ukuran maze, skor dan darah pemain diinisialisasi di awal permainan.
3. Menghasilkan maze dengan algoritma DFS
Pada tahap ini, sistem akan menjalankan algoritma DFS untuk mengenerate maze serta musuh, collectible items, dan hint.
4. Input pergerakan
Pada tahap ini, user dapat mengendalikan karakter yang ada di dalam game.
User dapat meng-input pergerakan karakter dengan menggunakan tombol- tombol yang dapat disentuh langsung dari layar device android.
5. If curPosition = goal
Jika posisi karakter berada di node destinasi, maka pemain berhasil keluar dari maze di level tersebut dan sistem akan mengenerasi ulang maze untuk level selanjutnya.
6. Size.x++ size.y++
Pada tahap ini, ukuran maze di-increment.
7. If player collide with enemy
Darah atau healthPoint karakter pemain akan berkurang ketika bertabrakan dengan musuh.
8. If player defeat enemy
Apabila pemain mengalahkan musuh, maka healthPoint musuh diset menjadi nol dan musuh pun menghilang.
9. If player collide with collectible items
Jika karakter pemain bertabrakan dengan collectible items maka skor pemain akan ditambah 1.
10. If player collide with hint item
25
Apabila pemain bertabrakan dengan hint item maka sistem akan menjalankan algoritma A* untuk mencari jalan keluar dari maze dengan mengambil posisi karakter pemain saat ini sebagai node awalnya. Hint ditampilkan hanya selama 6 detik.
11. If healthPoint == 0
Jika healthPoint karakter pemain mencapai nol, maka permainan dihentikan dan akan muncul sebuah menu yang menentukan pemain dapat mengulangi atau keluar dari permainan.
12. Play Again?
Pada akhir permainan setelah pemain kehabisan healthPoint, akan muncul pilihan apakah pemain ingin mengulangi permainan atau keluar dari permainan. Jika pemain ingin mengulangi permainan, maka maze akan digenerasi ulang dan level game akan di-reset kembali dari awal. Jika tidak, maka permainan berakhir.
13. End
Game berakhir apabila user memilih untuk keluar dari aplikasi.
3.4.2 Flowchart Algoritma DFS
Algoritma DFS memiliki alur seperti yang ditunjukkan pada Gambar 3.7, dimana proses terjadi ketika user memasuki permainan.
Pada awalnya diset ukuran maze serta diset dinding-dinding pada setiap node-nya.
Kemudian, sistem akan menentukan node awal secara acak. Lalu, sistem memilih salah satu node tetangga dari node saat ini secara acak. Kemudian sistem memeriksa apakah node yang dipilih sudah pernah dikunjungi sebelumnya atau tidak. Jika sudah, maka sistem akan kembali ke node sebelumnya dan mengulangi langkah memilih salah satu node tetangga dari node saat ini secara acak. Jika belum, maka sistem akan menghancurkan dinding dari node yang dipilih. Lalu, sistem akan memeriksa apakah jumlah node yang dikunjungi lebih kecil dari node total. Jika iya, maka sistem akan
kembali ke langkah memilih salah satu node tetangga dari node saat ini secara acak.
Jika tidak, maka sistem akan berhenti menjalankan algoritma.
27
Gambar 3.7 Flowchart Algoritma DFS
3.4.3 Flowchart Algoritma A*
Algoritma A* memiliki alur kerja seperti ditunjukkan pada Gambar 3.8 dimana proses pencarian jalan keluar dari maze dilakukan setelah user mendapatkan hint item.
Pada awalnya sistem membuat list dengan nama OPEN dan CLOSED. Kemudian node awal yang merupakan posisi karakter user pada game saat ini dimasukkan ke dalam OPEN list. Selanjutnya, sistem akan menetapkan node terbaik yang ada dalam OPEN list (node dengan nilai f paling kecil) sebagai node saat ini. Kemudian sistem akan mengecek apakah node saat ini merupakan node tujuan atau tidak. Jika tidak, maka node saat ini akan dikeluarkan dari OPEN list dan dimasukkan ke dalam CLOSED list. Lalu, dilakukan perulangan untuk tiap tetangga dari node saat ini. Sistem akan memeriksa apakah node tetangga tersebut dapat dilalui atau tidak. Jika tidak bisa, maka sistem akan memilih node tetangga yang lain. Jika bisa, maka selanjutnya sistem akan memeriksa apakah node tetangga tersebut ada di dalam CLOSED list atau tidak.
Jika iya, maka sistem akan memilih node tetangga yang lain.
Jika node tetangga yang dipilih belum ada dalam CLOSED list, maka sistem akan memeriksa apakah node tersebut sudah ada di dalam OPEN list sebelumnya atau tidak.
Jika ada, maka sistem akan memeriksa apakah nilai g node tetangga saat ini lebih kecil dari nilai g node yang ada pada OPEN list. Jika iya, maka sistem akan menetapkan node saat ini sebagai node parent dari node tetangga tersebut, lalu dihitung ulang nilai g dan f. Jika tidak, OPEN list akan dicek apakah kosong atau tidak. Kembali pada langkah pemeriksaan apakah node tetangga ada di dalam OPEN list atau tidak. Jika tidak ada, maka node tetangga akan dimasukkan ke dalam OPEN list, lalu ditetapkan node saat ini sebagai node parent dari node tetangga lalu dihitung nilai f, g dan h.
Selanjutnya, sistem akan mengecek apakah OPEN list kosong atau tidak.
Jika OPEN list belum kosong, maka sistem akan kembali melakukan langkah menetapkan node terbaik (node dengan nilai f terkecil) di OPEN list sebagai node saat ini dan melanjutkan langkah-langkah yang ada. Sistem akan terus mengulangi proses hingga sampai node tujuan. Dan ketika sampai di tujuan, maka sistem akan melakukan
29
backtrack untuk menampilkan jalur dan proses akan berakhir. Namun, apabila OPEN list kosong sebelum mencapai node tujuan, maka itu berarti sistem gagal menemukan jalur menuju node tujuan dan proses pun berakhir.
Gambar 3.8 Flowchart Algoritma A*
3.5 Perancangan Antarmuka
Perancangan Antarmuka adalah rancangan yang menunjukkan bagaimana user berinteraksi dengan sistem. Rancangan ini dibuat untuk memudahkan user dalam memainkan game.
3.5.1 Rancangan Halaman Title Menu
Title menu adalah halaman yang tampil tepat setelah sistem dijalankan. Seperti yang ditunjukkan pada Gambar 3.9, ada beberapa opsi di title menu untuk menjalankan halaman lain.
Gambar 3.9 Rancangan Halaman Title Menu
Keterangan gambar:
1. Text Judul, merupakan judul game.
2. Button Mulai Game, tombol untuk memulai game utama.
31
3. Button Cara Bermain, tombol untuk menampilkan kotak berisi penjelasan cara bermain game.
4. Button Akhiri Game, tombol untuk keluar dari game.
5. Text Akhiri Game, teks yang menampilkan skor tertinggi.
3.5.2 Rancangan Halaman Cara Bermain
Halaman Cara Bermain adalah halaman dimana user dapat melihat petunjuk bagaimana cara memainkan game seperti yang terlihat pada Gambar 3.10.
Gambar 3.10 Rancangan Halaman Cara Bermain
Keterangan gambar:
1. Text Cara Bermain, merupakan judul halaman.
2. Text, berisi keterangan petunjuk cara bermain game.
3. Button Ganti Halaman, untuk pindah ke halaman cara bermain berikutnya.
4. Button Tutup Halaman, untuk menutup halaman Cara Bermain dan kembali ke halaman Title Menu.
3.5.3 Rancangan Halaman Credit
Halaman Credit adalah halaman dimana user dapat melihat siapa kreator game beserta aset-aset yang digunakan, seperti yang ditunjukkan pada Gambar 3.11.
Gambar 3.11 Rancangan Halaman Credit
Keterangan gambar:
1. Text Credit, merupakan judul halaman.
2. Text, berisi informasi mengenai pembuat game dan aset-aset yang digunakan.
3. Button Tutup Halaman, untuk menutup halaman Credit dan kembali ke halaman Title Menu.
33
3.5.4 Rancangan Antarmuka Dalam Game
Halaman dalam game merupakan halaman dimana user dapat memainkan konten utama pada sistem yaitu permainannya seperti yang terlihat pada Gambar 3.12.
Gambar 3.12 Rancangan Antarmuka Permainan
Keterangan gambar :
1. Karakter Utama, merupakan karakter yang dapat dikendalikan oleh pemain.
2. Hint Item, merupakan item yang ketika disentuh akan menampilkan jalan keluar dari maze.
3. Collectible Item, merupakan item yang akan menambah skor pemain.
4. Health Item, merupakan item yang akan menambah health point pemain.
5. Enemy, merupakan musuh yang dapat dikalahkan oleh pemain apabila ditebas atau mengurangi health point pemain apabila disentuh.
6. Goal, merupakan tujuan atau jalan keluar dari maze.
7. Text Level, merupakan teks yang menunjukkan level di mana pemain berada.
8. Text Health, merupakan teks yang menunjukkan banyak health point pemain.
9. Text Score, merupakan teks yang menunjukkan skor pemain.
3.5.5 Rancangan Halaman Pause Menu
Halaman pause menu adalah halaman yang tampil ketika user mengetuk tombol pause untuk menghentikan permainan sejenak seperti yang ditunjukkan pada Gambar 3.13.
Gambar 3.13 Rancangan Halaman Pause Menu
Keterangan gambar :
1. Button Resume, merupakan tombol untuk kembali dan melanjutkan game.
2. Button Return to Title, merupakan tombol untuk kembali ke halaman Title Menu.
3. Button Quit Game, untuk keluar dari game.
35
BAB 4
IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi Sistem
Sistem yang dibangun pada penelitian ini menggunakan bahasa pemrograman C#, Unity dan Visual Studio 2019. Sistem memiliki 5 tampilan halaman yaitu Title Menu, Cara Bermain, Credit, Permainan (Gameplay) dan Pause Menu.
4.1.1 Tampilan Halaman Title Menu
Gambar 4.1 Halaman Title Menu
Gambar 4.1 menunjukkan tampilan halaman title menu. Tampilan ini berisi judul permainan, karakter yang dapat user kendalikan nantinya, serta empat tombol yaitu Mulai Game, Cara Bermain, Akhiri Game, dan Credit.
4.1.2 Tampilan Halaman Cara Bermain
Gambar 4.2 Halaman Cara Bermain
Halaman Cara Bermain merupakan halaman yang berisi petunjuk cara memainkan game sehingga user dapat melihat halaman ini apabila belum memahami cara kerja game. Gambar 4.2 menunjukkan tampilan halaman Cara Bermain.
37
Universitas Sumatera Utara 4.1.3 Tampilan Halaman Credit
Gambar 4.3 Halaman Credit
Halaman Credit merupakan halaman yang berisi informasi mengenai pembuat game beserta aset-aset yang digunakan. Gambar 4.3 menunjukkan tampilan halaman Credit.
4.1.4 Tampilan Permainan
Gambar 4.4 Tampilan Permainan (Gameplay)
Gambar 4.5 Hasil Pencarian Jalan Keluar dengan Algoritma A*
39
Universitas Sumatera Utara Sesuai dengan Gambar 4.4, tampilan ini menunjukkan permainan utama dimana user dapat mengendalikan karakter dengan menggunakan joystick yang terdapat di kiri bawah layar dan menyerang musuh dengan tombol aksi yang ada di kanan bawah layar.
Terdapat tombol pause yang ada di atas dan beberapa interface lain yang memuat informasi seperti level, health point, dan skor.
Untuk proses-proses yang terjadi pada gameplay, ketika user memasuki tampilan permainan maka sistem akan mengenerasi maze dengan algoritma DFS.
Kemudian, sistem juga akan mengenerasi karakter user, musuh-musuh atau item-item yang dapat di-collect user seperti score item, health item dan hint item. Ketika karakter user menyentuh hint item, sistem akan menjalankan algoritma A* untuk menemukan jalan keluar (goal) dari maze dan menampilkannya selama 6 detik seperti yang terlihat pada Gambar 4.5.
4.1.5 Tampilan Halaman Pause Menu
Gambar 4.6 Halaman Pause Menu
Halaman Pause Menu merupakan halaman yang tampil saat user menekan gambar pause di dalam game. Pada halaman ini, user dapat melanjutkan game, kembali ke halaman Title Menu atau keluar dari game. Gambar 4.6 menunjukkan tampilan halaman Pause Menu.
4.2 Pengujian
Pada pengujian sistem, penulis menguji apakah sistem yang dibangun telah bekerja sesuai fungsinya dalam mengenerasi maze dan pencarian jalur.
4.2.1 Pengujian Implementasi Algoritma DFS
Pada penelitian ini, algoritma DFS digunakan untuk mengenerasi maze. Pada game ini terdapat level yang menunjukkan perkembangan pemain dalam game. Ukuran maze yang digenerasi tergantung dengan level pemain berada saat ini. Misalnya pada level 1 ukuran maze adalah 3 x 3, lalu pada level 2 ukuran maze adalah 4 x 4 dan seterusnya.
Pada pengujian ini, digunakan maze dengan ukuran 5 x 5. Gambar 4.7 dan 4.8 menunjukkan hasil pengujian untuk mengenerasi maze dengan algoritma DFS.
41
Universitas Sumatera Utara Gambar 4.7 Hasil Pengujian Algoritma DFS dalam Mengenerasi Maze Pada Unity
Editor
Gambar 4.8 Hasil Pengujian Algoritma DFS dalam Mengenerasi Maze Pada Game
Ketika user memasuki game, sistem segera mengenerasi maze. Node awal dipilih secara acak, begitu pula node-node tetangga yang dipilih selanjutnya. Kemudian dihancurkan dinding di antara kedua node. Sistem terus menjalankan algoritma sampai seluruh node sudah dikunjungi. Selanjutnya sistem akan me-render hasil maze dan menampilkannya pada game.
Tabel 4.1 menunjukkan hasil pengujian maze generator algoritma DFS dengan ukuran 5 x 5 dengan sepuluh kali percobaan.
Tabel 4.1 Hasil Real Running Time Algoritma DFS
No Estimasi Waktu (ms)
1 1.5610
2 1.6413
3 1.5416
4 1.6073
43
Universitas Sumatera Utara
5 1.6019
6 1.5862
7 1.5665
8 1.6184
9 1.5334
10 1.6251
Rata-Rata ∑T : 10 = 15.8827: 10
= 1.58827
Pada Tabel 4.1, total waktu yang dibutuhkan untuk 10 kali percobaan adalah 15.8827 ms, sehingga waktu rata-ratanya adalah 1.58827 ms. Karena rata-rata waktu yang diperoleh tidak berbeda secara signifikan dari waktu untuk setiap percobaan, maka dapat disimpulkan bahwa waktu yang dibutuhkan dalam mengenerasi maze dengan algoritma DFS realtif konsisten.
4.2.2 Perhitungan manual Algoritma DFS
Pada proses pembuatan maze menggunakan algoritma DFS, digunakan representasi bit sebagai flag atau penanda apakah suatu node memiliki dinding atau tidak. Nilai 12 mewakilkan dinding pada maze dan nilai 02 mewakilkan jalur. Nilai bit 00012 mewakilkan dinding kiri, 00102 mewakilkan dinding kanan, 01002 mewakilkan dinding atas dan 10002 mewakilkan dinding bawah. Warna kuning mewakilkan bahwa node sudah dikunjungi sebelumnya. Berikut ini merupakan langkah-langkah untuk mengenerasi maze menggunakan algoritma DFS:
Iterasi 1
Dinisialisasi seluruh node dengan nilai 1111.
Secara acak, node (1,2) dipilih menjadi node utama, lalu dimasukkan ke dalam stack.
Dipilih secara acak node tetangga yang belum dikunjungi yaitu node (1,3), lalu dihapus dinding diantara node sehingga nilai node (1,2) menjadi 1011 dan node (1,3) menjadi 0111. Lalu node (1,3) dimasukkan ke dalam stack dan tandai sudah dikunjungi.
4 1111 1111 1111 1111 1111 3 1111 1111 1111 1111 1111 2 1111 1111 1111 1111 1111 1 1111 1111 1111 1111 1111 0 1111 1111 1111 1111 1111
z/x 0 1 2 3 4 S
4 1111 1111 1111 1111 1111 3 1111 0111 1111 1111 1111 2 1111 1111 1111 1111 1111 1 1111 1111 1111 1111 1111
0 1111 1111 1111 1111 1111 (1,2)
z/x 0 1 2 3 4 S
45
Universitas Sumatera Utara Iterasi 2
Node (1,3) diset menjadi node saat ini.
Dipilih secara acak node tetangga yang belum dikunjungi yaitu node (0,3), lalu dihapus dinding diantara node sehingga nilai node (1,3) menjadi 0110 dan node (0,3) menjadi 1101. Lalu node (0,3) dimasukkan ke dalam stack dan tandai sudah dikunjungi.
4 1111 1111 1111 1111 1111 3 1111 0111 1111 1111 1111 2 1111 1011 1111 1111 1111
1 1111 1111 1111 1111 1111 (1,3) 0 1111 1111 1111 1111 1111 (1,2)
z/x 0 1 2 3 4 S
4 1111 1111 1111 1111 1111 3 1101 0110 1111 1111 1111
2 1111 1011 1111 1111 1111 (0,3) 1 1111 1111 1111 1111 1111 (1,3) 0 1111 1111 1111 1111 1111 (1,2)
z/x 0 1 2 3 4 S
Iterasi 3
Node (0,3) diset menjadi node saat ini.
Dipilih secara acak node tetangga yang belum dikunjungi yaitu node (0,4), lalu dihapus dinding diantara node sehingga nilai node (0,3) menjadi 1001 dan node (0,4) menjadi 0111. Lalu node (0,4) dimasukkan ke dalam stack dan tandai sudah dikunjungi.
Iterasi 4
Node (0,4) diset menjadi node saat ini.
Dipilih secara acak node tetangga yang belum dikunjungi yaitu node (1,4), lalu dihapus dinding diantara node sehingga nilai node (0,4) menjadi 0101 dan node (1,4) menjadi 1110. Lalu node (1,4) dimasukkan ke dalam stack dan tandai sudah dikunjungi.
4 0111 1111 1111 1111 1111
3 1001 0110 1111 1111 1111 (0,4) 2 1111 1011 1111 1111 1111 (0,3) 1 1111 1111 1111 1111 1111 (1,3) 0 1111 1111 1111 1111 1111 (1,2)
z/x 0 1 2 3 4 S
47
Universitas Sumatera Utara .
. . Iterasi 49
Node (1,2) dikeluarkan dari stack lalu diset menjadi node saat ini. Karena node tersebut tidak memiliki node tetangga yang belum dikunjungi dan tidak ada lagi node yang ada di dalam stack, maka iterasi berakhir.
Berdasarkan perhitungan manual diperoleh bahwa Algoritma DFS membutuhkan 49 iterasi untuk mengenerasi maze dengan ukuran 5 x 5.
4 0101 1110 1111 1111 1111 (1,4) 3 1001 0110 1111 1111 1111 (0,4) 2 1111 1011 1111 1111 1111 (0,3) 1 1111 1111 1111 1111 1111 (1,3) 0 1111 1111 1111 1111 1111 (1,2)
z/x 0 1 2 3 4 S
4 0101 1100 0100 1100 0110 3 1001 0110 0011 1101 0010 2 0111 1011 1001 0110 0011 1 0011 0101 1100 1010 0011 0 1001 1010 1101 1100 1010
z/x 0 1 2 3 4 S
Gambar 4.9 Hasil Struktur Pohon
49
Universitas Sumatera Utara 4.2.3 Pengujian Implementasi Algoritma A*
Pada penelitian ini, algoritma A* digunakan untuk mencari jalan keluar dari maze.
Ukuran grid pada algoritma A* adalah 2 kali ukuran maze + 1. Hal ini agar dapat diketahui node mana yang dapat dilalui dan mana yang tidak. Misalnya pada maze berukuran 5 x 5, ukuran grid pada algoritma A* adalah 11 x 11.
Pada pengujian, ukuran grid algoritma A* adalah 11 x 11. Gambar 4.10 dan 4.11 menunjukkan hasil pengujian algoritma A* untuk mencari jalan keluar.
Gambar 4.10 Hasil Pengujian Algoritma A* Pada Unity Editor
51
Universitas Sumatera Utara Gambar 4.11 Hasil Pengujian Algoritma A* Pada Game
Ketika user menyentuh item hint, sistem akan mengambil posisi karakter user saat ini sebagai node awal. Selanjutnya sistem akan mencari jalur menuju node tujuan.
Kemudian sistem akan menampilkan jalur dalam bentuk objek bola-bola berwarna merah di tiap node yang menuju node tujuan.
Hasil pengujian algoritma A* dengan sepuluh kali percobaan dapat dilihat pada Tabel 4.2.
Tabel 4.2 Hasil Real Running Time Algoritma A*
No Estimasi Waktu (ms)
1 1.6801
2 1.6012
3 1.5921
4 1.6619
5 1.6754
6 1.5121
7 1.5923
8 1.6213
9 1.6109
10 1.6734
Rata-Rata ∑T : 10 = 16.2207 : 10
= 1.62207
Pada Tabel 4.2, didapat total waktu yang dibutuhkan untuk 10 kali percobaan adalah 16.2207 ms, sehingga waktu rata-rata adalah 1.62207 ms. Karena rata-rata waktu yang diperoleh tidak berbeda secara signifikan dari waktu untuk setiap percobaan, maka dapat disimpulkan bahwa waktu yang dibutuhkan algoritma A* untuk mencari jalan keluar tergolong konsisten.
4.2.4 Perhitungan manual Algoritma A*
Algoritma A* menggunakan metode heuristik dalam pencarian jalur untuk mencapai node tujuan. Hasil perhitungan manual algoritma A* dengan menggunakan maze yang dihasilkan sebelumnya dapat dilihat sebagai berikut.
Misalkan diketahui node asal adalah (9, 8) dan node tujuan adalah (7, 1). Maka node asal diset menjadi node saat ini. Langkah pertama adalah mendeteksi semua node- node yang memungkinkan untuk dilalui oleh node saat ini. Hitung nilai G yaitu nilai jarak terdekat dari node asal, nilai H yaitu nilai heuristik atau perkiraan dari node tersebut menuju node tujuan dan F yaitu jumlah dari G dan H. Fungsi heuristik yang digunakan untuk mencari nilai H adalah Manhattan Distance.
Keterangan:
Warna merah : unwalkable node (node yang tidak dapat dilalui) Warna kuning : current node (node saat ini)
Warna biru : open node (node yang dapat dilalui)
53
Universitas Sumatera Utara Warna oranye : closed node (node yang sudah dilalui)
Warna hijau : destination node (node tujuan)
Seperti terlihat pada gambar diatas, dibangkitkan semua node yang berada di sekitar node saat ini kecuali node yang tidak dapat dilalui (unwalkable).
Node saat ini: (9, 8)
Node-node tetangga yang dapat dilalui:
Node (9, 9) memiliki nilai:
g(n) = 1
h(n) = |9-7| + |9-1| = 10 f(n) = g(n) + h(n) = 11 parentNode = (9, 8)
Node (9, 7) memiliki nilai:
g(n) = 1
10
9 H = 10G = 1
F = 11
8
P
7 G = 1H = 8
F = 9
6 5 4 3 2
1
E
0
z/x 0 1 2 3 4 5 6 7 8 9 10