Diajukan untuk memenuhi salah satu syarat memperoleh gelar Sarjana Teknik
Informatika
Disusun Oleh:
Nama : Dimas Adi Suyikno
NIM : A11.2015.08907
Program Studi : Teknik Informatika S1
Menyetujui: Mengetahui:
Pembimbing Dekan Fakultas Ilmu Komputer
i
PENGESAHAN DEWAN PENGUJI
Tugas Akhir ini telah diujikan dan dipertahankan dihadapan Dewan Penguji pada
Sidang tugas akhir tanggal …. 2019. Menurut pandangan kami, tugas akhir ini
memadai dari segi kualitas maupun kuantitas untuk tujuan penganugrahan gelar
Sarjana Komputer (S.Kom.)
Semarang, …. 2019
Anggota Anggota
Ketua Penguji
ii
PERNYATAAN
KEASLIAN SKRIPSI
Merupakan karya asli saya (kecuali cuplikan dan ringkasan yang masing-masing
telah saya jelaskan sumbernya dan perangkat pendukung). Apabila di kemudian
hari, karya saya disinyalir bukan merupakan karya asli saya, yang disertai dengan
bukti-bukti yang cukup, maka saya bersedia untuk dibatalkan gelar saya beserta
hak dan kewajiban yang melekat pada gelar tersebut. Demikian surat pernyataan
ini saya buat dengan sebenarnya.
Dibuat di : Semarang
Pada tanggal : …. 2019
Yang menyatakan
iii
PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS
Dibuat di : Semarang
Pada tanggal : ….. 2019
Yang menyatakan
iv
UCAPAN TERIMAKASIH
Dengan memanjatkan puji syukur kehadirat Allah SWT. Tuhan Yang Maha
Pengasih dan Maha Penyayang yang telah melimpahkan segala rahmat, hidayah
dan inayah-Nya kepada penulis sehingga laporan tugas akhir dengan judul
“PERANCANGAN NON-PLAYABLE CHARACTER YANG DINAMIS PADA
GAME PETAK UMPET DENGAN GOAL-ORIENTED ACTION PLANNING”
dapat penulis selesaikan sesuai dengan rencana karena dukungan dari berbagai
pihak yang tidak ternilai besarnya. Oleh karena itu penulis menyampaikan
terimakasih kepada:
1. Prof. Dr. Ir. Edi Noersasongko, M.Kom, selaku Rektor Universitas Dian
Nuswantoro Semarang.
2. Dr. Drs. Abdul Syukur, MM, selaku Dekan Fakultas Ilmu Komputer.
3. Heru Agus Santoso, Ph.D, selaku Ketua Program Studi Teknik
Informatika-S1.
4. Abas Setiawan S.Kom, M.Cs, selaku pembimbing tugas akhir yang
memberikan ide penelitian, memberikan informasi referensi yang penulis
butuhkan dan bimbingan yang berkaitan dengan penelitian penulis.
5. Dosen-dosen pengampu di Fakultas Ilmu Komputer Teknik Informatika
Universitas Dian Nuswantoro Semarang yang telah memberikan ilmu dan
pengalamannya masing-masing, sehingga penulis dapat mengimplementasikan
ilmu yang telah disampaikan.
Semoga Tuhan yang Maha Esa memberikan balasan yang lebih besar kepada
beliau-beliau, dan pada akhirnya penulis berharap bahwa penulisan laporan tugas
akhir ini dapat bermanfaat dan berguna sebagaimana fungsinya.
Penulis
v
HALAMAN RINGKASAN
Peramainan Petak Umpet merupakan salah satu jenis permainan tradisional, untuk
bermian Petak Umpet diperlukan lahan yang luas dan lebih dari satu orang untuk
memainkannya. Salah satu cara untuk melestarikan permainan ini adalah dengan
membuat game digital Petak Umpet, dimana game digital sangat digemari oleh
anak – anak dan remaja. Permainan petak umpet masuk pada kategori survival
strategi. Salah satu komponen penting game kategori survival strategi adalah
tingkah laku dari Non Playablel Character (NPC), dalam game survival strategi
diperlukan tingkah laku NPC yang dinamis sehingga game Petak Umpet dapat
menjadi game yang menarik. Penelitian dengan judul “Perancangan Non-Playable
Character yang Dinamis pada Game Petak Umpet dengan Goal-Oriented Action
Planning” memiliki rumusan masalah yaitu belum adanya game digital yang
memberikan edukasi tentang permainan trandisional Petak Umpet yang dapat
merancang tingkah laku NPC yang dinamis. Tujuan dari penelitian ini adalah
membuat game digital yang diadaptasi dari permaianan tradisional Petak Umpet
dengan menerapkan algoritma Goal-Oriented Action Planning (GOAP) untuk
merancang tingkah laku NPC menjadi dinamis.
Penelitian ini menggunakan algoritma Goal-Oriented Action Planning (GOAP)
untuk merancang tingkah laku dari NPC. GOAP memiliki empat komponen
penting yaitu goal,action,plan dan formulate plan. Dimana GOAP akan
merancangan beberapa plan, dan plan terbaik akan dijalankan oleh NPC.
Keyword : Goal-Oriented Action Planning(GOAP), Petak Umpet, tingkah laku
NPC, game survival strategi
vi
DAFTAR ISI
BAB I ............................................................................................................................. 1
BAB II ............................................................................................................................ 4
vii
2.2.5 Goal-Oriented Action Planning (GOAP) .......................................................... 16
BAB IV ........................................................................................................................ 37
viii
4.1.1 Target Pemakai dan Platform ............................................................................. 37
BAB V.......................................................................................................................... 72
ix
DAFTAR TABEL
Tabel 3. 1 Precondition dan Effect dari Action NPC Petak Umpet ...................... 32
x
DAFTAR GAMBAR
xi
BAB I
PENDAHULUAN
1
2
teknologi Virtual Reality (VR) dan Augemnted Reality (AR) yang berbasis
platform android. Wibowo (Wibowo, 2015) meneliti tentang digitalisasi
permainan Petak Umpet dengan membuat game kategori Role Playing Game
(RPG), Andre (Pamoedji, 2017) melakukan penelitian tentang penggunaan
permainan Petak Umpet untuk meningkatkan popularitas lawang sewu dengan
menggunakan konsep Augmented Reality (AR) yang berbasis platform android.
Permainan petak umpet termasuk didalam kategori survival strategi. Salah
satu komponen penting game kategori survival strategi adalah tingkah laku dari
Non Plaablel Character (NPC), dalam game survival strategi diperlukan tingkah
laku NPC yang dinamis sehingga game Petak Umpet dapat menjadi game yang
menarik. Tingkah laku NPC dinamis dapat dibuat dengan menggunakan Aritficial
Intelligence. Aritficial Intelligence dapat mengendalikan tingkah laku dari NPC.
Algoritma Artificial Intelligence yang bisa digunakan untuk membuat tingah laku
dari NPC yaitu Finite-State Machine (FSM) (Kim & Kim, 2016), Behavior Tree
(Nicolau, Perez-Liebana, Oneill, & Brabazon, 2017), dan Goal-Oriented Action
Planning (GOAP) (Orkin, 2004).
BAB II
TINJAUAN PUSTAKA DAN LANDASAN TEORI
musuh aman maka musuh tidak akan menjadi pencari pada permainan selanjutnya
(Conte & Cindy, 2002).
Komponen penting pada game dapat dibagi menjadi tiga bagian yaitu
karakter, item, dan object (Agustin, 2017). Karakter terdiri dari dua macam yaitu
Playable Character (PC) dan Non-Playable Character (NPC). Item pada video
game berupa entitas yang dapat, dibeli, didapat, diolah dan dijual. Objek
Merupakan sebuah entitas yang bisa maupun tidak bisa digunakan oleh player
dapat berupa tembok maupun mobil.
13
Salah satu komoponen pada NPC yang sangat penting adalah tingkah laku
dari NPC pada sebuah game (Yannakakis & Togelius, 2015). Dimana tingkah
laku dari NPC akan sangat berpengaruh pada bagus tidaknya sebuah game.
Semakin dinamis NPC maka video game semakin bagus begitu juga sebaliknya
semakin statis tingkah laku NPC maka video game akan terasa membosankan
karena tingkah laku dari NPC mudah di baca oleh player.
Tingkah laku dari NPC dikatakan dinamis jika setiap action yang
dilakukan oleh NPC sulit untuk dibaca oleh player. Dimana tingkah laku NPC
dinamis dapat dilihat dari action yang diambil oleh NPC tidak selalu sama. Salah
satu keuntungan dari tingkah laku NPC yang dinamis adalah video game menjadi
lebih menarik dan player menjadi tidak lebih cepat bosan (Orkin, 2006), akan
tetapi tingkah laku NPC dinamis juga memiliki kekurangan yaitu waktu
pengembangan yang sangat lama.
14
Tingkah laku dari NPC dikatakan statis jika setiap action yang dilakukan
oleh NPC mudah untuk dibaca oleh player. Dimana tingkah laku NPC statis dapat
diingat dengan beberapa kali melihat action yang diambil oleh NPC, keuntungan
dari tingkah laku NPC yang statis adalah mempersingakat waktu pengembangan
(Orkin, 2004), tingkah laku NPC statis juga memiliki kekurangan yaitu video
game menjadi kurang interaktif dan terkesan monoton.
9. General Game AI
10. AI in Commercial Game
Goal adalah sebuah kondisi yang agent ingin penuhi. Agent bisa memiliki
goal lebih dari satu. Goal dalam GOAP tidak termasuk plan. Sebaliknya, mereka
hanya mendefinisikan kondisi apa yang perlu dipenuhi untuk memenuhi tujuan.
Langkah-langkah yang digunakan untuk mencapai kondisi satisfaction ini
ditentukan secara real-time.
20
Action adalah single, atomic step pada plan yang dapat membuat NPC
melakukan sesuatu. Setiap action tahu kapan itu berlaku untuk dijalankan, dan apa
yang akan dilakukannya pada game world. Atau dalam kata lain action memiliki
preconditions dan effect. preconditions dan effect mengasilkan sebuauh
mekanisme untuk chaining action menjadi sequence yang valid. Contoh lari
memiliki preconditions yaitu NPC harus melakukan observasi dan memiliki effect
NPC berlari. Sebelum melakukan action lari ada syarat yaitu precondition dimana
NPC harus melakukan Observasi dan syarat untuk action Observasi adalah NPC
harus sembunyi dan dapat di lihat untuk melakukan action lari diperlukan action
sembunyi dan observasi, setiap action memiliki precondition dan effect lebih dari
satu.
Plan hanyalah nama untuk urutan action. Plan harus memenuhi goal yang
sudah ditetapkan. Plan merupakan urutan action valid yang nantinya dilakukan
oleh NPC. NPC akan melakukan action dari state awal ke state selanjutnya yang
nantinya memenuhi goal.
Charater atau dalam hal ini NPC akan membuat plan secara real-time
untuk memnuhi system yang bernama planner. Planner akan mencari beberapa
action yang nantinya dibuat sequence yang dimulai dari state awal sampai pada
goal state, proses ini disebut dengan formulate a plan, jika planner sukses maka
akan dikembalikan pada NPC dan dijalankan dan jika gagal maka planner akan
menyusun kembali sequence action samapai sequence action berhasil. NPC akan
terus mengikuti plan dan akan berhenti sampai goal baru atau plan menjadi
invalid. Jika goal menjadi tidak valid atau berubah maka plan akan dibatalkan.
Proses formulate a plan dapat dilihat pada Gambar 2.12 .
Plan bisa lebih dari satu tergantung world state. Planner hanya akan
memilih yang terbaik jika terdapat lebih dari satu plan. Hal ini sama dengan
pathfinding, planner search algorithm bisa menggunakan hint untuk membantu
pencarian, seperti contoh dengan membirkan nilai pada setiap action, yang
nantinuya planner akan mecari seqaunce action yang memiliki cost yang paling
sedikit.
BAB III
METODE PENELITIAN
sedangkan NPC yaitu menyentuh jipong. Alur permaianan Petak Umpet yang
pertama adalah pandangan dari player tertutup dan hitung mundur dari sepuluh
sampai selesai, selama hitung mundur NPC akan bersembunyi. Sesudah hitung
mundur selesai player akan mencari seluruh NPC dan NPC akan berusaha untuk
menyentuh jipong.
3.3.2 Target Audience
Target Audience pada game Petak Umpet adalah anak umur 7 tahun
sampai remaja umur 15 tahun.
3.3.3 Platform Game
Platform game Petak Umpet yaitu pada mobile phone untuk Sistem
Operasi Android. Dimana plaform mobile phone Android lebih mudah dalam
bermain game, karena bisa dimainkan dimanapun dan kapanpun. game mobile
lebih digemari oleh anak-anak dan remaja dibandingkan dengan game PC.
3.3.4 Game Mekanik
Game Petak Umpet menerapkan pola tingkah laku NPC yang dinamis
untuk membuat game menjadi lebih menarik dan tidak membosankan.
3.3.5 Game Kontrol
Game Petak Umpet memiliki sudut pandang orang pertama. Untuk
menggerakkan player aka nada tombol navigasi dan untuk mengarahkan player
harus menggeser layar mobile phone. Akan terdapat tombol khusus untuk player
berlari.
29
Is_Lari :
Is_Lari merupakan World Condition dimana NPC sedang berlari atau
tidak.
Is_Jopong :
Is_Jipong merupakan world condition dimana NPC berhasil menyentuh
base player.
Is_aman :
Is_aman merupakan World Condition dimana NPC tidak melihat player.
Is_ Sembunyi :
Is_Sembunyi merupakan World Condition dimana NPC sedang
bersembunyi pada object penghalang atau tidak.
Is_observasi :
Is_observasi merupakan World Condition dimana NPC melakukan
observasi.
Action terdiri dari Precondition dan Effect yang memeliki nilai yang dapat
mempengaruhi setiap action yang akan dirancang oleh Planner.Precondition
merupakan sebuah konidisi dari World Condition yang harus dipenuhi sebelum
action bisa dijalankan, dan effect merupakan hasil yang ditimbulkan terhadap
World Condition oleh action.
Tabel 3. 1 Precondition dan Effect dari Action NPC Petak Umpet
BAB IV
ANALISIS HASIL PENELITIAN DAN PEMBAHASAN
11. }
12. if (aman == false) {
13. goal.Add(new KeyValuePair<string, object>("is_aman",true));
14. }
15. return goal;
16. }
Algoritma 4.1. Menunjukkan tujuan/ goal apa saja yang harus diselesaikan
oleh NPC seperti is_jipong harus true, is_observasi harus true dan is_aman harus
true. Semua goal diisi secara hard code. Dimana semua kondisi digunakan untuk
membantu NPC dan membuat permainan menjadi lebih baik.
kelas NPC. Fungsi getWorldState akan berisis World Condition yang ada pada
game Petak Umpet.
Algoritma 4.2 adalah world Condition yang ada pada game petak umpet.
World condition Game Petak Umpet teridiri dari enam world condition yaitu
is_observasi, is_sembunyi,is_jipong, is_player_jauh, is_lari dan is_aman, sesuai
dengan rancangan pada bab sebelumnya. World Condition memiliki varibel
HashSet dimana terdiri dari dua variable yaitu string dan object. Kelas ini juga
merupakan parent dari kelas NPC agent sehingga memiliki fungsi yang digunakan
pada kelas NPC agent yaitu createGoalState.
Kelas NPC juga memiliki beberapa fungsi yang berguna untuk membantu
atau mengetahui algoritma GOAP berjalan atau tidak. Fungsi tersebut adalah
PlanFound dimana fungsi ini berfungsi untuk memberitahukan bahwa ada plan
yang tersedia, actionFinished yaitu fungsi yang memberitahukan bahwa plan yang
dilakukan berhasil, planAborted yaitu fungsi yang memberitahukan bahwa plan
tidak jadi atau tidak dilaksanakan.
43
5. }
Method doReset adalah fungsi yang digunakan pada saat action atau plan
sudah selesai dilakukan. doReset melakukan reset inRange, dan target yang ada
pada action ini, sehingga pada saat menyusun plan baru action akan kembali pada
kondisi awal.
Method yang dibutuhkan atau wajib ada pada setiap kelas action yang
akan dibuat. Dimana method checkProceduralPrecondition berisi apa saja yang
harus dilakukan sebelum action dijalankan. Method perform berisi apa yang
harus dilakukan pada saat action dijalankan. Method
checkProceduralPrecondition dan perform adalah inti dari action yang harus
dilakukan NPC
2. NPC Observasi
Action Observasi memiliki addPrecondition yang harus dipenuhi yaitu
is_sembunyi harus true dan addEfect is_observasi menjadi true.
32. }
33. target = mis.tempat_sembunyi [tamp].transform;
34. return target!=null;
35. }
36. public override bool perform (GameObject agent){
37. navComponent.SetDestination (target.position);
38. if (Vector3.Distance (transform.position, target.position)
39. <= 1) {
40. if (startTime == 0) {
41. startTime = Time.time;
42. }
43. if (Time.time - startTime > workDuration) {
44. pindah_temapat_sembunyi = true;
45. }
46. }
47. if (pindah_temapat_sembunyi == true) {
48. if (startTime == 0) {
49. startTime = Time.time;
50. }
51. if (Time.time - startTime > workDuration) {
52. pindah_temapat_sembunyi = true;
53. }
54. }
55. mts.sembunyi = true;
56. lbr.aman = true;
57. return true;
58. }
4. NPC Lari
Action lari tidak memiliki addPrecondition yang harus dipenuhi oleh
karena itu action lari dapat digunakan kapan saja oleh NPC dan juga action Lari
memiliki addEffect yang dapat merubah is_lari menjadi true.
Kelas GoapPlanner memilki kelas dalam kelas yaitu Node, Node berfungsi
untuk mrngubah action menjadi Node. Kelas GoapPlanner terdiri dari beberapa
method yaitu method plan, buildGraph, actionSubset, inState dan populateState.
Method plan berfungsi merancang plan dengan mengetahui action – action apa
saja yang ada dan plan mana yang memiliki cost terendah akan tetapi Karena pada
penelitian kali cost tidak dimasukkan maka setiap action memiliki cost yang
sama.
Pada method plan terdapat kelas baru yaitu node yang berfungsi untuk
merubah action – action menjadi sebuah node yang nantinya disusun menjadi
sebuah graph, karena setiap action memiliki cost yang sama maka plan yang
memiliki action terpendek yang akan dijalankan.
55
5. HashSet<KeyValuePair<string,object>> ();
6. foreach (KeyValuePair<string,object> s in currentState) {
7. state.Add(new KeyValuePair<string,
8. object>(s.Key,s.Value));
9. }
10. foreach (KeyValuePair<string,object> change in stateChange) {
11. bool exists = false;
12. foreach (KeyValuePair<string,object> s in state) {
13. if (s.Equals(change)) {
14. exists = true;
15. break;
16. }
17. }
18. if (exists) {
19. state.RemoveWhere((KeyValuePair<string,object> kvp) =>
20. {return kvp.Key.Equals (change.Key); } );
21. KeyValuePair<string, object> updated =
22. new KeyValuePair<string,
23. object>(change.Key,change.Value);
24. state.Add(updated);
25. }
26. else {
27. state.Add(new KeyValuePair<string,
28. object>(change.Key,change.Value));
29. }
30. }
31. return state;
32. }
Pada kelas GoapPlanner terdapat kelas lagi yaitu kelas Node yang
memiliki fungsi untuk merubah setiap action menjadi sebuh node yang nantinya
dapat dibuat menjadi sebuah graph.
4.2.5.Menjalankan Plan
Tahap kelima dari algoritma GOAP adalah menjalankan plan Untuk
menjalankan plan dibuatlah kelas GoapAgent, GoapAgent akan mengatur NPC
dalam menjalankan plan yang sudah dibuat sebelumnya. Gambar 4.7 merupakan
kelas diagram dari GoapAgent.
Kelas GoapAgent meenggunakan kelas FSM untuk idle, move dan perform
state. Kelas GoapAgent terdiri dari beberapa method yaitu method Start, Update,
AddAction, GetAction, removeAction, hasActionPlan, createIdleState,
createMoveToState, createPerformActionState, FindDataProvider. Kelas
59
Method Start dan Update merupakan method bawaan dari Unity Engine,
method Start dijalankan pada saat awal permainan dimulai dan Method Update
dijalankan secara terus menerus selama permainan sedang berjalan.
14. if (hasActionPlan()) {
15. action = currentActions.Peek();
16. bool inRange = action.requiresInRange() ?
17. action.isInRange() : true;
18. if ( inRange ) {
19. bool success = action.perform(gameObj);
20. if (!success) {
21. fsm.popState();
22. fsm.pushState(idleState);
23. dataProvider.planAborted(action);
24. }
25. } else {
26. fsm.pushState(moveToState);
27. }
28. } else {
29. fsm.popState();
30. fsm.pushState(idleState);
31. dataProvider.actionsFinished();
32. }
33. };
34. }
35. private void findDataProvider() {
36. foreach (Component comp in
37. gameObject.GetComponents(typeof(Component)) ) {
38. if ( typeof(IGoap).IsAssignableFrom(comp.GetType()) )
39. {
40. dataProvider = (IGoap)comp;
41. return;
42. }
43. }
44. }
63
Percobaan dilakukan dua puluh kali untuk setiap level dan masing –
masing untuk GOAP dan GOAP dengan penempatan maksimal dua NPC per
tempat sembunyi , setiap level pada permainan petak umpet memiliki jumlah NPC
yang berbeda yaitu pada level 1 jumlah NPC sebanyak 4 NPC, level 2 terdapat 5
NPC dan level 3 terdapat 6 NPC.
Agresivitas
No GOAP GOAP (2 penempatan)
level 1 level 2 level 3 level 1 level 2 level 3
1 0.33 (1/3) 0.5(2/4) 0(0/4) 0(0/3) 0.67(2/3) 0.4(2/5)
2 0.25(1/4) 0.25(1/4) 0.33 (1/3) 0(0/2) 0.5(2/4) 0.5(3/6)
3 0(0/3) 0(0/4) 0.33 (1/3) 1(2/2) 0.25(1/4) 0.6(3/5)
4 0.5(2/4) 0(0/4) 0.25(1/4) 0.5(1/2) 0.25(1/4) 0.33 (2/6)
5 0.33 (1/3) 0.2(1/5) 0.4(2/5) 0.33 (1/3) 0.5(2/4) 0.5(2/4)
6 0.33 (1/3) 0(0/4) 0.2(1/5) 0(0/1) 0.5(2/4) 0.5(2/4)
7 0.67(2/3) 0.2(1/5) 0.33 (2/6) 0(0/2) 0.42(2/5) 0.67(4/6)
8 0.25(1/4) 0(0/4) 0.25(1/4) 0.5(1/1) 0.25(1/4) 0.67(2/3)
9 0.5(1/2) 0.5(2/4) 0.33 (2/6) 0.5(1/2) 0(0/5) 0.33 (2/6)
10 0(0/1) 0(0/4) 0(0/3) 0.5(1/2) 0.25(1/4) 0.25(1/4)
11 0(0/2) 0.33 (1/3) 0.2(1/5) 0(0/2) 0.2(1/5) 0(0/6)
12 0(0/3) 0.2(1/5) 0.167(1/6) 0(0/2) 0.4(2/5) 0.25(1/4)
13 0.3 (1/3) 0.33 (1/3) 0.167(1/6) 0(0/2) 0.5(2/4) 0(0/3)
14 0(0/3) 0.25(1/4) 0.2(1/5) 0(0/2) 0.4(2/5) 0.2(1/5)
15 0.5(1/2) 0(0/2) 0.4(2/5) 0.67(2/3) 0(0/3) 0.167(1/6)
16 0.33 (1/3) 0.25(1/4) 0.2(1/5) 0.5(1/2) 0.4(2/5) 0.4(2/5)
17 0(0/1) 0(0/4) 0(0/6) 0.33 (1/3) 0.2(1/5) 0.25(1/4)
18 0.25(1/4) 0.5(2/4) 0(0/6) 0.5(1/2) 0.5(1/2) 0.2(1/5)
19 0.5(1/2) 0.25(1/4) 0.2(1/5) 0.5(1/2) 0.67(2/3) 0(0/5)
20 0(0/3) 0(0/3) 0.33 (2/6) 0.33 (1/3) 0(0/5) 0.6(3/5)
rata - rata 0.254 0.188 0.215 0.308 0.341 0.340
terdapat 5 NPC dan pada level 3 terdapat 6 NPC. Dari percobaan yang dilakukan
didapatkan hasil seperti pada Table 4.2.
Tabel 4. 2 hasil percobaan keberhasilan NPC
Keberhasilan
No GOAP GOAP (2 Penempatan)
level 1 level 2 level 3 level 1 level 2 level 3
1 0.5(2/4) 0.6(3/5) 0.5(3/6) 0.25(1/4) 0.4(2/5) 0.67(4/6)
2 0.75(3/4) 0.4(2/5) 0.5(3/6) 0.75(3/4) 0.4(2/5) 0.67(4/6)
3 0.25(1/4) 0.4(2/5) 0.5(3/6) 0.75(3/4) 0.6(3/5) 0.67(4/6)
4 0.5(2/4) 0.8(4/5) 0.33(2/6) 0.5(2/4) 0.4(2/5) 0.83(5/6)
5 0.5(2/4) 0.4(2/5) 0.33(2/6) 0.25(1/4) 0.6(3/5) 0.5(3/6)
6 0.25(1/4) 0.2(1/5) 0.5(3/6) 0.5(2/4) 0.6(3/5) 0.5(3/6)
7 0.25(1/4) 0.6(3/5) 0.83(5/6) 0.75(3/4) 0.6(3/5) 0.5(3/6)
8 0.25(1/4) 0.2(1/5) 0.5(3/6) 1(4/4) 0.4(2/5) 0.33(2/6)
9 0.5(2/4) 0.2(1/5) 0.83(5/6) 0.75(3/4) 0.4(2/5) 0.5(3/6)
10 0.5(2/4) 0(0/5) 0.167(1/6) 0.75(3/4) 0.4(2/5) 0.83(5/6)
11 0.5(2/4) 0.2(1/5) 0.33(2/6) 0.5(2/4) 0.6(3/5) 0.67(4/6)
12 0.25(1/4) 0.2(1/5) 0(0/6) 0.25(1/4) 0.4(2/5) 0.67(4/6)
13 0.25(1/4) 0.4(2/5) 0.33(2/6) 0.5(2/4) 0.4(2/5) 0.67(4/6)
14 0.5(2/4) 0.4(2/5) 0.5(3/6) 0.75(3/4) 0.4(2/5) 0.5(3/6)
15 0.25(1/4) 0.4(2/5) 0.33(2/6) 0.75(3/4) 0(0/5) 0.5(3/6)
16 0.5(2/4) 0(0/5) 0.33(2/6) 0.75(3/4) 0.4(2/5) 0.33(2/6)
17 0.5(2/4) 0(0/5) 0.167(1/6) 0.25(1/4) 0.4(2/5) 0.5(3/6)
18 0.25(1/4) 0.2(1/5) 0.167(1/6) 0.5(2/4) 0.4(2/5) 0.5(3/6)
19 0.75(3/4) 0(0/5) 0.33(2/6) 0.75(3/4) 0(0/5) 0.5(3/6)
20 0.5(2/4) 0.2(1/5) 0.33(2/6) 0.5(2/4) 0.2(1/5) 0.33(2/6)
rata - rata 0.425 0.29 0.392 0.588 0.4 0.558
persembunyian maka data yang diambil adalah dua, dimana jumlah NPC pada
level satu adalah 4 NPC, level 2 terdapat 5 NPC dan pada level 3 terdapat 6 NPC.
Dari percobaan yang dilakukan didapatkan hasil seperti pada Table 4.3
Tabel 4. 3 hasil percobaan penempatan NPC
Penempatan
No GOAP GOAP (2 Penempatan)
level 1 level 2 level 3 level 1 level 2 level 3
1 0.25(1/4) 0.2(1/5) 0.33(2/6) 0.25(1/4) 0.2(1/5) 0.167(1/6)
2 0.5(2/4) 0.4(2/5) 0.33(2/6) 0.5(2/4) 0.2(1/5) 0.167(1/6)
3 0.5(2/4) 0.2(1/5) 0.33(2/6) 0.5(2/4) 0.2(1/5) 0.33(2/6)
4 0.5(2/4) 0.4(2/5) 0.167(1/6) 0.25(1/4) 0.4(2/5) 0.167(1/6)
5 0.25(1/4) 0.2(1/5) 0.33(2/6) 0.5(2/4) 0.2(1/5) 0.167(1/6)
6 0.5(2/4) 0.4(2/5) 0.33(2/6) 0.25(1/4) 0.2(1/5) 0.33(2/6)
7 0.5(2/4) 0.4(2/5) 0.167(1/6) 0.25(1/4) 0.4(2/5) 0.33(2/6)
8 0.5(2/4) 0.4(2/5) 0.33(2/6) 0.5(2/4) 0.4(2/5) 0.167(1/6)
9 0.5(2/4) 0.2(1/5) 0.167(1/6) 0.5(2/4) 0.2(1/5) 0.33(2/6)
10 0.5(2/4) 0.4(2/5) 0.33(2/6) 0.25(1/4) 0.4(2/5) 0.33(2/6)
11 0.25(1/4) 0.2(1/5) 0.33(2/6) 0.25(1/4) 0.2(1/5) 0.167(1/6)
12 0.25(1/4) 0.2(1/5) 0.33(2/6) 0.25(1/4) 0.2(1/5) 0.167(1/6)
13 0.5(2/4) 0.2(1/5) 0.5(3/6) 0.25(1/4) 0.2(1/5) 0.33(2/6)
14 0.25(1/4) 0.2(1/5) 0.167(1/6) 0.25(1/4) 0.2(1/5) 0.33(2/6)
15 0.25(1/4) 0.2(1/5) 0.33(2/6) 0.5(2/4) 0.2(1/5) 0.167(1/6)
16 0.25(1/4) 0.4(2/5) 0.167(1/6) 0.25(1/4) 0.2(1/5) 0.33(2/6)
17 0.25(1/4) 0.4(2/5) 0.167(1/6) 0.25(1/4) 0.2(1/5) 0.33(2/6)
18 0.25(1/4) 0.4(2/5) 0.167(1/6) 0.25(1/4) 0.4(2/5) 0.167(1/6)
19 0.5(2/4) 0.4(2/5) 0.167(1/6) 0.25(1/4) 0.2(1/5) 0.33(2/6)
20 0.25(1/4) 0.2(1/5) 0.167(1/6) 0.25(1/4) 0.2(1/5) 0.167(1/6)
rata - rata 0.375 0.3 0.267 0.325 0.25 0.25
Dari data hasil percobaan yang sudah dapat dirata – rata secara
keseluruhan yaitu GOAP untuk agresivitas sebesar 0.219, keberhasilan sebesar
0.369, dan penempatan sebesar 0.314. GOAP maskimal 2 penempatan yaitu nilai
agresivitas sebesar 0.330, keberhasilan sebesar 0.515 dan penempatan sebesar
0.275. dari hasil diketahui bahwa GOAP maksimal dua penempatan NPC pada
satu tempat memiliki nilai yang lebih baik daripada nilai GOAP baik di setiap
level maupun rata – rata keseluruhan, dimana nilai agresivitas dari penempatan
maksimal dua NPC pada satu tempat lebih baik dibandingkan dengan GOAP di
setiap level dan nilai rata – rata keseluruhan.
Percobaan kedua yaitu keberhasilan dapat diketahui bahwa penempatan
maksimal dua NPC pada satu tempat lebih baik dibandingkan dengan GOAP
murni, hal ini dapat dikeahui dengan hasil GOAP yang kalah pada setiap level
dibandingkan dengan penempatan maksimal dua NPC pada satu tempat.
Percobaan terakhir yaitu penempatan dinilai dengan cara rata – rata
penempatan terkecillah yang terbaik, oleh karena itu penempatan maksimal dua
NPC pada satu tempat lebih baik daripada GOAP karena rata – rata penempatan
maksimal dua NPC pada satu tempat lebih rendah dibandingkan GOAP di setiap
level.
Dari kesimpulan yang sudah didaptkan pada percobaan agresivitas,
keberhasilan dan penempatan dapat diketahui bahwa penempatan maksimal dua
69
NPC pada satu tempat lebih baik dari pada GOAP secara keseluruan. Grafik dari
hasil percobaan pada dilihat pada Gambar 4.8.
0.7
0.6
0.5
0.4
Agresifitas
0.3
Keberhasilan
0.2
Penempatan
0.1
0
GOAP GOAP 2 GOAP GOAP 2 GOAP GOAP 2
Maksimal Maksimal Maksimal
level 1 level 2 level 3
akan mencari tempat sembunyi lain dan jika NPC ditemukan NPC dan player
akan berlomba menuju base awal. Gambar NPC sedang sembunyi dan ditemukan
dapat dilihat pada Gambar 4.10.
Player bertugas untuk mencaari NPC dan jika NPC ditemukan maka
player dan NPC akan berlomba menuju ke base awal,/jipong. Jika masih ada NPC
yang belum tertangkap atau aman maka player akan terus mencari. Gambar player
mencari pada game Petak Umpet dapat dilihat pada Gambar 4.11.
Jika semua musuh aman atau tertangkap maka permainan selesai. Pada
menu permainan selesai akan menampilkan jumalah musuh yang tertangkap dan
aman. Pada menu permainan selesai terdapat beberapa menu yaitu main lagi,
71
menu utama, next level, dan exit. Main lagi merupakan menu untuk bermain pada
level pada saat itu, menu utama akan kembali pada menu utama permainan, menu
next level akan menuju ke level berikutnya dan menu exit akan membuat game
Petak Umpet tertutup atau keluar. Gambar 4.12 merupakan menu permainan
selesai.
BAB V
KESIMPULAN DAN SARAN
5.1. Kesimpulan
5.2. Saran
DAFTAR PUSTAKA
Adams, E. (2019). Fundamentals of Game Design. New Riders.
https://doi.org/10.1017/CBO9781107415324.004
Agustin, R. D. (2017). Kerangka Analisis Komponen Konsep Dan Desain Game,
III(2).
Bogdanovych, A., & Trescak, T. (2017). To Plan or Not to Plan: Lessons Learned
from Building Large Scale Social Simulations, 10498, 53–62.
https://doi.org/10.1007/978-3-319-67401-8
Conte, S., & Cindy, R. (2002). Enhanced Hide And Seek Game And Method Of
Playing Game. United States Patent, 2(12).
Generation, N. (1996, March). The Next Generation 1996 Lexicon A to Z: NPC
(Nonplayer Character). Imagine Media, 38.
Hadi, S. ariesto. (2003). Multimedia interaktif dan flash.
Handayani, P. P., M, S., & Al Fatta, H. (2015). Perancangan Game Design
Document Serious Game Permainan Tradisional Angklek Sleman
Yogyakarta. Seminar Nasional Informatika 2015, 1, 1–7. Retrieved from
http://e-journal.potensi-utama.ac.id/ojs/index.php/SNIf/article/view/232
Hikmah Prisia Yudiwinata, H. P., & Handoyo, P. (2014). Permainan Tradisional
dalam Budaya dan Perkembangan Anak. Paradigma, 2, 1–5.
https://doi.org/S0025-326X(05)00576-X
[pii]\r10.1016/j.marpolbul.2005.12.009
Jacopin, E. (2014). Game AI Planning Analytics : The Case of Three First-Person
Shooters. Proceedings of the Tenth Annual AAAI Conference on Artificial
Intelligence and Interactive Digital Entertainment (AIIDE 2014), (AIIDE),
119–124. https://doi.org/10.1002/2015WR017498
Kim, D., & Kim, J. Y. (2016). Generation Technique of Dynamic Monster ’ s
Behavior Pattern Based on User ’ s Behavior Pattern Using FuSM
Generation Technique of Dynamic Monster ’ s Behavior Pattern Based on
User ’ s Behavior Pattern Using FuSM, 4(July 2015), 9–18.
https://doi.org/10.1109/OCEANS.2000.881353
Martono, K. T. (2015). Pengembangan Game Dengan Menggunakan Game
74