Seminar Nasional Pascasarjana X – ITS, Surabaya 4 Agustus 2010 ISBN No. 979-545-0270-1
Distribusi Gaussian Perilaku Tarung NPC Prajurit pada Game Peperangan Menggunakan Metode Box-Muller
Nur Kholis Majid 1*, Moch. Hariadi 2**, Supeno Mardi 3** Jurusan Teknik Elektro ITS, Surabaya,Indonesia1*
[email protected] 2 Jurusan Teknik Elektro ITS, Surabaya,Indonesia 3 Jurusan Teknik Elektro ITS, Surabaya,Indonesia
Abstrak Perilaku NPC prajurit merupakan hal yang penting dalam sebuah game perang. NPC yang berperilaku tetap akan membuat dia mudah dikalahkan oleh lawan. Distribusi Gaussian dengan metode Box-Muller akan digunakan untuk memberikan variasi perilaku gerakan pada NPC. Sebuah game perang berbasis Game Engine 3D Game Studio telah dibuat untuk mensimulasikan perilaku NPC prajurit. Dari hasil percobaan 10 jenis gerakan, dapat disimpulkan bahwa distribusi gaussian yang ideal untuk pertarungan satu lawan satu adalah µ=3.5 dan σ=1, untuk pertarungan satu lawan banyak adalah µ=7.8 dan σ=1, sedang untuk banyak lawan banyak adalah µ=8.5 dan σ=1. Katakunci: Distribusi gaussian, Box-Muller, Perilaku NPC, Game Perang, 3D Game Studio
1. Pendahuluan Penggunaan distribusi uniform pada pemilihan gerakan yang sejenis sebenarnya tidaklah bermasalah pada suatu game. Tetapi hal ini sungguh sangat berbeda dengan kondisi nyata. Dalam suatu pertarungan prajurit perang akan terdapat gerakan-gerakan yang berbeda setiap waktunya, baik itu gerakan tipuan ataupun gerakan yang mematikan untuk dapat mengecoh dan mengalahkan lawan. Pemilihan gerakan bertarung prajurit akan didekati secara random dengan distribusi gaussian. Dimana telah diketahui, bahwa distribusi gaussian merupakan distribusi data yang paling sesuai untuk kejadian yang alamiah. Distribusi ini akan memiliki probabilitas yang tinggi untuk data yang umum (gerakan yang sering dipakai) dan probabilitas yang rendah untuk data yang jarang terjadi. Nilai random tersebut selanjutnya akan dimasukkan dalam proses pertarungan prajurit. Dan kemudian akan dilakukan ujicoba untuk mendapatkan parameter dari gerakan yang ideal pada NPC.
tepat, karena tentunya sangat berisiko jika langsung mengujikan suatu teori dalam dunia nyata. Maka terpilihlah game sebagai salah satu test-bed AI. 2.1 Non-Player Character (NPC) NPC atau disebut juga agen adalah suatu entitas dalam game yang tidak dikendalikan secara langsung oleh pemain. NPC dikendalikan secara otomatis oleh komputer tanpa intervensi pemain NPC bisa berupa teman, musuh atau netral. NPC diinginkan dapat berperilaku cerdas layaknya manusia. Dia bisa mengindera lingkungan, berpikir, memilih aksi lalu bertindak sebagai respon atas perubahan pada lingkungannya, seperti pada Gambar 1. Disinilah AI berperan, NPC tersebut diberikan algoritma khusus agar berlaku cerdas untuk mengimbangi pemain.
2. Teori Penunjang Game merupakan salah satu topik yang sering diulas oleh para peneliti akhir-akhir ini. Kepopuleran ini disebabkan karena game mampu menyediakan lingkungan yang kompleks untuk mensimulasikan sesuatu dari alam. Artificial Intellegent(AI) merupakan salah satu bidang ilmu yang paling banyak diimplementasikan dalam game. Tidaklah mengherankan karena kebanyakan algoritmanya meniru fenomena alam. Sehingga membutuhkan media untuk mensimulasikan kebenaran algoritma tersebut. Game merupakan media yang
*) Penulis Utama **) Dosen Pembimbing
Gambar 1. Perilaku NPC
Pada sebuah game perang, prajurit pemain dan prajurit musuh merupakan contoh dari NPC. Perilaku seorang prajurit dalam medan sangat bervariasi mulai dari mengikuti pimpinan, menghindari halangan, berlari, berjalan, menjauhi musuh, bertarung, membantu teman, dan lainnya. Pada penelitian ini kami memilih perilaku tarung prajurit untuk diamati.
Seminar Nasional Pascasarjana X – ITS, Surabaya 4 Agustus 2010 ISBN No. 979-545-0270-1
2.2 Finite State Machine (FSM) FSM merupakan salah satu metode yang paling populer untuk memodelkan perilaku agen/NPC dalam sebuah game. Bahkan seakan menjadi standard karena telah digunakan secara luas dalam berbagai game. Hal ini mengingat kesederhanaan dan kemudahan FSM untuk diimplementasikan. FSM terdiri dari dua elemen utama yaitu keadaan (state) dan transisi (transition). State merupakan keadaan objek saat ini, sedangkan transisi adalah hal yang dilakukan untuk dapat berpindah dari satu state ke state yang lain (Gambar 2).
Secara matematis, distribusi normal direpresentasikan dengan persamaan
dapat (2.1)
Dengan f(x) disebut juga fungsi kerapatan (density function) dari x, µ adalah mean (ratarata) data, sedangkan σ adalah standard deviation (simpangan baku). Disebut dengan distribusi normal standard, apabila nilai µ=0 dan σ=1. Sehingga persamaan (2.1) menjadi (2.2)
Distribusi gaussian sebenarnya berdasarkan Teori Limit Pusat (Central Limit Theorem) yang mengatakan bahwa jika sampel cukup besar, distribusi mean akan mengikuti distribusi gaussian bahkan meski populasinya bukanlah gaussian.
Gambar 2. Diagram FSM
State dilambangkan dengan lingkaran, sedangkan transisi disimbolkan dengan anak panah dengan arah tertentu. Pada Gambar 2, angka 1-5 adalah state sedangkan huruf a-g adalah transisi. Kelebihan dari FSM adalah sederhana dan mudah diimplementasikan. Sedangkan kekurangannya adalah pada sistem yang besar, FSM akan sulit diperlihara. FSM diimplementasikan dalam bahasa pemrograman dengan berbagai cara, yaitu: cara tradisional (menggunakan switch-case), look-up tabel (menggunakan matriks untuk menyimpan state), dan dengan paradigma Object Oriented. FSM berkembang menjadi beberapa variasi dengan menggabungkan dengan metode lain, antara lain: Fuzzy State Machine (FuSM), Probabilistic FSM (PFSM), Hierarchical FSM (HFSM), dan lainnya 2.3 Distribusi Gaussian Distribusi gaussian merupakan salah satu distribusi yang paling penting dalam bidang statistika. Banyak gejala alam, maupun hasil penelitian yang terwakili dengan baik oleh kurva distribusi yang berbentuk lonceng ini. Oleh sebab itu, distribusi gaussian disebut juga distribusi normal. Nama gaussian diambil dari penemunya yaitu Carl Friederich Gauss (1777-1855).
2.3.1 Generator Angka Random Gaussian Terdapat berbagai metode untuk mendapatkan angka random yang terdistribusi gaussian. David B. Thomas Dkk mengelompokkan menjadi 4 metode: • Cumulative Density Function (CDF) Inversion Method • Transformation Method • Rejection Method • Recursive Method Dari metode-metode yang terdapat dalam kelompok tersebut, terdapat metode yang menarik untuk dibahas yaitu: 1. Metode Transformasi Box-Muller Ditemukan oleh George E. P. Box dan Mervin E. Muller pada 1958. Metode ini membangkitkan sepasang angka random dengan distribusi normal standard yang berasal dari angka random yang terdistribusi uniform. Hal ini bisa diilustrasikan seperti pada Gambar 4. Lingkaran awal pada domain pertama yang mempunyai perbedaan jarak sama akan dipetakan pada kumpulan lingkaran yang lain dengan pertambahan jarak yang tidak linier. Lingkaran terbesar pada domain pertama akan dipetakan sebagai lingkaran terkecil pada domain kedua dan sebaliknya.
Gambar 4. DiagramTransformasi Box-Muller
Gambar 2. Kurva Distribusi Normal
Jika U1 dan U2 adalah variabel random yang independen dan terdistribusi uniform pada range [0,1]. Sedangkan Z0 dan Z1 adalah variabel random independen yang terdistribusi normal standard. Maka dapat dinyatakan:
Seminar Nasional Pascasarjana X – ITS, Surabaya 4 Agustus 2010 ISBN No. 979-545-0270-1
(2.3) (2.4)
Variabel random R2 dan Θ dalam bentuk koordinat polar juga saling independen. Jika dimisalkan terdapat besaran lain u dan v yang terdistribusi uniform pada range [-1, 1], dan s = 2 2 2 R = u + v dimana 0 < s < 1. Seperti pada Gambar 5. Maka dapat disimpulkan bahwa U1 = s dan U2 = θ/2π.
yang tinggal pakai sehingga memungkinkan membuat game tanpa coding sekalipun. 3D Game Studio terdiri dari 3 komponen utama, yaitu: 1. World Editor (WED) WED merupakan editor utama pada 3D Game Studio. Dengan editor ini pengguna bisa mendesain environment game, mengatur entitas, menambahkan action, mengganti texture serta mem-build level menggunakan algoritma Binary Space Partition (BSP). 2. Model Editor (MED) MED digunakan untuk mendesain model serta level. Tersedia berbagai objek dasar seperti kotak, bola, kerucut sampai objek yang kompleks seperti manusia ataupun model sebuah kota. Selain itu terdapat juga fasilitas untuk membuat animasi (baik menggunakan bone atau tidak) serta mengedit skin dan efek untuk shader.
Gambar 5. Ilustrasi Koordinat Polar Box-Muller
Sehingga persamaan (2.3) dan (2.4) dapat ditulis ulang sebagai: (2.5) (2.6)
Dari persamaan (2.5) dan (2.6), pseudocode dari algoritma Box-Muller dapat dituliskan sebagai berikut:
1. 2. 3. 4.
Kode 1. Pseudocode algoritma Box-Muller Bangkitkan bilangan random uniform dan v dalam range [-1,1] 2 2 Hitung s = u + v Looping sampai nilai s < 1 Dapatkan bilangan random normal z0 =
.
dan z1
u
u
=v.
3. Script Editor (SED) SED adalah Integrated Development Environment (IDE) untuk pemrograman pada 3D Game Studio. Terdiri dari text editor, debugger serta build-in help untuk membantu dalam proses pemrograman. 3D Game Studio menggunakan Lite-C sebagai bahasa pemrograman defaultnya. Tetapi dengan menambah ekstensi tertentu pengguna dapat menggunakan bahasa lain seperti C++, C# dan Delphi.
3. Metode Penelitian Dalam penelitian ini akan dibuat sebuah game yang mensimulasikan peperangan antar banyak NPC. Peperangan yang digunakan adalah peperangan klasik, dimana hanya menggunakan senjata jarak dekat seperti pedang, tombak dan keris. Terdapat dua buah pasukan yang saling berhadapan dimana masing-masing pasukan dipimpin oleh seorang perwira perang. Pemain akan diposisikan sebagai pemimpin yang dapat mengatur pasukannya untuk menghadapi pasukan musuh.
Algoritma Box-Muller sangat sederhana dan mudah diimplementasikan meskipun termasuk lambat dan hasil yang kurang baik untuk data yang besar. 2.4 3D Game Studio 3D Game Studio merupakan salah satu engine pembuat game 3D yang menfokuskan kemudahan pembuatan kepada penggunanya. 3D Game Studio lebih senang menyebut dirinya sebagai Authoring System daripada sekedar game engine, karena memang 3D Game Studio terdiri dari suite yang komplit untuk membuat game. 3D Game Studio menyediakan beberapa template game yang tinggal pakai seperti game First Person Shooting (FPS) dan game racing. Juga menyediakan berbagai koleksi texture, model, terrain, sprite, artwork sebagai entitas
Gambar 6. Alur Penelitian
Seminar Nasional Pascasarjana X – ITS, Surabaya 4 Agustus 2010 ISBN No. 979-545-0270-1
Selanjutnya akan digunakan distribusi gaussian pada pemilihan gerakan tarung NPC dalam game tersebut sesuai dengan Gambar 6. Game peperangan yang dibuat merupakan pengembangan dari prototipe game Glorious Combat yang dibuat oleh David Lancaster dari Rebel Planet Creation (www.therebelplanet.com). 3.1 Desain FSM NPC NPC prajurit terdiri dari dua macam yaitu NPC teman dan NPC musuh. Kedua jenis NPC tersebut menggunakan state yang hampir sama selama permainan. Seperti pada Gambar 7, yaitu: • Pertama kali NPC akan berada dalam formasi dan mengikuti gerakan pemimpinnya. • Jika musuh berada dalam jarak tertentu (terdeteksi) maka NPC akan menyerang musuh. • Jika musuh masih terdeteksi NPC akan tetap berada dalam state menyerang. Tetapi jika musuh menjauh, NPC akan kembali mengikuti pemimpin. • Jika terkena senjata, NPC akan berada dalam state sakit untuk beberapa saat. • Jika kekuatan masih ada dan musuh masih terdeteksi, NPC akan menyerang musuh. • Jika kekuatannya habis, NPC akan mati. • Jika musuh berhasil dikalahkan, NPC kembali mengikuti formasi.
Gambar 7. FSM NPC
NPC Leader musuh juga memiliki hampir sama tetapi dialah yang diikuti oleh NPC prajurit musuh lainnya. Sedangkan Pemain diposisikan sebagai Leader NPC teman, sehingga bisa mengatur formasi NPC teman yang lain. Alur penelitian pada Gambar 6. akan dimasukkan pada NPC saat berada dalam state attack. Sehingga diharapkan gerakan yang terpilih dapat terdistribusi dengan normal. Pada NPC tersebut juga terdapat properti lain yang diperlukan saat pertarungan. Yaitu health (nilai kesehatan NPC) dan damage (besar daya rusak NPC jika mengenai NPC lawan). Secara default besar keduanya adalah: health = 40 dan damage = health * 0.1. 3.2 Desain Gerakan Tarung NPC Akan digunakan 10 jenis gerakan untuk mensimulasikan pertarungan NPC pada game
ini. Gerakan-gerakan tersebut adalah: bother_a (a), bother_b (b), attack_a (c), attack_b (d), attack_c (e), attack_d (f), super_a (g), super_b (h), super_c (i), super_d (j). (Gambar 8.)
(a)
(b)
(c)
(d)
(e)
(f)
(g)
(h)
(i) (j) Gambar 8. Jenis gerakan yang digunakan
Selanjutnya Gerakan-gerakan diatas akan dikelompokkan menjadi 3 golongan, yaitu : 1. Gerakan gangguan Merupakan jenis gerakan yang tidak membahayakan lawan yang tujuannya hanya menggangu konsentrasi lawan dalam teknik pertarungan. Yang termasuk kelompok ini adalah: bother_a dan bother_b. 2. Gerakan mengenai/melukai lawan Merupakan gerakan yang mengenai lawan dan mengakibatkan kekuatan lawan berkurang. Yang termasuk dalam kelompok ini adalah: attack_a, attack_b, attack_c dan attack_d. 3. Gerakan mematikan lawan Merupakan gerakan pamungkas yang dapat langsung mematikan lawan. Gerakan ini jarang digunakan pada pertarungan satu lawan satu tetapi akan sering digunakan apabila lawan berjumlah lebih dari satu. Termasuk dalam kelompok ini adalah: super_a, super_b, super_c dan super_d. Selengkapnya dapat dilihat pada Tabel 1. Dalam pertarungan tunggal (satu lawan satu). Nilai damage pada gerakan gangguan adalah 0, pada gerakan melukai adalah 0.1 * health, sedangkan pada gerakan mematikan nilai damage = 20. Tabel 1: Jenis Gerakan Tarung No Jenis Nama Keterangan 1 Gerakan bother_a Gerakan menggangu 2 ganggua bother_b Gerakan menggangu kedua 3 attack_a Menyerang dari arah Gerakan belakang ke depan melukai 4 attack_b Menyerang dari arah kiri ke lawan kanan
Seminar Nasional Pascasarjana X – ITS, Surabaya 4 Agustus 2010 ISBN No. 979-545-0270-1
5
attack_c
6
attack_d
7 Gerakan super_a 8 mematika super_b 9 n lawan super_c 10 super_d
Menyerang dari arah kanan ke kiri Menyerang dari arah bawah ke atas Melompat tinggi ke arah Gerakan Salto Jab Melompat ke arah lawan
3.3 Desain Generator Random Gaussian Pada penelitian ini akan digunakan metode BoxMuller dikarenakan kemudahan implementasinya. Berdasarkan pseudocode pada Kode. 1 dapat dibuat blok fungsinya dalam bahasa C seperti pada Kode. 2.
4.1 Satu lawan satu (1-1) Dari 10 kali percobaan didapatkan data seperti pada Tabel 3. Tabel 3. Hasil Percobaan 1-1 Σwin Σlose µ=1 0 10 µ=2 1 9 µ=3 3 7 µ=4 7 3 µ=5 9 1 µ=6 10 0 µ=7 10 0 µ=8 10 0 µ=9 10 0 µ=10 10 0
Kode 2 . Kode sumber algoritma Box-Muller 01 float BoxMuller(float mean, float sd) 02 { 03 float u, v, s, z0; // polar coord. 04 static float z1; 05 static int use_last = 0; 06 07 if (use_last) { 08 z0 = z1; 09 use_last = 0; 10 } else { 11 do { 12 u = 2.0 * random(1.0) - 1.0; 13 v = 2.0 * random(1.0) - 1.0; 14 s = u * u + v * v; 15 } while ( s >= 1.0 ); 16 s = sqrt( (-2.0 * log(s)) / s ); 17 z0 = u * s; 18 z1 = v * s; 19 use_last = 1; 20 } 21 return( mean + z0 * sd ); 22 }
Selanjutnya Kode 2 akan dimasukkan dalam game untuk membangkitkan angka random yang terdistribusi gaussian pada pemilihan gerakan tarung NPC.
4. Pembahasan Hasil Dalam penelitian ini akan diuji cobakan tiga buah skenario pertarungan. Pertama adalah pertarungan tunggal NPC, satu lawan satu (1-1). Kedua adalah pertarungan satu NPC melawan banyak NPC (1-n). Sedangkan yang ketiga adalah pertarungan banyak NPC melawan banyak NPC (n-n). Tabel 2. Properti NPC NPC Teman NPC Musuh health = 40 health = 40 damage1 = 0 damage = 0.1 * health damage2 = 0.1 * health damage3 = 20
Tabel 2 menunjukkan properti NPC yang akan digunakan selama percobaan. Dari masing-masing percobaan tersebut akan dihitung jumlah gerakan tarung yang digunakan NPC, berapa waktu yang dibutuhkan untuk bertarung serta siapa yang akan memenangi pertarungan. Selanjutnya akan di plot jumlah kemenangan dan kekalahan tersebut untuk mendapatkan mean(µ) dan standard deviasi (σ) yang ideal.
Dari tabel tersebut dapat diplot seperti pada Gambar 9. Dari Gambar 9, dapat dilihat bahwa mean(µ) yang ideal adalah sekitar 3.5. (pada titik A)
Gambar 9: Hasil Plot Percobaan 1-1
4.1 Satu lawan banyak (1-n) Pada percobaan ini akan digunakan perbandingan 1:3, dimana satu NPC teman akan berhadapan dengan 3 NPC musuh. Hasil dari 10 kali percobaan dapat dilihat pada Tabel 4. Tabel 4. Hasil Percobaan 1-n Σwin Σlose µ=1 0 10 µ=2 0 10 µ=3 0 10 µ=4 0 10 µ=5 0 10 µ=6 1 9 µ=7 2 8 µ=8 6 4 µ=9 7 3 µ=10 7 3
Plot data dari Tabel 4 dapat dilihat pada Gambar 10. Dari Gambar tersebut, dapat dilihat bahwa yang mean(µ) ideal adalah sekitar 7.8. (titik A)
Seminar Nasional Pascasarjana X – ITS, Surabaya 4 Agustus 2010 ISBN No. 979-545-0270-1
lawan banyak, distribusi gerakan yang ideal menggunakan mean (µ) = 8.5 dan standard deviasi (σ) = 1.
6. Pustaka
Gambar 10: Hasil Plot Percobaan 1-n
4.1 Banyak lawan banyak (n-n) Pada percobaan ini akan digunakan kondisi seperti pada percobaan satu lawan banyak (1-n). Perbandingan yang dipakai juga sebesar 1:3 yaitu 5 buah NPC teman akan menghadapi 15 buah NPC lawan. Dari percobaan dihasilkan data sebagai berikut. (Tabel 5.) Tabel 5. Hasil Percobaan n-n Σwin Σlose µ=1 0 10 µ=2 0 10 µ=3 0 10 µ=4 0 10 µ=5 0 10 µ=6 0 10 µ=7 1 9 µ=8 2 8 µ=9 7 3 µ=10 8 2
Plot data dari Tabel 5 dapat dilihat pada Gambar 11. Dari Gambar 11, dapat dilihat bahwa mean(µ) yang ideal untuk pertarungan banyak lawan banyak adalah sekitar 8.5. (titik A)
Gambar 11: Hasil Plot Percobaan n-n
5. Kesimpulan Dari hasil percobaan dapat disimpulkan bahwa penggunaan distribusi gaussian pada pemilihan gerakan tarung NPC dapat membuat waktu tarung menjadi lebih lama dan musuh tidak mudah untuk dikalahkan. Pada kondisi tarung satu lawan satu distribusi yang ideal adalah dengan mean (µ) = 3.5 dan standard deviasi (σ) = 1. Untuk kondisi satu lawan banyak, distribusi gerakan yang ideal menggunakan mean (µ) = 7.8 dan standard deviasi (σ) = 1. Sedangkan untuk kondisi banyak
Kyungeun Cho, Wei Song, Kyhyun Um, “Gaussian Distribution for NPC Character in Real-Life Simulation”, International Conference on Intellegent Pervasive Computing. 2007. David B. Thomas, Wayne Luk, Philip H. W. Leong, John D. Villasenor. “Gaussian random number generators”. ACM Vol. 9 Page. 11. 2007. Bong-Keun Lee, Choong-Shik Park, Jae-Hong Kim, Sang-Jo Youk, Keun Ho Ryu. “An Intelligent NPC Framework For Context Awarness in MMORPG”. International Conference on Convergence and Hybrid Information Technology. 2008. Ian Millington. “Artificial Intellegence for Games”. Morgan Kaufmann Publisher Inc. 2006. Adi Botea, Ralf Herbrich, Thore Graepel. ”Video Games and Artificial Intellegence”. Microsoft Reasearch Cambridge. 2008. 3D Game Studio Team, “3D Game Studio Online Manual”. http://manual.conitec.net/