Penggunaan Algoritma Pathfinding pada Game

dokumen-dokumen yang mirip
Pencarian Pohon Solusi Permainan Alchemy Menggunakan Algoritma BFS dan DFS

Penerapan DFS dan BFS dalam Pencarian Solusi Game Japanese River IQ Test

Penerapan Algoritma BFS dan DFS dalam Mencari Solusi Permainan Rolling Block

PENGGUNAAN ALGORITMA BRANCH AND BOUND UNTUK MENYELESAIKAN PERSOALAN PENCARIAN JALAN (PATH-FINDING)

Penghematan BBM pada Bisnis Antar-Jemput dengan Algoritma Branch and Bound

Penerapan Pohon dengan Algoritma Branch and Bound dalam Menyelesaikan N-Queen Problem

Perbandingan Algoritma Brute Force dan Breadth First Search dalam Permainan Onet

Penerapan Algoritma Brute Force dan Backtracking pada Permainan Skycraper

Penerapan Algoritma Branch and Bound untuk Penentuan Jalur Wisata

Aplikasi Algoritma Traversal Dalam Binary Space Partitioning

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

Memecahkan Puzzle Hidato dengan Algoritma Branch and Bound

Penerapan Algoritma DFS pada Permainan Sudoku dengan Backtracking

Perbandingan Algoritma Depth-First Search dan Algoritma Hunt-and-Kill dalam Pembuatan Labirin

Penerapan strategi BFS untuk menyelesaikan permainan Unblock Me beserta perbandingannya dengan DFS dan Branch and Bound

Implementasi Algoritma DFS pada Pewarnaan Gambar Sederhana Menggunakan Bucket tool

Pencarian Lintasan Terpendek Pada Aplikasi Navigasi Menggunakan Algoritma A*

Implementasi Algoritma Greedy, BFS, Branch and Bound, dan Metode Heuristik dalam Permainan Reversi

dengan Algoritma Branch and Bound

Analisis Beberapa Algoritma dalam Menyelesaikan Pencarian Jalan Terpendek

Analisis Pengimplementasian Algoritma Greedy untuk Memilih Rute Angkutan Umum

METODE BRANCH AND BOUND UNTUK MENEMUKAN SHORTEST PATH

Menentukan Titik Evakuasi Selanjutnya bagi Sekelompok Regu Tim SAR dengan Algoritma Branch and Bound

Penyelesaian Permainan Sliding Puzzle 3x3 Menggunakan Algoritma Greedy Dengan Dua Fungsi Heuristik

Penerapan Algoritma A-star (A*) Untuk Menyelesaikan Masalah Maze

Perbandingan Algoritma Brute Force dan Backtracking dalam Permainan Word Search Puzzle

Metode Path Finding pada Game 3D Menggunakan Algoritma A* dengan Navigation Mesh

Branch and Bound untuk Rute Terpendek Tur Pengenalan Labtek V Gedung Benny Subianto Chita Najmi Nabila /

Menentukan Susunan Terbaik Tim Proyek dengan Algoritma Branch and Bound

Penerapan Algoritma Greedy dan Breadth First Search pada Permainan Kartu Sevens

Menentukan Susunan Pengambil Tendangan Penalti dalam Skema Adu Penalti pada Pertandingan Sepak Bola dengan Algoritma Branch and Bound

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

Pencarian Solusi Permainan Pipe Puzzle Menggunakan Algoritma Backtrack

Penerapan Algoritma Backtracking pada Game The Lonely Knight

Penentuan Keputusan dalam Permainan Gomoku dengan Program Dinamis dan Algoritma Greedy

Aplikasi Algoritma Branch and Bound dalam Pencarian Solusi Optimum Job Assignment Problem

Penggunaan BFS dan DFS untuk Pixel Traversing

Menyelesaikan Permainan Wordament Menggunakan Algoritma Backtracking

Penggunaan Algoritma Brute Force dan Greedy dalam Permainan Atomas

Algoritma A* Memanfaatkan Navigation Meshes dalam 3 Dimensional Pathfinding

Aplikasi Branch and Bound Pada Pencarian Jalan Pada Software Navigasi

