BAB II TINJAUAN PUSTAKA 2.1 Algoritma A* (star) Algoritma A* (star) merupakan algortima best first search dengan pemodifikasian fungsi heuristik. Algoritma ini akan meminimumkan total biaya lintasan, dan pada kondisi yang tepat akan memberikan solusi yang terbaik dalam waktu yang optimal. Algoritma A* (star) juga membutuhkan dua antrian, yaitu OPEN dan CLOSED. Selain antrian tersebut, ada juga fungsi heuristik yang memprediksi keuntungan setiap node yang dibuat. Hal ini akan memungkinkan algoritma untuk melakukan proses pencarian lintasan yang lebih dapat diharapkan. Fungsi tersebut disebut dengan f’(n) sebagai pendekatan dari fungsi f(n) yang merupakan fungsi evaluasi yang sebenarnya terhadap node n. Dalam banyak penerapan, akan lebih baik jika fungsi ini didefinisikan sebagai kombinasi atau jumlahan dua komponen yaitu g(n) dan h(n). Fungsi g(n) merupakan ukuran biaya yang dikeluarkan dari keadaan awal sampai ke node n. Nilai yang diperoleh g(n) merupakan jumlahan biaya penerapan setiap aturan yang dilakukan pada sepanjang lintasan terbaik menuju suatu simpul dan bukan merupakan hasil estimasi. Adapun fungsi h(n) merupakan pengukur biaya tambahan yang harus dikeluarkan dari node n sampai mendapatkan tujuan. Perlu diketahui bahwa g(n) bukan merupakan nilai negatif karena bila nilai negatif maka lintasan yang membalik siklus pada graf akan tampak lebih baik dengan semakin panjangnya lintasan (Desiani, 2006). Secara matematis, fungsi f’ sebagai estimasi fungsi evaluasi terhadap node n dapat dituliskan sebagai berikut : f’(n) = g(n) + h’(n) dengan, f’(n) = fungsi evaluasi. g(n) = biaya yang sudah dikeluarkan dari keadaan awal sampai dengan keadaan n. h’(n) = estimasi biaya untuk sampai pada suatu tujuan mulai dari n. 1
Dari fungsi diatas maka ada beberapa kondisi yang perlu di perhatikan, yaitu : Jika h = h’, berarti proses pencarian telah sampai ke tujuan (goal). Jika g = h’ = 0 maka f’ random, artinya sistem tidak dapat dikendalikan oleh apa pun. Jika g = k, k adalah konstanta dan biasanya bernilai 1. h’= 0, artinya sistem menggunakan breadth first search. Adapun proses dari algoritma A* (star) adalah sebagai berikut : Tabel 2.1 Proses algoritma A* Prosedur A* 1. OPEN = node asal CLOSE array kosong g = 0 f’ = h’ 2. Ulangi sampai node tujuan ditemukan If OPEN kosong then Gagal Else BestNode = node yang ada di OPEN dengan f’ minimal Pindahkan node terbaik tersebut dari OPEN ke CLOSE If BestNode = goal then Sukses Else Bangkitkan semua suksesor BestNode tapi jangan buat pointer Untuk setiap suksesor kerjakan : Hitung g(suksesor) = g(BestNode) + actual cost (dari BestNode ke suksesor) {Periksa suksesor} If suksesor ada di OPEN then {sudah pernah di generate tapi belum di proses} OLD = isi OPEN tersebut Tambahkan OLD sebagai suksesor BestNode Buat pointer dari OLD ke BestNode Bandingkan nilai g(OLD) dengan g(isi OPEN) If g(OLD) lebih baik then Ubah paret isi OPEN ke BestNode Ubah nilai g dan f’ pada isi OPEN End Else If suksesor ada di CLOSE then {sudah pernah digenerate dan sudah di proses} OLD = isi CLOSE Tambahkan OLD sebagai suksesor BestNode Bandingkan nilai g(OLD lebih baik dengan g(isi CLOSE) If g(OLD) lebih baik then Ubah parent isi CLOSE ke BestNode Ubah nilai g dan f’ pada isi CLOSE Propagasi untuk semua suksesor OLD dengan penelusuran DFS dengan aturan: Ulangi sampai node suksesor tidak ada di OPEN atau node tidak punya suksesor
2
If sukses or ada di OPEN then Propagasi diteruskan Else If nilai g via suksesor lebih baik then Propagasi diteruskan Else Propagasi dihentikan End End End Else {suksesor tidak ada di OPEN maupun CLOSE} Masukan suksesor ke OPEN Tambahkan suksesor tersebut sebagai suksesor BestNode Hitung f’ = g(suksesor) + h’(suksesor) End
Untuk membuat Algoritma A*(star) dapat di implementasikan dan berjalan dengan lancar di dalam game dengan tampilan jenis 3D diperlukan beberapa modifikasi dengan menambahkan waypoint pada setiap object halangan yang ada, dimana pada setiap game yang ada memerlukan kecepatan untuk memproses algoritma yang ada sehingga nantinya jika pada saat player memainkan permainan, sistem yang menggerakkan Player AI tidak menghitung terlalu banyak kemungkinan sehingga sistem akan menentukan path dengan cepat. Untuk membuat player lawan menghindari object halangan secara otomatis diperlukan modifikasi dari algoritma a*(star), modifikasi ini diperlukan dikarenakan pengembangan game Makepung ini di implementasikan dengan tampilan jenis 3D sehingga diperlukan penyesuaian agar algoritma a*(star) dapat berjalan di tampilan jenis 3D. Modifikasi A*(star) ini dengan cara menambahkan waypoint disekitar sudut object halangan untuk selanjutnya diteruskan pada algoritma a*(star), sehingga nantinya hanya waypoint tersebutlah yang dihitung sebagai Open List dan Close List. Berbeda dengan alogritma a*(star) yang sebelum di modifikasi harus mengecek semua kemungkinan yang ada sampai bertemu dengan End Point, itu akan membuat lebih banyak perulangan dibandingkan hanya menggunakan beberapa waypoint untuk mendapatkan jalur yang optimal.
3
Gambar 2.1 Modifikasi A*(star) Pada Gambar 2.1 merupakan gambaran dari waypoint dan gambaran path yang didapat dengan menambahkan waypoint pada object halangan dengan algoritma a*(star).
Gambar 2.2 Path Modifikasi A*(star)
Pada Gambar 2.2 merupakan hasil path yang di dapat jika pada halangan di tambahkan waypoint, sehingga pada proses mendapatkan point tersebut tidak terlau banyak menggunakan perulangan untuk mengecek open list dan close list dari Algoritna A*.
4
2.2 Unity 3D Unity 3D adalah sebuah game engine yang berbasis cross-platform. Unity dapat digunakan untuk membuat sebuah game yang bisa digunakan pada perangkat komputer, ponsel pintar android, iPhone, PS3, dan bahkan X-BOX. Unity adalah sebuah sebuah tool yang terintegrasi untuk membuat game, arsitektur bangunan dan simulasi. Unity bisa untuk games PC dan games Online. Untuk games Online diperlukan sebuah plugin, yaitu Unity Web Player, sama halnya dengan Flash Player pada Browser. Unity tidak dirancang untuk proses desain atau modelling, dikarenakan unity bukan tool untuk mendesain. Jika ingin mendesain, pergunakan 3D editor lain seperti 3dsmax atau Blender. Banyak hal yang bisa dilakukan dengan unity, ada fitur audio reverb zone, particle effect, dan Sky Box untuk menambahkan langit. Fitur scripting yang disediakan, mendukung 3 bahasa pemrograman, JavaScript, C#, dan Boo. Flexible and EasyMoving, rotating, dan scaling objects hanya perlu sebaris kode. Begitu juga dengan Duplicating, removing, dan changing properties. Visual Properties Variables yang di definisikan dengan scripts ditampilkan pada Editor. Bisa digeser, di drag and drop, bisa memilih warna dengan color picker. Berbasis .NET. Artinya penjalanan program dilakukan dengan Open Source .NET platform, Mono.
5