Implementasi Logika Penurunan Persamaan Aritmatika pada Program Komputer

Penerapan Algoritma Transversal pada Graf dan Algoritma Pencocokan String dalam Sistem Jual-Beli Tiket Bioskop

Algoritma Branch & Bound untuk Optimasi Pengiriman Surat antar Himpunan di ITB

Pemanfaatan Algoritma Runut-Balik dalam Menyelesaikan Puzzle NeurOn dalam Permainan Logical Cell

Penerapan Algoritma Greedy dan Algoritma BFS untuk AI pada Permainan Greedy Spiders

Aplikasi Algoritma Greedy, BFS dan DFS pada Penyelesaian Permainan Mahjong Solitaire

Penerapan Algoritma Brute force dan Greedy pada Penjadwalan Disk

PENGGUNAAN ALGORITMA GREEDY PADA MESIN PENCARI

Penerapan Algoritma Backtracking pada Knight s Tour Problem

Penggunaan Algoritma Greedy untuk menyelesaikan Permainan Othello

Implementasi Brute Force pada Game Mahjong Titans

SOLUSI PERMAINAN CHEMICALS DENGAN ALGORITMA RUNUT BALIK

Penerapan Algoritma Backtracking untuk Menyelesaikan Permainan Hashiwokakero

Algoritma Backtracking Pada Permainan Peg Solitaire

Aplikasi Algoritma Brute Force Pada Knight s Tour Problem

Penerapan Algoritma BFS dan DFS pada Permainan Logika Wolf, Sheep, and Cabbage

Penerapan Algoritma Branch and Bound pada Penentuan Staffing Organisasi dan Kepanitiaan

Implementasi Algoritma Runut Balik dalam Pengenalan Citra Wajah pada Basis Data

Penggunaan Algoritma DFS dan BFS pada Permainan Three Piles of Stones

PENERAPAN ALGORITMA BACKTRACKING PADA PERMAINAN WORD SEARCH PUZZLE

Penyelesaian N-Puzzle Menggunakan A* dan Iterative Deepening A*

Strategi Optimized Brute Force Pada Tent Puzzle Solver

Aplikasi Algoritma Greedy pada Optimasi Pelaksanaan Misi dalam Permainan Assassins Creed : Revelations

Penerapan Algoritma Branch and Bound untuk Optimasi Rute Penempelan Poster di Papan Mading ITB

PERBANDINGAN APLIKASI ALGORITMA BRUTE-FORCE DAN KOMBINASI ALGORITMA BREADTH FIRST SEARCH DAN GREEDY DALAM PENCARIAN SOLUSI PERMAINAN TREASURE HUNT

Penerapan Algoritma Branch and Bound dalam Pemacahan Travelling Salesman Problem (TSP) dalam Graf Lengkap

Penerapan Algoritma BFS dan DFS dalam Permainan Ular Tangga

Penerapan Algoritma A* Sebagai Algoritma Pencari Jalan Dalam Game

Implementasi Algoritma DFS pada permainan Monument Valley

Pemanfaatan Algoritma BFS pada Graf Tak Berbobot untuk Mencari Jalur Terpendek

PERBANDINGAN ALGORITMA BFS DAN DFS DALAM PEMBUATAN RUTE PERJALANAN OBJEK PERMAINAN 2 DIMENSI

Mendeteksi Blob dengan Menggunakan Algoritma BFS

Penggunaan Algoritma DFS dan BFS Dalam Pencarian Jarak Tedekat di Game Civilization V

Penerapan Algoritma Greedy Best First Search untuk Menyelesaikan Permainan Chroma Test : Brain Challenge

SOLUSI ALGORITMA BACKTRACKING DALAM PERMAINAN KSATRIA MENYEBRANG KASTIL

Menentukan Starting Lineup Futsal Terbaik dengan Algoritma Branch and Bound

Algoritma Brute-Force dan Greedy dalam Pemrosesan Graf

Pencarian Solusi Permainan Flow Free Menggunakan Brute Force dan Pruning

Penerapan Algoritma Runut-Balik untuk Menyelesaikan Permainan Pencarian Kata

Penyelesaian Game Lights Out dengan Algoritma Runut Balik

Pemodelan AI dalam Permainan Snake dengan Algoritma Branch and Bound

Penerapan Algoritma Runut-balik pada Permainan Math Maze

Penyelesaian Permainan Minesweeper dengan Algoritma BFS dengan Optimasi Algoritma Greedy

Pemecahan Masalah Knapsack dengan Menggunakan Algoritma Branch and Bound

Penerapan strategi runut-balik dalam penyelesaian permainan puzzle geser

Penerapan Algoritma Runut Balik pada Pathuku Games

Algoritma Backtracking Pada Logic Game : Family Crisis (Game Penyebrangan)

Penerapan Algoritma Greedy pada Intelegensia Buatan untuk Transfer Pemain dalam Permainan Simulasi Sepakbola

Penggunaan Algoritma Backtracking pada Permainan Mummy Maze

I. PENDAHULUAN. 1.1 Permainan Rush Hour

PENERAPAN ALGORITMA BRANCH AND BOUND DALAM MENENTUKAN RUTE TERPENDEK UNTUK PERJALANAN ANTARKOTA DI JAWA BARAT

Pembahasan Pencarian Lintasan Terpendek Menggunakan Algoritma Dijkstra dan A*

Penyelesaian Permasalahan Nonogram dengan Algoritma Runut Balik

Penerapan algoritma Greedy dalam penentuan Porter Generic Strategies untuk suatu perusahaan

Penerapan Algoritma Branch & Bound dan Backtracking pada Game Flow

Penerapan Search Tree pada Penyelesaian Masalah Penentuan Jalur Kota Terpendek.

Implementasi Pohon Keputusan untuk Membangun Jalan Cerita pada Game Engine Unity

PERMAINAN KNIGHT S TOUR DENGAN ALGORITMA BACKTRACKING DAN ATURAN WARNSDORFF

Penerapan Algoritma Flood Fill untuk Mengurangi Ruang Pencarian pada Pencarian Solusi Puzzle Pentomino

Transkripsi:

Penggunaan Algoritma Pathfinding pada Game Ahmad Fauzan (000) Program Studi Teknik Informatika Sekolah Teknik Elektro dan Informatika Institut Teknologi Bandung, Jl. Ganesha 0 Bandung 0, Indonesia 000@std.stei.itb.ac.id Game adalah sebuah permainan digital yang dapat dimainkan di berbagai perangkat yang mendukung I/O. Game masa kini lebih kaya, dapat juga merepresentasikan dunia nyata. Game yang akan dibahas merupakan game yang hampir mirip dunia nyata. Game ini memiliki peta.karakter dikontrol dengan tetikus untuk diarahkan ke sebuah titik pada peta.bagaimana sebuah komputer dapat mengkomputasi langkah-langkah apa saja yang akan dilakukan sang karakter untuk mencapai titik tersebut?.makalah ini akan membahas cara-cara yang dilakukan game untuk menggerakkan karakter dari satu titik ke titik lain pada peta. Indeks: Game, Pathfinding, Map, DFS, BFS, Branch and Bound, A* I. PENDAHULUAN Game (Video Game) merupakan sebuah program/aplikasi yang berinteraksi dengan manusia layaknya sebuah program/aplikasi biasa. Perbedaannya adalah game lebih mengandung unsur kesenangan kepada pemainnya. Dampak dari game tidak langsung dapat dirasakan. Namun, dampaknya bisa saja berupa kepuasan pemain. Game berkembang karena adanya mesin (hardware) yang dapat digunakan untuk mengimplementasi sebuah game. Pada awalnya, game hanya memiliki sumber daya yang cukup sedikit dan hardware yang tidaklah murah. Game generasi pertama antara lain : Pong, spacewar dan beberapa game kasual lainnya. Fig. Spacewar Pada perkambangannya, performansi dari hardware dikembangkan. Dari yang awal game hanya dimensi menjadi dimensi. Selain itu, game sekarang ini kaya akan sumber daya, bahkan hampir dapat menggambarkan dunia nyata seperti peta daerah. Fig. Pong Fig. Age Of Empire - Salah satu game yang menggunakan sistem map Peta dalam game menggambarkan letak objek, jalur dan tanda-tanda lainnya. Dalam pengembangannya game yang

memuat peta dan memainkannya dengan cara mengklik daerah tertentu sehingga karakter bergerak ke daerah tersebut. Dalam pemrosesan gerakan karakter ini, kita membutuhkan sebuah algoritma pathfinding. II. PATHFINDING Pathfinding merupakan cara untuk mendapatkan route antara buah point. Pathfinding memiliki beberapa algoritma yang bisa diterapkan antara lain. A. Brute Force Algoritma ini merupakan algoritma yang paling mudah dimengerti. Cara kerjanya adalah membandingkan posisi sekarang dengan posisi tujuan dan menentukan langkah berikutnya. Fig. Contoh persoalan B. BFS Breadth-First Search merupakan algortima yang menyelesaikan masalah dengan memanfaatkan struktur pohon. C. DFS Deep-First Search merupakan algoritma yang menyeleseaikan masalah dengan memanfaatkan struktur pohon. DFS mencari solusi ke node yang paling dalam pada pohon. D. Branch and Bound dan A* Branch and Bound merupakan pengembangan dari BFS. Pada Branch and Bound, setiap node memiliki harga (dengan cara penghitungan harga yang bermacam-macam). Harga node menentukan kedekatan node dengan solusi. Algoritma A* (Baca : A bintang) merupakan salah satu pengembangan dari Algoritma Branch and Bound. Perhitungan harga pada algoritma A* memanfaatkan unsur heuristik pada benda. Fig. Penyelesaian dengan brute-force Namun, tidak semua permasalahan pathfinding ini dapat diselesaikan dengan algortima brute force. Permasalahan itu muncul ketika adanya penghalang. Fig. Permasalahan dengan penghalang III. PENGGUNAAN ALGORITMA Penerapan algoritma pada peta game. A. Brute Force Penyelesaian pada algoritma brute force terbilang cukup mudah dipahami. Perbandingan posisi dan menentukan langkah selanjutnya. Algoritma :. Cek apakah tujuan ada disebelah kanan atau tidak,. Jika ya, bergerak ke kanan,. Jika tidak, bergerak ke kiri,. Cek apakah tujuan ada disebelah atas atau tidak,. jika ya, bergerak ke atas,. Jika tidak bergerak ke bawah. Contoh penyelesaian dengan algoritma ini. Fig. Algoritma yang dijelaskan gagal Modifikasi dari algoritma ini diperlukan untuk menyelesaikan kegagalan di atas. Dalam pengembangannya, algoritma ini harus diperbaiki untuk kasus-kasus tertentu. B. BFS Breadth-First Search merupakan algortima yang menyelesaikan masalah dengan memanfaatkan struktur pohon. Algoritma ini cukup intuitif di kalangan developer. Konsep algoritma ini pada pathfinding adalah menjelajahi mata angin dari posisi sekarang yang belum pernah dikunjungi. Dalam meprosesannya, algoritma ini menggunakan Queue untuk memproses point sesuai urutan.

Buat Queue kosong Tambahkan posisi awal pada Queue While Queue belum kosong PULL Queue PUSH Node ke Queue Pseudo-code. BFS pada pathfinding BFS membentuk semua struktur pohon semu. Struktur pohon ini digunakan untuk menjelaskan bagaimana BFS bekerja. BFS akan mengeksekusi semua node pada level, setelah itu pada level berikutnya. Cara dan Conoth BFS bekerja: Fig 0. Hasil solusi BFS C. DFS Berbeda dengan BFS, DFS memproses Node lebih dalam sampai solusi ditemukan atau tidak ditemukan. Function DFS(Node) if Node adalah tujuan Hasil ditemukan else DFS(Node-tetangga) Fig 8. contoh permasalahan Proses yang bekerja pad BFS untuk permasalahan di atas, digambarkan dengan pohon. Pos(0,0) Pos(,) 9 Pos(,) 0 Pos(0,) Pos(,) Pos(,) Pos(,) Pos(,) 8 Pos(,) Fig 9. Pohon hasil BFS Pos(0,) Pseudo-code. DFS pada pathfinding Untuk permasalahan yang sama dengan BFS, hasil pohon DFS adalah : 0 Pos(0,0) Pos(0,) Pos(,) Pos(,) Pos(,) Pos(,) Pos(,) Pos(,) Fig. Pohon hasil DFS D. Branch and Bound dan A* Brach and Bound merupakan pengembangan dari BFS. Penambahan harga dari tiap node. Node dengan harga terkecil atau yang terdekat dengan solusi merupakan node yang akan diproses terlebih dahulu.

0 Buat PriorityQueue kosong Tambahkan posisi awal pada PriorityQueue While PriorityQueue belum kosong PULL PriorityQueue Hitung Cost Node PUSH Node ke PriorityQueue pos(0,0) g() = f() = pos(0,) g(0) = 0 f(0) = pos(,) g() = f() = pos(0,) g() = f() = Pseudo-code. Branch and Bounds Branch and Bounds tidak baik digunakan pada peta biasa, sebaiknya menggunakan BFS saja. B&B lebih baik digunakan pada map yang setiap poin nya mempunyai nilai (Contoh: skor, ketinggian, dll). A* (Baca: A*) merupakan salah satu B&B. A* banyak digunakan untuk pathfinding. Fungsi untuk menghitung cost setiap node adalah : pos(,) g() = f() = pos(,) g() = f() = f x = g x + (x) g(x) merupakan jarak yang telah dilalui sebelumnya (dari posisi awal ke posisi sekarang). h(x) adalah sebuah fungsi heuristik. Fungsi heuristik yang paling mudah untuk digunakan adalah jarak dari posisi yang di proses ke proses tujuan (jarak dapat dihitung dengan garis lurus dari a ke b). f x = g x + distance(pos, goal) pos(,) g() = f() = 8 pos(,) pos(,) g() = g(8) = f() = f(8)= Hitung Heuristic(start,goal) Buat PriorityQueue kosong Tambahkan posisi awal pada PriorityQueue While PriorityQueue belum kosong PULL PriorityQueue F(NodeT) = level + distance(nodet,goal) PUSH Node ke PriorityQueue Fig. A* sederhana 9 pos(,) g(8) = f(8) = Fig. Aksi A* Terlihat, solusi A* dan BFS terhilat sama. Namun, untuk lingkup yang lebih luas lagi A* dapat berjalan lebih optimal dibanding BFS. Contoh penyelesaian pathfinding untuk fig. 8. Fig. Solusi dengan A* [] Fig.. dapat dilihat bahwa proses A* lebih baik dari BFS. Jika BFS, maka jumlah node yang ditelusuri akan lebih banyak (bagian sebelah kiri tujuan akan ditelusuri juga).

REFERENSI [] Munir, Rinaldi. Diktat Kuliah IF0 Strategi Algoritma. Program Studi Teknik Informatika. 009. [] Game Career Guide. 0."Getting there from here". p.- [] http://en.wikipedia.org/wiki/a*_search_algorithm tanggal akses : 9 Desember 0. [] http://theory.stanford.edu/~amitp/gameprogramming/heuristics.html tanggal akses : Desember 0. Fig. A* dengan perhitungan Heuristik yang lain [] Dengan memodifikasi perhitungan heuristik, kita dapat memperoleh A* yang lebih baik dan cepat. (fig. ). IV. KESIMPULAN Algoritma brute force harus dimodifikasi untuk setiap kasus yang unik. Algoritma DFS, BFS dan B&B dapat digunakan untuk pathfinding pada game. Algoritma yang paling ampuh untuk persoalan pathfinding adalah algoritma A*. Jika dibandingkan dengan BFS dan DFS, Algoritma A* lebih sedikit memproses node. PERNYATAAN Dengan ini saya menyatakan bahwa makalah yang saya tulis ini adalah tulisan saya sendiri, bukan saduran, atau terjemahan dari makalah orang lain, dan bukan plagiasi. Bandung, Desember 0 Ahmad Fauzan 000