Anda di halaman 1dari 86

SKRIPSI

Perancangan Non-Playable Character yang Dinamis pada Game


Petak Umpet dengan Goal-Oriented Action Planning
Dynamic Non-Playable Character Development on Hide-and-Seek
Game using Goal-Oriented Action Planning

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

FAKULTAS ILMU KOMPUTER


UNIVERSITAS DIAN NUSWANTORO
SEMARANG
Tahun 2018/2019
PERSETUJUAN SKRIPSO

Nama : Dimas Adi Suyikno


NIM : A11.2015.08907
Program Studi : Teknik Informatika
Fakultas : Ilmu Komputer
Judul Tugas Akhir : Perancangan Non-Playable Character yang Dinamis pada
Game Petak Umpet dengan Goal-Oriented Action Planning

Tugas Akhir ini telah diperiksa dan disetujui,


Semarang, ….2019

Menyetujui: Mengetahui:
Pembimbing Dekan Fakultas Ilmu Komputer

Abas Setiawan S.Kom, M.Cs Dr. Drs. Abdul Syukur, MM

i
PENGESAHAN DEWAN PENGUJI

Nama Pelaksana : Dimas Adi Suyikno


NIM : A11.2015.08907
Program Studi : Teknik Informatika
Fakultas : Ilmu Komputer
Judul Tugas Akhir : Perancangan Non-Playable Character yang Dinamis pada
Game Petak Umpet dengan Goal-Oriented Action Planning

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

Erwin Yudi Hidayat, S.Kom, M.Cs Erna Zuni Astuti, M.Kom

Ketua Penguji

Dr M. Arief Soeleman, M.Kom

ii
PERNYATAAN
KEASLIAN SKRIPSI

Sebagai Mahasiswa Universitas Dian Nuswantoro, yang bertanda tangan di bawah


ini, saya:
Nama : Dimas Adi Suyikno
NIM : A11.2015.08907
Menyatakan bahwa karya ilmiah saya yang berjudul:
Perancangan Non-Playable Character yang Dinamis pada Game Petak
Umpet dengan Goal-Oriented Action Planning

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

Dimas Adi Suyikno

iii
PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS

Sebagai mahasiswa Universitas Dian Nuswantoro, yang bertanda tangan di bawah


ini, saya:
Nama : Dimas Adi Suyikno
NIM : A11.2015.08907
demi mengembangkan Ilmu Pengetahuan, menyetujui untuk memberikan kepada
Universitas Dian Nuswantoro Hak Bebas Royalti Non-Ekskusif (Non-exclusive
Royalty-Free Right) atas karya ilmiah saya yang berjudul:
Perancangan Non-Playable Character yang Dinamis pada Game Petak
Umpet dengan Goal-Oriented Action Planning beserta perangkat yang
diperlukan (bila ada). Dengan Hak Bebas Royalti Non-Eksklusif ini Universitas
Dian Nuswantoro berhak untuk menyimpan, mengcopy ulang (memperbanyak),
menggunakan, mengelolanya dalam bentuk pangkalan data (database),
mendistribusikannya dan menampilkan/mempublikasikannya di internet atau
media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya selama
tetap mencantumkan nama saya sebagai penulis/pencipta.

Saya bersedia untuk menanggung secara pribadi, tanpa melibatkan pihak


Universitas Dian Nuswantoro, segala bentuk tuntutan hukum yang timbul atas
pelanggaran Hak Cipta dalam karya ilmiah saya ini.
Demikian surat pernyataan ini saya buat dengan sebenarnya.

Dibuat di : Semarang
Pada tanggal : ….. 2019
Yang menyatakan

Dimas Adi Suyikno

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.

Semarang, ….. 2019

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

PERSETUJUAN SKRIPSO ............................................................................................i

PENGESAHAN DEWAN PENGUJI ........................................................................... ii

PERNYATAAN KEASLIAN SKRIPSI ..................................................................... iii

PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK


KEPENTINGAN AKADEMIS ....................................................................................iv

UCAPAN TERIMAKASIH ........................................................................................... v

HALAMAN RINGKASAN ..........................................................................................vi

DAFTAR ISI ............................................................................................................... vii

DAFTAR TABEL .......................................................................................................... x

DAFTAR GAMBAR ....................................................................................................xi

BAB I ............................................................................................................................. 1

1.1 Latar Belakang .................................................................................................... 1

1.2 Rumusan Masalah ................................................................................................ 2

1.3 Batasan Masalah................................................................................................... 2

1.4 Tujuan Penelitian ................................................................................................. 3

1.5 Manfaat Penelitan................................................................................................. 3

BAB II ............................................................................................................................ 4

2.1 Tinjuan Studi ........................................................................................................ 4

2.2 Landasan Teori ................................................................................................... 10

2.2.1 Petak Umpet ....................................................................................................... 10

2.2.2 Video Game ....................................................................................................... 11

2.2.3 Non-Playable Character (NPC). ........................................................................ 13

2.2.4 Artificial Intelligence (AI) ................................................................................ 14

vii
2.2.5 Goal-Oriented Action Planning (GOAP) .......................................................... 16

2.2.6 Metode Pengembangan Game............................................................................ 22

2.2.7 Kerangka Pemikiran........................................................................................... 25

BAB III ........................................................................................................................ 26

3.1 Jenis Penelitian ................................................................................................... 26

3.2 Instrumen Penelitian........................................................................................... 26

3.2.1 Kebutuhan Perangkat Keras ............................................................................... 26

3.2.2 Kebutuhan Perangkat Lunak .............................................................................. 27

3.3 Rancangan Game ............................................................................................... 27

3.3.1 Deskribsi Umum ................................................................................................ 27

3.3.2 Target Audience ................................................................................................. 28

3.3.3 Platform Game ................................................................................................... 28

3.3.4 Game Mekanik ................................................................................................... 28

3.3.5 Game Kontrol ..................................................................................................... 28

3.4 Metode Usulan ................................................................................................... 29

3.5 Identifikasi Goal ................................................................................................. 30

3.6 Mentukan World Condition ............................................................................... 30

3.7 Menentukan Action ............................................................................................ 31

3.7.1 Merancang Plan ................................................................................................. 33

3.7.2 Merancang Plan Observasi ................................................................................ 33

3.7.3 Merancang Plan Menuju Jipong ........................................................................ 34

3.7.4 Merancang Plan Pindah Tempat Sembunyi ....................................................... 35

3.8 Menjalankan Plan .............................................................................................. 36

BAB IV ........................................................................................................................ 37

4.1. Desain dan Perancangan Game Petak Umpet .................................................... 37

viii
4.1.1 Target Pemakai dan Platform ............................................................................. 37

4.1.2 Alur Permainan Petak Umpet............................................................................. 37

4.1.3 Aturan Game Petak Umpet ................................................................................ 38

4.1.4 Gameplay Petak Umpet Digital ......................................................................... 39

4.2. Implementasi Multi Agen GOAP....................................................................... 40

4.2.1. Identifikasi Tujuan Goal NPC Petak Umpet ................................................ 40

4.2.2. Menentukan World Condition Game Petak Umpet ..................................... 41

4.2.3. Menentukan Action ...................................................................................... 43

4.2.4. Merancang Plan ............................................................................................ 53

4.2.5. Menjalankan Plan ......................................................................................... 58

4.3. Skenario Percobaan ............................................................................................ 63

4.3.1. Perangkat untuk Percobaan .......................................................................... 64

4.3.2. Hasil Percobaan ............................................................................................ 64

4.4. Hasil Perbandingan ............................................................................................ 68

4.5. Hasil Tampilan Game Petak Umpet Digital....................................................... 69

BAB V.......................................................................................................................... 72

5.1. Kesimpulan ........................................................................................................ 72

5.2. Saran ................................................................................................................... 72

DAFTAR PUSTAKA .................................................................................................. 73

ix
DAFTAR TABEL

Tabel 2. 1 State Of The Art ..................................................................................... 6


Tabel 2. 2 Point Penting AI pada game................................................................. 15

Tabel 3. 1 Precondition dan Effect dari Action NPC Petak Umpet ...................... 32

Tabel 4. 1 hasil percobaan agresivitas NPC .......................................................... 65


Tabel 4. 2 hasil percobaan keberhasilan NPC ....................................................... 66
Tabel 4. 3 hasil percobaan penempatan NPC........................................................ 67
Tabel 4. 4 Hasil percobaan GOAP dan GOAP 2 maksimal ................................. 68

x
DAFTAR GAMBAR

Gambar 2. 1 Awal Permainan Petak Umpet(sumber : permainan-tradisional.com)


............................................................................................................................... 10
Gambar 2. 2 Musuh yang bersembunyi di tempat aman (Sumber : provoke-
online.com)............................................................................................................ 11
Gambar 2. 3 Video Game (Kiri) dan permainan Trandisional (kanan)(sumber:
permainan-tradisional.com) .................................................................................. 12
Gambar 2. 4 video game simulasi SimCity (sumber : WikiHow.com) ................ 12
Gambar 2. 5 NPC pada video game (sumber: kotaku.com) .................................. 13
Gambar 2. 6 Cara Kerja GOAP............................................................................. 17
Gambar 2. 7 keuntungan GOAP ........................................................................... 18
Gambar 2. 8 Alur Algoritma GOAP ..................................................................... 19
Gambar 2. 9 Analogi goal pada GOAP ................................................................. 20
Gambar 2. 10 Contoh action pada GOAP(sumber : medium.com) ...................... 20
Gambar 2. 11 Contoh Plan GOAP(sumber : medium.com).................................. 21
Gambar 2. 12 Proses Perancangan Plan(sumber : medium.com) ......................... 21
Gambar 2. 13 Metode Pengembangan Multimedia .............................................. 22
Gambar 2. 14 Metode Pengembangan Iterative. ................................................... 24
Gambar 2. 15 Kerangka Pemikiran ....................................................................... 25

Gambar 3. 1 FlowChart Goap ............................................................................... 29


Gambar 3. 2 Menentukan Goal NPC pada permainan Petak Umpet .................... 30
Gambar 3. 3 Action Pada permaian Petak Umpet................................................. 32
Gambar 3. 4 Alur perancangan Plan Observasi.................................................... 34
Gambar 3. 5 Alur perancangan Best case plan ..................................................... 35
Gambar 3. 6 Alur perancangan plan untuk sembunyi........................................... 36

xi
BAB I
PENDAHULUAN

1.1 Latar Belakang


Permainan Tradisional adalah salah satu bentuk budaya lokal yang setiap
wilayah berbeda – beda baik dari segi peraturan dan penamaan akan tetapi
merupakan permainan yang sama. Permaianan tradisional memiliki banyak
keuntungan pada pelakunya khusunya anak – anak dan remaja (Yumani, 2014).
Keuntungan permainan tradisional dapat meningkatkan sosialisasi, kesehatan dan
dapat mengajarkan nilai – nilai sosial, Seperti kerja sama/ gotong royong dan
kebersamaan (Handayani, M, & Al Fatta, 2015).
Faktor yang menyebabkan menurun dan bahkan hilangnya perminan
tradisional adalah ketidaktahuaan generasi sekarang terhadap permainan –
permainan tradisional. Ketidaktahuaan generasi sekarang terhadap permainan
tradisional bepotensi menurunkan dan bahkan menghilangkan permainan
tradisional (S.j. Ananda, A. Zefaldi, 2016). Popularitas dari permaian tradisional
semakin hari semakin menurun dan bahkan menghilang keberadaanya, khusunya
wilayah perkotaan merupakan contoh dari menurun dan bahkan menghilangnya
permainan tradisional. Salah satu penyebabnya adalah kurangnya tempat kosong
yang luas untuk bermain. Tempat yang luas diperlukan untuk bermain permainan
tradisional, sebagai contoh adalah gobak sodor, petak umpet dan boi-boian
(Hikmah Prisia Yudiwinata & Handoyo, 2014).
Salah satu permainan tradisional yang memerlukan tempat luas adalah
petak umpet, karena diperlukan tempat yang aman untuk bersembunyi dari
pemain yang bertugas mencari pemain lain yang bersembunyi. Petak umpet
memiliki manfaat untuk pekembangan anak yaitu melatih patuh terhadap
peraturan, melatih kesabaran, meningkatkan kreatifitas dan sportifitas (S.j.
Ananda, A. Zefaldi, 2016).
Ananda et al (S.j. Ananda, A. Zefaldi, 2016) melakukan Penelitian tentang
Permainan tradisional Petak umpet yang digitaliasasi dengan memanfaatkan

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).

1.2 Rumusan Masalah


Berdasarkan latar belakang yang sudah disebutkan sebelumnya, dapat
dirumuskan permasalahan yaitu bahwa belum adanya game digital yang di
adaptasi dari permainan trandisional Petak Umpet yang dapat merancang tingkah
laku NPC yang dinamis.

1.3 Batasan Masalah


Agar tidak menyimpang dari rumusan masalah dan tujuan, maka dibuatlah
ruang lingkup serta batasan masalah sebagai berikut:
1. Pemain terbatas sebagai pencari NPC yang bersembunyi didalam
permainan Petak Umpet.
2. Perancangan aplikasi menggunakan Bahasa C# pada Unity engine.
3. Aturan pada game petak umpet menggunakan aturan yang sudah
bersifat global seperti yang digunakan oleh google pada penelitiannya
tentang meningkatkan permainan Petak Umpet (Conte & Cindy, 2002).
3

1.4 Tujuan Penelitian


Dari rumusan masalah didapatkan tujuan penelitian yaitu 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.

1.5 Manfaat Penelitan


1.5.2. Bagi Penulis
1. Memberikan pengalaman tentang pembuatan NPC Game dalam rangka
untuk penyelesaian Tugaas Akhir Teknik Informatika S1.
2. Menambah pengetahuan dan wawasan tentang perancangan tingkah
laku NPC dan algortima - algortima terkait.

1.5.3. Bagi Universitas Dian Nuswantoro Semarang


1. Membantu mahasiswa lainnya mencari referensi maupun kajian
pustaka yang terkait dengan penelitian ini.
2. Menambah koleksi karya tugas akhir mahasiswa di perpustakaan
Universitas.

1.5.4. Bagi Pembaca


1. Membantu pembaca mengetahui dan memahami cara kerja algortima
Goal-Oriented Action Planning (GOAP).
2. Pembaca juga mengetahui seberapa penting perancangan tingkah laku
dari NPC pada sebuah game.
3. Memberikan edukasi tata cara bermain petak umpet.
4. Membantu melestarikan permainan tradisional petak umpet.
4

BAB II
TINJAUAN PUSTAKA DAN LANDASAN TEORI

2.1 Tinjuan Studi


Berdasarkan Pencarian dari beberapa jurnal baik nasional dan
internasional penggunaan algoritma Goal-Oriented Action Planning(GOAP) dan
pembuatan game digital Petak Umpet masih cukup terbatas, dan hasil dari
beberapa penelitian tentang algoritma Goal-Oriented Action Planning(GOAP)
cukup memuaskan (Studiawan, Hariadi, & Sumpeno, 2018) meskipun masih
belum sepenuhnya seperti harapan.Dari beberapa jurnal yang sudah ada. dapat
diambil beberapa jurnal yang terkait dengan penelitian yaitu sebagai berikut :
Bogdanovych et al (Bogdanovych & Trescak, 2017) meneliti tentang
pembuatan game social simulation yang mana setiap agent pada game dapat
menyelesaikan tugas yang sudah diberikan dengan lebih cepat, dinamis dan
efisien. Game simulasi berdasarkan pada game The Sims, dimana setiap NPC
diharuskan memenuhi goal masing – masing dengan planning terbaik. Algoritma
yang digunakan adalah GOAP. GOAP berfungsi untuk mengendalikan agent –
agent pada game social simulation. karena diperlukan algoritma yang dapat
menjalankan banyak NPC/individual dan bergerak secara dinamis Untuk simulasi
game dengan NPC yang sangat banyak planning merupakan pendekatan terbaik
baik dari segi believability dan penguran design complexity.
Hasil dari penelitian Bogdanovych et al adalah dengan menggunakan dua
pendekatan yaitu pendekatan pertama didasarkan pada game The Sims dengan
hasil yaitu dangat mudah untuk dilakukan implementasi dan menghasilkan
performa yang sangat bagus. Adapaun kekurangan dari pendekatan ini adalah
setiap perilaku agent sudah ditentukan dan akan sangat sulit jika harus dirubah.
Pendekatan lainnya adalah dengan menggunakan planning dengan hasil agent
lebih terpercaya dan perilaku lebih dinamis dan kesalahan sinkronisasi. Adapun
kekurangan dari pendetan planning adalah performa akan lebih berkurang
dibandingkan dengan pendekatan satunya.
5

Studiawan et al (Studiawan et al., 2018) meneliti tentang Artificial


Intelligence dengan membuat game space game yang dinama terdapat tiga agent
yaitu Carirer ship (CS), Variable Pod (VP) dan Energy Relay. Setiap agant
memiliki tugas yang berbeda – beda. Algoritma yang digunakan adalah GOAP
karena diperlukan algortima yang dapat mengendalikan banyak agent sekaligus
dan dapat membuat plan yang bagus untuk membuat game lebih menarik. Hasil
dari penelitian Studiawan et al yaitu GOAP dapat mengurangi komplektitas ketika
mendesain intelligent agent dan juga dapat membuat perilaku agent menjadi lebih
dinamis. Kekurngannya adalah artificial desaigner harus melakukan evaluasi pada
setiap action jika nilai dari parameter setiap action yang terhubung berbeda.
Eric Jacopin (Jacopin, 2014) meniliti tentang anailisis artificial
intelligence planning yang diterapkan pada tiga game first-person shooter yaitu
F.E.A.R., Kill Zone 3 dan Transformer 3: Fall Of Cybertron. Kegunaan analisis
ini nantinya dapat digunakan untuk meningkatkan komponen dan kegunaan dalam
game. Algortima yang digunakan adalah GOAP pada F.E.A.R dan HTM planning
pda Kill Zone 3 dan Transformer 3: Fall Of Cybertron. Hasil penelitian dari Eric
Jacopin adalah .bahwa AIP dapat mengendalikan sepuluh action untuk membuat
plan yang terbanyak adalah 10 action dan yang paling sedikit 1 – 5 action. Untuk
instance GOAP memerlukan 1 atau 2 action sedangkan HTN 2 - action. AIP
waktu dan memori pada game First-Person Shooting (FPS) lebih banyak
termakan bukan karena fighting action akan tetapi lebih pada patrolling action.
Andre (Pamoedji, 2017) Meneliti tentang Augemented Reality (AR) yang
diterapkan untuk menigkatkan pengunjung lawang sewu dengan mengadaptasi
permainan petak umpet, dibutlah permainan AR Petak Umpet yang memiliki latar
tempat lawang sewu. Metode yang digunakan adalah AR. AR digunakan untuk
memunculkan NPC atau Enemy yang nantinya harus dicari oleh player. Hasil dari
penelitian Andre adalah Pengunjung menjadi lebih terhibur dan tertantang dengan
adanya permianan AR Petak Umpet yang mengharuskan para player menjelajahi
keseluruhan tempat Lawang Sewu.
Ananda et al (S.j. Ananda, A. Zefaldi, 2016) melakukan penelitian yang
berkaitan dengan permainan tradisional yaitu petak umpet. Petak Umpet
6

meruapakan salah satu permianan tradisonal yang terlupakan seiring


berkembangnya zaman. Untuk melestarikan Permaian Petak Umpet Ananda et al,
membuat permainan Petak Umpet dengan menggunakan Virtual Reality, dengan
diberinama Petak Umpet VR. Hasil dari penilitian Petak Umpet VR sangat bagus
karena dapat memberikan informasi tentang Permian Petak Umpet pada anak –
anak.
Wibowo (Wibowo, 2015) meneilti tentang salah satu komponen game
yang dapat membuat game lebih menyengkan yaitu tetang perilaku NPC. Wibowo
menggunakan game Petak Umpet sabagai tema game dengan berbasis (Role
Playing Game ) RPG. Metode yang digunakan adalah Rule-Based Management.
Hasil dari peneltian Wibowo didapatkan bahwa game akan lebih menyengkan jika
game mendekati real atau nyata.
Dari penelitian terkait yang sudah dijelaskan sebelumnya dapat dibuat
State of The Art seperti pada Tabel 2.1.
Tabel 2. 1 State Of The Art

NO Peneliti Judul Metode Hasil


1. Eric Jacopin Game AI Goal-Oriented AIP dapat mengendalikan
(2014) Planning Action Planning sepuluh action untuk
Analytics : The (GOAP) dan membuat plan yang
Case of Three HTN terbanyak adalah 10
First-Person action dan yang paling
Shooters sedikit 1 – 5 action.
Untuk instance GOAP
memerlukan 1 atau 2
action sedangkan HTN 2
- action. AIP waktu dan
memori pada game First-
Person Shooting (FPS)
lebih banyak termakan
bukan karena fighting
7

action akan tetapi lebih


pada patrolling action.
2. Hardianto Prilaku Rule-Based Hasil dari peneltian
Wibowo Meralikan Diri Managemend Wibowo didapatkan
(2015) NPC Berbasis bahwa game akan lebih
Game RPG menyengkan jika game
Dengan mendekati real/nyata
Menggunakan
Metode Rule
Based
3. Ananda et al Aplikasi Menggunakan Hasil dari penilitian Petak
(2016) Permainan Petak Virtual Reality Umpet VR sangat bagus
Umpet VR (VR) dan belum karena dapat memberikan
Untuk ada Artificial informasi tentang
Melestarikan Intelligence (AI) Permian Petak Umpet
Permainan pada anak – anak
Tradisional
Indonesia
4. Bogdanovych To Plan or Not to Goal-Oriented Dengan menggunakan
et al (2017) Plan: Lessons Action dua pendekatan pertama
Learned from Planning(GOAP) didasarkan pada game
Building Large The Sims yaitu dangat
Scale Social mudah dilakukan
Simulations implementasi dan
menghasilkan performa
yang sangat bagus.
Kekurangan dari
pendekatan ini adalah
setiap perilaku agent
sudah ditentukan dan
8

akan sangat sulit jika


harus dirubah.
Pendekatan menggunakan
planning memilki hasil
agent lebih terpercaya
dan perilaku lebih
dinamis dan kesalahan
sinkronisasi. Kekurangan
dari pendetan planning
adalah performa lebih
berkurang dibandingkan
dengan pendekatan
satunya.
5. Andre Pemanfaatan Augmented Pengunjung menjadi lebih
Kurniawan P. Teknologi Reality (AR) terhibur dan tertantang
(2017) Augmented dengan adanya permianan
Reality Pada AR Petak Umpet yang
Wisata Sejarah mengharuskan para
Lawang Sewu player menjelajahi
keseluruhan tempat
Lawang Sewu.
6. Studiawan et Tactical Goal-Oriented GOAP dapat mengurangi
al (2018) Planning in Action Planning komplektitas ketika
Space Game (GOAP) mendisain intelligent
using Goal- agent dan juga dapat
Oriented Action membuat perilaku agent
Planning menjadi lebih dinamis.
Kekurngannya adalah
artificial desaigner harus
melakukan evaluasi pada
9

setiap action jika nilai


dari parameter setiap
action yang terhubung
berbeda.

Berdasarkan penelitian-penelitian terkait, penulis berkontribusi dalam


menerapkan algoritma Goal-Oriented Action Planning (GOAP) pada perilaku
NPC untuk membuat perilaku NPC menjadi lebih dinamis pada permianan digital
Petak Umpet. Permainan Petak Umpet memerlukan musuh yang dinamis agar
permainan lebih menyenangkan dan seru.
10

2.2 Landasan Teori

2.2.1 Petak Umpet


Permainan Petak Umpet adalah permainan tradisional yang sangat
digemari oleh anak – anak Indonesia (Yumani, 2014). Manfaat Petak Umpet yaitu
membantu pekembangan anak, melatih patuh terhadap peraturan, melatih
kesabaran, meningkatkan kreatifitas dan sportifitas (S.j. Ananda, A. Zefaldi,
2016). Ada beberapa nama Petak Umpet yang berbeda – beda setiap wilayah,
beberapa contoh yaitu delikan dan jipongan.

Gambar 2. 1 Awal Permainan Petak


Umpet(sumber : permainan-tradisional.com)

Permainan Petak Umpet cukup sederhana, memerlukan sedikitnya 2


pemain. 1 pemain yang berperan sebagai pencari, sedangkan yang lain berperan
sebagai musuh yang bersembunyi ditempat aman. Pencari akan menghitung dan
menunggu sampai hitungan yang sudah ditentukan sebelumnya. Permainan Petak
Umpet berlanjut saat pencari selesai berhitung. Pencari akan mencari musuh yang
bersembunyi dan juga mengawasi markasnya. Jika Pencari menemukan musuh
yang bersembunyi pencari dan musuh akan berlomba menuju ke tempat markas
pencari, jika pencari lebih cepat daripada musuh maka musuh akan tertangkap,
sedangkan jika musuh lebih cepat dari pencari maka musuh akan aman, jika
11

musuh aman maka musuh tidak akan menjadi pencari pada permainan selanjutnya
(Conte & Cindy, 2002).

Gambar 2. 2 Musuh yang bersembunyi di tempat aman


(Sumber : provoke-online.com)

Permainan petak umpet merupakan salah satu budaya Indonesia yang


termasuk permainan tradisional. Peramainan tradisional seperti petak umpet juga
dapat meningkatkan rasa kecintaan terhadap budaya tradisional Indonesia
(Hikmah Prisia Yudiwinata & Handoyo, 2014).

2.2.2 Video Game


Game Merupakan suatu hal yang bisa dimainkan dengan menggunakan
aturan tertentu sehingga bisa didapatkan siapa yang menang dan yang kalah,
tujuan awal dari sebuah game adalah untuk refreshing dan game sendiri dibuat
tidak terlalu serius (Wibowo, 2015). Video game adalah sebuah game elektronik
yang melibatkan interaksi dengan sebuah user interface untuk menghasilkan
sebuah visual bisa jadi dua atau tiga dimensi pada sebuah perangkat yang bisa
menampilkan video, misalnya layar TV atau sebuah layar Komputer (S.j. Ananda,
A. Zefaldi, 2016).
12

Gambar 2. 3 Video Game (Kiri) dan permainan Trandisional (kanan)(sumber: permainan-


tradisional.com)

Video game memiliki beberapa genre utama yaitu action, action-


adventure, adventure, role-playing, simulation, srtategy, dan sports. Adapun genre
lain pada video game yaitu seperti MMO, casual game, dll. Akan tetapi game
bertipe tersebut jarang dibuat kecauli genre video game MMO (Adams, 2019).

Gambar 2. 4 video game simulasi SimCity (sumber : WikiHow.com)

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

2.2.3 Non-Playable Character (NPC).


NPC adalah sebuah Character apa saja yang terdapat pada video game
yang tidak dapat dimainkan oleh player (Generation, 1996). NPC biasanya di
kendalikan oleh computer dimana Artificial Intelligence diperlukan untuk
membuat NPC bergerak sesuai dengan keinginan dan menjalankan tugas yang
sudah diberikan. NPC merupakan salah satu komponen penting pada sebuah video
game (Agustin, 2017), yang memiliki peran penting apakah video game menarik
atau tidak.

Gambar 2. 5 NPC pada video game (sumber: kotaku.com)

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.

2.2.4 Artificial Intelligence (AI)


Articial Intelligence (AI) merupakan sebuah kecerdasan yang ditampilkan
oleh mesin, AI sangat berbeda dengan Intelligence yang ditampilkan oleh manusia
dan juga hewan (Poole, 1998). Penelitian pada computer science disebut dengan
pembelajaran dari intellegent agent. intelligent agent diberi enviroment yang
digunakan untuk memaksimalkan kesempatan keberhasilan untuk mecapai tujuan.
AI pada game merupakan salah satu komponen penting untuk membuat game
menarik. Wibowo (Wibowo, 2015) menyebutkan implementasi dari AI pada
karakter di sebuah game dapat membuat karakter memiliki tingkah laku cerdas.
Karakter bisa memiliki perilaku sesuai dengan yang terjadi di dunia nyata
sehingga gameplay menjadi lebih realistis. Implementasi AI juga dapat membuat
sebuah game semakin seru, menarik, dan juga menyenangkan untuk dimainkan.
Implementasi AI pada sebuah game dapat berupa chasing, pathfinding, movement,
evading, behavior maupun decisions.
Pada jurnalnya yannakakis (Yannakakis & Togelius, 2015) menyebutkan
Artificial Intelligence(AI)pada game terdiri dari 10 komponen terpenting yaitu :
1. NPC Behavior
2. Search dan Planning
3. Player Modelling
4. Games as AI Benchmarks
5. Procedural Content Generation
6. Computational Narrative
7. Belivable Agent
8. AI-assisted game desaign
15

9. General Game AI
10. AI in Commercial Game

Beberapa algoritma yang memeliki pengaruh pada kesepuluh point pada


AI pada game yaitu :
1. Evolutionary Computation
2. Reinforcement Learning
3. Supervised Learning
4. Unsupervised Learning
5. Planning
6. Tree Search

Point penting AI pada game memiliki pengaruh dominant, secondary dan


tidak ada terhadap algoritma diatas. Disajikan pada Table 2.1.

Tabel 2. 2 Point Penting AI pada game

Algoritma NPC S&P PM PCG CN BA AI- GGAI Com. Total


Ass AI (Dominant)
Evolutionary 6(4)
Computation
Reinforcement 3(1)
Learning
Supervised 4(2)
Learning
Unsupervised 3(1)
Learning
Planning 6(5)
Tree Search 6(3)
Total 3(2) 2(2) 3(3) 2(1) 3(1) 5(2) 4(2) 3(1) 3(2)
(Dominant)
16

Dominant (warna hijau), secondary (warna kuning). NPC adalah NPC


Behavior Learning, S&P adalah Search dan Planning, PM adalah Player
Modelling, CN adalah Computational Narrative, BA adalah Belivable Agent, AI-
ASS. adalah AI-Assisted Game Desaign, GGAI adalah General Game AI dan
COM. AI adalah AI in Commercial Games.

2.2.5 Goal-Oriented Action Planning (GOAP)


Goal-Oriented Action Planning (GOAP) adalah algoritma yang
dikemukakan oleh Jeff Orkin (Orkin, 2004). Dimana semakin bebas NPC dalam
menyusun setiap action untuk menyelesaikan goal/tujuan yang diberikan maka
NPC akan semakin dinamis. GOAP mengambil 3 unsur dari Finite State Machine
(FSM) yaitu Idle, MoveTo, dan Perform action. Dimana setiap action memiliki
precondition dan effect yang nantinya berpengaruh pada penyusunan plan, GOAP
memiliki empat istilah penting yaitu Goal, action, plan dan formulate dimana
keempat tahap tersebut saling berhubungan satu sama lainnya.
Menurut Restuadi et al (Studiawan et al., 2018), GOAP menghasilkan
sebuah plan untuk mencapai goal yang sebelumya sudah ditentukan, plan sendiri
terdiri dari rangkaian action. Kondisi yang harus dicapai oleh agent disebut goal,
dan aktivitas yang dapat merubah world condition disebut dengan action, action
memiliki precondition yang harus dipenuhi sebelum bisa digunakan. Planner
berfungsi untuk membuat plan yang terdiri dari rangkain action yang nantinya
digunakan oleh NPC untuk mencapai goal.
17

Gambar 2. 6 Cara Kerja GOAP

Menurut Orkin (Orkin, 2006) GOAP dapat dianalogikan beberapa kasus


simple, salah contoh kasusnya adalah bagimana cara menhilangkan rasa lapar.
Langkah pertama yang harus dibuat adalah goal, dimana goal adalah tidak lapar
dan mentukan world state. World state berisi dengan komponen yang ada
dilingkup permasalahan pada kasus ini adalah phone dan recipe. GOAP
menyusun beberapa plan yang tersedia dan mengambil plan terbaik. Plan terbaik
tergantung pada world condition, seperti contoh pada kasus ini didapatkan dua
plan yaitu :
1. Menggunakan telepon -> pesan makanan -> tidak lapar
2. Membaca resep -> membuat makanan -> tidak lapar

Saat plan telah didapatkan world contion, semisal world condition


memberitahu tidak memiliki uang maka plan kedua adalah solusi terbaik. GOAP
dapat menyederhanakan AI module menurut studiawan (Studiawan et al., 2018).
GOAP tidak membuat graph yang kompleks yang perlu kehati - hatian untuk
planning. GOAP memberikan keuntungan pada pengembang, yaitu dapat
membuat node dari action dengan input dan output yang dapat dievalusi secara
real – time seperti pada Gambar 2.7.
18

Gambar 2. 7 keuntungan GOAP

Jeff Orikin (Orkin, 2006) menyebutkan pada papernya bahwa GOAP


terdiri dari 4 komponen penting yaitu Goal sebagai tujuan dari NPC yang harus
diselesaikan, Action adalah perilaku yang dapat dilakukan oleh NPC, Plan adalah
susunan dari action bertujuan untuk menyelesaikan goal dan yang harus
diselesaikan oleh NPC, dan Formulate adalah proses penyusunan plan yang sesuai
dengan Goal.
Algoritma GOAP dimulai dengan menentukan Goal NPC, langkah
selanjutnya adalah menentukan world condition apa saja yang ada di dalam game,
setelah menentukan World Condition pada game langkah berikutnya yaitu
menentukan action – action apa saja yang bisa digunakan oleh NPC, setelah NPC
berhasil mengetahui action – action yang ada di buatlah sebuah plan untuk
menyelesaikan tugas dari NPC dalam hal ini adalah goal, langkah terakhir adalah
menjalankan plan yang paling optimal dari beberapa plan yang telah di buat. Alur
algoritma GOAP dapat dilihat pada Gambar 2.8.
19

Gambar 2. 8 Alur Algoritma GOAP

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

Gambar 2. 9 Analogi goal pada GOAP

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.

Gambar 2. 10 Contoh action pada GOAP(sumber :


medium.com)
21

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.

Gambar 2. 11 Contoh Plan GOAP(sumber : medium.com)

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 .

Gambar 2. 12 Proses Perancangan


Plan(sumber : medium.com)
22

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.

2.2.6 Metode Pengembangan Game


Metode pengembangan game merupakan salah satu komponen penting
dalam pembuatan dan pengembangan sebuah game. Metode pengembangan game
adalah sebuah cara yang digunakan untuk membantu proses perancangan,
pembuatan program dan juga pengujian untuk memenuhi standard yang sudah
ditetapkan (Martono, 2015). Terdapat beberapa metode pengembanangan game
yang sesuai dengan standard sepeti metode pengembangan multimedia (Hadi,
2003) dan metode pengembangan iterative.
Game dapat dikategorikan sebagai aplikasi multimedia, oleh karena itu
metode pengembangan multimedia dapat diterapkan untuk game. metode
pengembangan multimedia dibagi 6 tahap yaitu concept, desaign, material
collecting, assembly, testing dan distribution. Alur metode pengembangan
multimedia dapat dilihat pada Gambar 2.13.

Gambar 2. 13 Metode Pengembangan Multimedia


23

Tahapan metode pengembangan multimedia dapat dijelaskan sebagai


berikut :
a. Concept adalah tahapan awal pada metode pengembangan multimedia,
tahap ini berisi tujuan dalam pengembangan atau pembuatan,
menentukan siapa yang dapat memainkan game dan manfaat dari
game.
b. Desaign adalah tahap kedua dari metode pengembangan multimedia.
tahap ini berisi alur kode program, cerita, identifikasi perangkat keras,
User Interface dan material yang dibutuhkan game.
c. Material collectiong adalah tahap ketiga. pada tahap ini dilakukan
proses pengumumpulan bahan - bahan yang sudah disebutkan pada
tahap kedua.
d. Assembly adalah tahap keempat. tahap ini berisi pembuatan semua
obyek yang sebelumnya sudah ditentukan pada tahap desin.
e. Testing adalah tahap kelima. pada tahap ini dilakukan pengujian hasil
dari proses sebelumnya yaitu Assembly. pegujian dapat dilakukan
dengan pengujian alfa atau beta.
f. Distribution adalah tahap terakhir. pada tahap ini dilakukan distribusi
game yang sebelumnya sudah dilakukan tahap pengujian. distribusi
dapat menggunaakn sistem standlone yaitu secara online atau dengan
Compact Disc.

Metode pengembangan yang lain adalah dengan metode Iterative, metode


iterative adalah metode yang disusun secara bertahap. pembagian game terdiri dari
dalam beberapa tahap dasar yaitu kelengkapan fitur dengan menggunkan proses
iteratif, yang memiliki tujuan setiap fitur pada game dapat terimplemntsasi dengan
baik. Metode pengembangan iterative dibagi menjai dua tahap yaitu preproduction
dan production. Gamar 2.14 merupakan alur metode pengembangan iterative.
24

Gambar 2. 14 Metode Pengembangan Iterative.

Tahap preproduction ada beberapa tahap yang harus diselesaikan yaitu :


a. Idea : sebuah mimpi atau gagasan yang akan dituangkan kedalam game.
b. Design : tahap pemodelan dari ide yang dapat berupa gambar atau model
matematis.
c. Prototype : tahap pembuatan aplikasi akan tetapi hanya sampai tahap
pengujian. bentuk aplikasi pada tahap ini yaitu sudah dapat dimainkan dan
sudah sesui dengan desain.
d. Testing : pengujian prototype yang sudah dibuat pada tahap sebelumnya.
Tahap selanjutnya adalah production yang terdiri dari beberapa tahap
yaitu :
a. Design : perbaikan desain yang sebelumnya sudah dibuat pada tahap
preproduction pada game prototype yang sudah dilakukan testing. desain
pada tahap ini merupakan penengbangan dari model.
b. Development : game prototype dikembangkan menjadi lebih baik
berdasarkan hasil dari pengujian sembelumnya.
c. Testing : pengujian untuk memperoleh umpan balik yang bertujuan untuk
pengembangan selanjutnya.
25

2.2.7 Kerangka Pemikiran


Kerangka pemikiran merupakan landasan pola pikir dan alur kerja yang
dilakukan dalam proses penelitian. Pada penelitian ini menjelaskan alur kerangka
pemikiran yang mencakup latar belakang, permasalahan, tujuan, implementasi,
hasil dan manfaat. Gambar 2.15 memperlihatkan kerangka pemikiran.

Gambar 2. 15 Kerangka Pemikiran


26

BAB III
METODE PENELITIAN

3.1 Jenis Penelitian


Penelitian ini termasuk jenis penelitian eksperimen murni. Ekperimen
murni memiliki ciri khusus, yaitu memanipulasi variabel, kontrol, penugasan acak
dan perlakuan.

3.2 Instrumen Penelitian


Dalam penelitian ini dibutuhkan beberapa perangkat keras dan perangkat
lunak untuk melakukan proses penelitian. Berikut adalah kebutuhan untuk
Instrumen Penelitian :

3.2.1 Kebutuhan Perangkat Keras


Perangkat keras digunakan sebagai alat untuk menjalankan kebutuhan
perangkat lunak. Berikut minimum kebutuhan perangkat keras:
 Laptop dengan spesifikasi:
 Prosesor : Intel Core i5-6200U
 Sistem Operasi : Microsoft Windows 10 64-bit
 RAM : 8 GB
 VGA : NVIDIA GeForce GT 930mx
 HDD : 1 TB
 Printer sebagai perangkat yang digunakan untuk mencetak dokumen yang
berkaitan dengan proses penelitian dan laporan tugas akhir.
27

3.2.2 Kebutuhan Perangkat Lunak


Perangkat lunak digunakan untuk melakukan proses penelitian, seperti
membuat dokumentasi dan mengimplementasikan metode. Berikut beberapa
kebutuhan perangkat lunak:
 Sistem Operasi
Sistem operasi digunakan sebagai perangkat lunak utama dalam
menjalankan kebutuhan perangkat lunak lainnya. Sistem operasi yang digunakan
adalah Microsoft Windows 10 64-bit.
 Microsoft Office 2013
Microsoft Office 2013 digunakan untuk membuat dokumentasi, membuat
presentasi, menulis laporan akhir.
 Microsoft Visio 2016
Microsoft Visio digunakan untuk membuat diagram, seperti flowchart.
Dan Kerangka pemikiran.
 Unity3D
Unity3D digunakan sebagai game engine dalam penerapan Perilaku NPC
game Petak Umpet untuk penelitian ini.
 MonoDevelop
MonoDevelop digunakan sebagai Integrated Developtment Environtment
untuk membuat kode program dalam bahasa C# pada penelitian ini.

3.3 Rancangan Game


Dalam penelitian ini dibuatlah rancangan Game untuk membantu dalam
mendesain game Petak Umpet. Berikut adalah komponen pada rancangan game :
3.3.1 Deskribsi Umum
Game Petak Umpet mengambil aturan dari permaianan tradisional Petak
Umpet yang ada di Indonesia dimana terdapat dua tipe pelaku yaitu pencari dan
musuh. Dimana player berperan sebagai pencari untuk mencari semua musuh, dan
musuh akan dijalankan oleh NPC dan berjumlah lebih dari satu. Tujuan
memenangkan game Petak Umpet untuk player yaitu menangkap seluruh NPC,
28

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

3.4 Metode Usulan


Pada penilitian ini digunakan metode Goal-Oriented Action Planning
(GOAP) sebagai pemodelan tingkah laku dari NPC. Gambar 3.1 merupakan
diagram alur GOAP pada NPC Petak umpet.

Gambar 3. 1 FlowChart Goap


30

3.5 Identifikasi Goal


Goal pada NPC Petak Umpet adalah NPC dapat menyentuh jipong sebagai
Goal utama, melakukan observasi adalah goal pertama yang harus dilakukan oleh
NPC dan NPC harus aman sebagai goal ketiga. NPC dapat menyentuh jipong jika
action menuju jipong selesai dilakukan. Action menuju jipong memiliki
precondition yang harus dipenuhi. Precondition adalah kondisi dari world
condition yang harus dipenuhi sebelum action bisa dilakukan.world condition
adalah kondisi dunia dari permainan Petak Umpet yang dapat memberikan
informasi pada Planner. World Condition selalu berubah, untuk mengatasi hal ini,
Planner membuat plan yang sesuai dengan world condition dan Goal. Planner
juga harus mengetahui World Condition apakah current value sudah sama dengan
goal dari NPC atau tidak, jika masih belum diperlukan action lainnya yang
memiliki effect yang dapat memnuhi goal. Current value dari world condition dan
goal dari NPC dapat dilihat seperti pada Gambar 3.2.

Gambar 3. 2 Menentukan Goal NPC pada


permainan Petak Umpet

3.6 Mentukan World Condition


World Condition dari Permianan petak umpet terdiri dari Is_Jipong,
Is_observasi, Is_Player_Jauh, Is_aman, Is_Sembunyi, is_lari.
 Is_Player_Jauh :
Is_Player_Jauh Merupakan World Condition dimana NPC mengetahui
apakah player berada jauh dengan lokasi base.
31

 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.

3.7 Menentukan Action


Perilaku NPC pada permianan Petak Umpet terdiri dari lima action seperti
pada Gambar 3.3 yaitu action Sembunyi pada NPC yaitu NPC akan bersembunyi
menuju ke tempat sembunyi yang berada di belakang Object penghalang. Action
Observasi yaitu NPC mengetahui apakah player terlihat atau tidak pada saat
bersembunyi.
Action Pindah Tempat Sembunyi adalah NPC akan mencari tempat
sembunyi yang lebih aman pada saat player terlihat. Action Lari pada NPC
dimulai dari gerakan berjalan lambat sampai berlari. Action Menuju Jipong yaitu
NPC tidak melihat player pada saat bersembunyi atau aman dan berlari menuju
jipong.
32

Gambar 3. 3 Action Pada permaian Petak Umpet

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

Action Precondition Effect


Key Value Key Value
Observasi Is_sembunyi True Is_observasi True
Sembunyi Is_lari True Is_sembunyi True
Lari None - Lari True
Pindah Temat Sembunyi Is_Lari True Is_Sembunyi True
Is_aman False Is_aman True
Menuju Jipong Is_Lari True Is_Jipong True
33

3.7.1 Merancang Plan


Setiap Action pada permainan Petak Umpet memiliki Precondition dan
Effect yang mempengaruhi world condition permainan. Planner pada permaianan
petak umpet menggunakan goal-oreinted untuk merumuskan plan, yaitu dengan
melihat goal sebagai acuan dan menyusun satu per-satu action sampai dengan
state awal hal ini dapat diartikan dari belakang kedepan sehingga menjadi satu
plan.
Perumusan plan menggunakan goal-oriented yaitu merumuskan dari
belakang/goal pertama kali lalu diikuti action – action yang berhubungan sampai
dengan state awal dan juga melihat world condition sebagai kondisi menentukan
action pertama. Hasil dari planner didapatkan dua plan yaitu plan observasi yang
merupakan plan awal permainan, plan menuju jipong adalah plan utama dan plan
tambahan yaitu plan pindah tempat sembunyi yaitu plan untuk NPC agar aman
dari player.

3.7.2 Merancang Plan Observasi


Perancangan Plan Observasi dimulai dari belakang/goal. Dimana goal
pada NPC adalah Is_Observasi harus true, akan tetapi action observasi memiliki
precondition yang yang harus dipenuhi yaitu Is_sembunyi harus true. Dari action
yang ada didapatkan action sembunyi yang memiliki effect sesuai dengan
precondition action observasi.
Action sembunyi memiliki precondition yang harus dipenuhi yaitu Is_lari
harus true dimana kondisi saat ini Is_lari masih false. Dari action yang ada
didapatkan action yang memiliki effect sesuai precondition action sembunyi
adalah action Lari.
Karena action Lari tidak memiliki precondition maka perancangan plan
telah selesai dan didapatkan satu plan yaitu plan Observasi. Alur perancangan
observasi plan dapat dilihat pada Gambar 3.4.
34

Gambar 3. 4 Alur perancangan Plan Observasi

3.7.3 Merancang Plan Menuju Jipong


Perancangan Plan menuju jipong dimulai dari belakang/goal. Dimana goal
pada NPC adalah Is_jipong true, akan tetapi Action Menuju Jipong memiliki
precondition yang yang harus dipenuhi yaitu Is_Lari harus true. Dari action yang
ada didapatkan action Lari yang memiliki effect sesuai dengan precondition
action menuju jipong.
action lari tidak memiliki precondition maka pembuatan plan telah selesai
dan didapatkan satu plan yaitu Plan Menuju Jipong. Alur perancangan Plan
Menuju Jipong dapat dilihat pada Gambar 3.5.
35

Gambar 3. 5 Alur perancangan Best case plan

3.7.4 Merancang Plan Pindah Tempat Sembunyi


Pada usulan penelitian ini, terdapat kasus spesial dimana pada saat action
observasi World Condition harus aman yaitu is_aman true. Sehingga action
observasi ini dapat dikatakan sebagai goal untuk kasus spesial ini. Goal pada NPC
adalah World Condition Is_aman harus true dan juga action observasi harus
dilakukan, akan tetapi action Observasi memiliki precondition yang harus
dipenuhi yaitu is_sembunyi harus true dan juga is_aman harus true, dari action
yang ada didapatkan action Pindah Tempat Sembunyi.
Action pindah tempat sembunyi memiliki precondition yang yang harus
dipenuhi yaitu Is_Lari harus true. Dari action yang ada didapatkan action Lari
yang memiliki effect sesuai dengan precondition action Pindah Tempat Sembunyi.
Action Lari tidak memiliki precondition oleh sebab itu perancangan Plan pindah
tempat sembunyi sudah selesai dibuat. Alur perancangan plan untuk pindah
tempat sembunyi dapat dilihat pada Gambar 3.6.
36

Gambar 3. 6 Alur perancangan plan untuk sembunyi

3.8 Menjalankan Plan


Planner akan memilih plan terbaik untuk NPC dari plan yang ada yaitu
Plan observasi yang merupakan plan awal pada permainan petak umpet. Plan
Menuju Jipong dijalankan pada saat plan observasi sudah dilakukan atau pada saat
NPC ditemukan oleh player. Plan pindah tempat sembunyi dijalankan pada saat
NPC sembunyi melihat player, maka goal dari NPC akan beralih ke goal khusus
yaitu menjadi Is_observasi dan is_aman harus true yang bertujuan untuk mencari
tempat persembunyian yang aman.
37

BAB IV
ANALISIS HASIL PENELITIAN DAN PEMBAHASAN

4.1. Desain dan Perancangan Game Petak Umpet


Desain dan perancangan Game Petak Umpet dapat dibagi menjadi tiga
bagian yaitu target pemakai dan platform, aturan bermain Petak Umpet, dan
gameplay Petak Umpet digital.
4.1.1 Target Pemakai dan Platform
Target pemakai dari game digital Petak Umpet yaitu mulai dari anak –
anak sampai remaja dan game digital Petak Umpet berjalan pada platform android
dengan minimal sistem operasinya adalah android lollipop.
4.1.2 Alur Permainan Petak Umpet
Pada permainan Petak Umpet digital memiliki alur permainan yaitu saat
game petak umpet dijalankan akan muncul menu utama, menu utama memiliki
empat tombol yaitu start game, help, about dan exit. tombol exit akan membuat
game keluar, tombol about berisi tampilan tentang rangkuman petak umpet, menu
help berisi tampilan cara bermainan game petak umpet, sedangkan tombol start
game berisi pilihan level yang bisa dimainkan yang terdiri dari tiga level, jika
sudah memilih satu dari tiga level maka permainan petak umpet akan dimulai,
pada saat permainan berlangsung permainan dapat di pause atau jeda dan akan
muncul menu pause/jeda.
Menu pause atau jeda memiliki empat tombol yaitu tombol kembali, reset,
main menu dan exit. Tombol main menu akan membuat kembali ke menu utama,
tombol exit befugsi sebagai tombol keluar game, tombol reset berfungsi untuk
mengulang permainan dari awal, dan tombol kembali untuk melanjutkan
permainan.
Pada saat permainan selesai akan muncul menu permainan selesai yang
memiliki empat tombol yaitu tombol menuju level berikutnya, main lagi, menu
utama, dan exit, tombol menu utama dan exit memiliki fungsi yang sama seperti
pada menu pause atau jeda, tombol berikutnya memiliki fungsi untuk melanjutkan
38

permainan ke level selanjutnya, sedangkan main lagi berfungsi untuk mengulang


lagi permainan. Flowchart game Petak Umpet dapat dilihat pada Gambar 4.1.

Gambar 4. 1 FlowChart Game Petak Umpet

4.1.3 Aturan Game Petak Umpet


Aturan pada game petak umpet menggunakan aturan yang sudah bersifat
global, yang disebutkan oleh (Conte & Cindy, 2002) yaitu :
1. Pencari akan menghitung mundur dari angka 10 – 0.
2. Musuh akan bersembunyi pada saat player sedang menghitung.
3. Pencari akan mencari musuh yang sedang bersembunyi dan
musuh akan berusaha untuk mencapai jipong / base awal.
4. Jika musuh ditemukan player maka pencari dan musuh akan
berlomba menuju jipong / base awal.
5. Jika pencari dapat menangkap semua musuh maka player
menang.
6. Jika jumlah musuh yang aman lebih besar dari jumlah musuh
ditangkap musuh yang akan menang.
39

4.1.4 Gameplay Petak Umpet Digital


Permainan dimulai dengan player menghitung mundur dari 10 sampai 0
dan selama menghitung mundur musuh akan mencari tempat sembunyi, pada saat
hitungan telah selesai player akan berusaha mencari NPC yang bersembunyi.
Setelah player menemukan NPC maka player dan NPC akan saling berlomba
menuju ke base awal. Jika player sampai terlebih dahulu maka NPC akan
tertangkap, dan jika NPC sampai terlebih dahulu NPC akan aman. Player akan
terus mencari NPC sampai semua NPC sudah tertangkap atau aman. jika semua
NPC tertangkap atau aman maka permainan akan selesai dan dapat dilanjutkan ke
level berikutnya. Alur gameplay Petak Umpet digital dapat dilihat pada Gambar 4.
2.

Gambar 4. 2 Alur Gameplay Petak Umpet Digital


40

4.2. Implementasi Multi Agen GOAP


Pada tahap ini dijelaskan implementasi dari algoritma Goal-Oriented
Action Planning untuk perancangan Non-Playable Character yang dinamis pada
game Petak Umpet.Terdapat empat kelas program utama, yaitu GOAP agent, goap
planner, goap action dan NPC agent, serta terdapat tiga kelas program algoritma
FSM(Finite-State Machine) untuk membantu GOAP yaitu idle, moveTO,
performActionState.
4.2.1. Identifikasi Tujuan Goal NPC Petak Umpet
Identifikasi Tujuan/Goal NPC terdapat pada kelas NPC Agent. Kelas ini
merupakan kelas inheritance dari kelas NPC. Gambar 4.3 menunjukkan kelas
diagram dari NPC Agent.

Gambar 4. 3 Kelas diagram NPC Agent

Kelas NPC agent hanya memiliki satu fungsi yaitu CreateGoalState


dimana fungsi tersebut inheritance dari kelas NPC. Pada kelas NPC agent juga
diketahui variable yaitu HashSet, HashSet merupakan variable seperti list akan
tetapi berbentuk dua dimensi dan memiliki 2 variable yang berisi pasangan kunci
dan nilai yang diterapkan didalam Algoritma 4.1.

Algoritma 4.1 menentukan tujuan/goal NPC


1. public override HashSet<KeyValuePair<string,object>>
2. createGoalState() {
3. HashSet<KeyValuePair<string,object>> goal =
4. new HashSet<KeyValuePair<string,object>> ();
5. If (Enemy_diketahui[0] == true || player_bergerak == true &&
6. player_jauh_jipong == true && enemy_sembunyi == true){
7. goal.Add(new KeyValuePair<string,object>(“is_jipong”,true));
8. }
9. If (enemy_sembunyi == false){
10. goal.Add(new KeyValuePair<string,object>(“is_observasi”,true));
41

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.

4.2.2. Menentukan World Condition Game Petak Umpet


Menentukan World Condition Game Petak Umpet adalah tahap kedua dari
algoritma GOAP. Menentukan World Condition terdapat pada kelas NPC. Kelas
NPC merupakan kelas inheritance dari kelas interface IGOAP dan
UnityEngine.MonoBehaviour (Unity base class). Gambar 4.4 menunjukkan kelas
NPC.

Gambar 4. 4 Kelas diagram NPC

Kelas NPC memiliki enam fungsi yang merupakan implementasi dari


interface IGOAP. Pada kelas NPC didapatkan satu variable baru yaitu
GoapAction yang merupakan kelas dari action yang dibutuhkan nanti. Untuk
tahap kedua World Condition ditentukan yaitu pada fungsi getWorldState pada
42

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.

Algoritma 4.2 menentukan World Condition Game Petak Umpet


1. public HashSet<KeyValuePair<string,object>> getWorldState () {
2. HashSet<KeyValuePair<string,object>> worldData = new
3. HashSet<KeyValuePair<string,object>> ();
4. worldData.Add(new KeyValuePair<string, object>
5. ("is_observasi", NPC_observasi));
6. worldData.Add(new KeyValuePair<string, object>
7. ("is_sembunyi", sembunyi ));
8. worldData.Add(new KeyValuePair<string, object>
9. ("is_jipong", false));
10. worldData.Add(new KeyValuePair<string, object>
11. ("is_player_jauh", jarak_player > 15));
12. worldData.Add(new KeyValuePair<string, object>
13. ("is_lari", false));
14. worldData.Add(new KeyValuePair<string, object>
15. ("is_aman", aman));
16. return worldData;
17. }

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

4.2.3. Menentukan Action


Tahap ketiga dari algoritma GOAP adalah menentukan action yang dapat
dilakukan oleh NPC. Untuk membuat kelas yang lebih terstruktur dibuatlah kelas
parent untuk action – action yang dapat dilakukan oleh NPC yaitu kelas
GoapAction sehingga kelas turunan dari GoapAction tidak perlu membuat fungsi
yang sama lagi. Gambar 4.5 merupakan kelas diagram dari GoapAction.

Gambar 4. 5 Kelas Diagram GoapAction


44

Kelas GoapAction memiliki empat parameter yaitu precondition, effect,


inRange, dan target. Dari kelas GoapAction dapat dibuat kelas child yaitu kelas
sembunyi, observasi, lari, pindah tempat sembunyi, menuju jipong.

Algoritma 4.3 Parameter Action NPC


1.private HashSet<KeyValuePair<string,object>> effects;
2.private HashSet<KeyValuePair<string,object>> preconditions;
3.private bool inRange = false;
4.public Transform target;

Parameter yang diperlukan pada GoapAction adalah precondition yaitu


sebelum action dilakukan action memiliki condition yang harus diselesaikan
terlebih dahulu ,effect yaitu setelah action dilakukan akan merubah World
Condition, inrange digunakan apabila target dari NPC pada saat melakukan
action membutuhkan range dan target yaitu target dari action yang sedang
dilakukan NPC.

Algoritma 4.4 Method GoapAction


1. public GoapAction() {
2. preconditions = new HashSet<KeyValuePair<string, object>> ();
3. effects = new HashSet<KeyValuePair<string, object>> ();
4. }

Method GoapAction digunakan untuk menentukan precondition dan effect


yang diperlukan oleh action – action yang dapat dilakukan oleh NPC. Untuk kelas
child GoapAction terdiri dari precondition yang harus sama dengan World
Condition dan effect adalah dampak yang diberikan dari action yang dilakukan
oleh NPC, method GoapAction merupakan komponen utama yang dijalankan
sebelum method – method lain.

Algoritma 4.5 Method doReset


1. public void doReset() {
2. inRange = false;
3. target = null;
4. reset ();
45

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.

Algoritma 4.6 Method abstract


1. public abstract void reset();
2. public abstract bool isDone();
3. public abstract bool checkProceduralPrecondition(GameObject agent);
4. public abstract bool perform(GameObject agent);
5. public abstract bool requiresInRange ();

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

Algoritma 4.7 Method isInRange dan setInRange


1. public bool isInRange () {
2. return inRange;
3. }
4. public void setInRange(bool inRange) {
5. this.inRange = inRange;
6. }

Method InRange digunakan pada saat action memerlukan jarak antara


target dan NPC.

Algoritma 4.8 Method addPrecondition dan removePrecondition


1. public void addPrecondition(string key, object value) {
2. preconditions.Add (new KeyValuePair<string, object>(key,value));
3. }
46

4. public void removePrecondition(string key) {


5. KeyValuePair<string, object> remove =
6. default(KeyValuePair<string,object>);
7. foreach (KeyValuePair<string, object> kvp in preconditions)
8. {
9. if (kvp.Key.Equals (key)) {
10. remove = kvp;
11. }
12. }
13. if ( !default(KeyValuePair<string,object>).Equals(remove)){
14. preconditions.Remove (remove);
15. }
16. }

Method addPrecondition adalah Method yang digunakan untuk


menambahkan precondition, dan removePrecondition adalah Method yang
digunakan untuk menghilangkan precondition yang tidak diinginkan.

Algoritma 4.9 Method addEffect dan removeEffect


1. public void addEffect(string key, object value) {
2. effects.Add (new KeyValuePair<string, object>(key,value) );
3. }
4. public void removeEffect(string key) {
5. KeyValuePair<string, object> remove =
6. default(KeyValuePair<string,object>);
7. foreach (KeyValuePair<string, object> kvp in effects)
8. {
9. if (kvp.Key.Equals (key)) {
10. remove = kvp;
11. }
12. }
13. if ( !default(KeyValuePair<string,object>).Equals(remove)){
14. effects.Remove (remove);
15. }
16. }

Method addeffect adalah Method yang digunakan untuk menambahkan


effect, dan removeEffect adalah Method yang digunakan untuk menghilangkan
effect yang tidak diinginkan.
47

Algoritma 4.10 Method precondition dan effect


1. public HashSet<KeyValuePair<string, object>> Preconditions {
2. get {
3. return preconditions;
4. }
5. }
6. public HashSet<KeyValuePair<string, object>> Effects {
7. get {
8. return effects;
9. }
10. }

Dari kelas GoapAction dibuat kelas action – action yang diperlukan,


karena action - action merupakan turunan dari kelas GoapActions maka di setiap
kelas action harus ada abstract method dari GoapActions untuk NPC, berikut
merupakan kelas yang ada pada Game Petak Umpet :

1. NPC Menuju Tempat Sembunyi


Action Menuju Tempat sembunyi memiliki addPrecondition yang harus
dipenuhi yaitu is_lari harus true dan addEfect is_sembunyi menjadi true.

Algoritma 4.11 Action NPC Menuju Tempat Sembunyi


1. public bool sembunyi = false;
2. private NavMeshAgent navComponent;
3. public Transform desitination;
4. private WorldCondition wC;
5. NPC npc_parent;
6. private FirstPersonController fs;
7. misc mis;
8. float timerM;
9. public menuju_tempat_sembunyi(){
10. addEffect ("is_sembunyi", true);
11. addPrecondition("is_lari", true);
12. }
13. public override void reset(){
14. target = null;
15. }
16. public override bool isDone(){
17. return sembunyi;
18. }
19. public override bool requiresInRange(){
48

20. return false;


21. }
22. public override bool checkProceduralPrecondition(GameObject enemy){
23. npc_parent = GetComponent<NPC> ();
24. navComponent = GetComponent<NavMeshAgent> ();
25. wC = GetComponent<WorldCondition> ();
26. mis = GameObject.Find ("enemy").GetComponent<misc> ();
27. fs = GameObject.Find
28. ("player").GetComponent<FirstPersonController> ();
29. timerM = 10f;
30. target = mis.tempat_sembunyi [lbr.tampung].transform;
31. wC.simpan = target;
32. return target!=null;
33. }
34. public override bool perform (GameObject enemy){
35. navComponent.SetDestination (target.position);
36. if (Vector3.Distance (transform.position, target.position) <= 3)
37. {
38. if (fs.enabled == true) {
39. if(timerM<0){
40. sembunyi = true;
41. wC.dlek = true;
42. } else {
43. timerM = timerM - 1f * Time.deltaTime;
44. }
45. }
46. }
47. return true;
48. }

2. NPC Observasi
Action Observasi memiliki addPrecondition yang harus dipenuhi yaitu
is_sembunyi harus true dan addEfect is_observasi menjadi true.

Algoritma 4.12 Action NPC Menuju Tempat Sembunyi


1. public Transform[] tamp;
2. private NavMeshAgent agent;
3. private bool observasi = false;
4. public Transform[] desitination;
5. private WorldCondition wC;
6. private bool done1 = false;
7. private float startTime = 0;
8. public float workDuration = 2;
9. NPC npc_parent;
49

10. misc mis;


11. float timerM;
12. public enemy_observasi(){
13. addPrecondition ("is_sembunyi", true);
14. addEffect ("is_observasi", true);
15. }
16. public override void reset(){
17. observasi = false;
18. startTime = 0;
19. target = null;
20. tamp [0] = null;
21. }
22. public override bool isDone(){
23. return observasi;
24. }
25. public override bool requiresInRange(){
26. return false;
27. }
28. public override bool checkProceduralPrecondition(GameObject enemy){
29. wC = GetComponent<WorldCondition>();
30. lbr = GetComponent<Labourer> ();
31. agent = GetComponent<NavMeshAgent>();
32. mis = GameObject.Find ("enemy").GetComponent<misc> ();
33. return true;
34. }
35. public override bool perform(GameObject enemy){
36. for (i = 0; i < mis.area_obervasi.Length; i++) {
37. if (Vector3.Distance (transform.position, mis.area_obervasi
38. [i].position) < 6f) {
39. tamp[0] = mis.area_obervasi[i];
40. if (tamp [0] == null ) {
41. tamp [0] = mis.area_obervasi [i];
42. } else {
43. tamp [1] = mis.area_obervasi [i];
44. }
45. }
46. }
47. if (done1 == false) {
48. agent.SetDestination (tamp [0].position);
49. if (startTime == 0) {
50. startTime = Time.time;
51. }
52. if (Time.time - startTime > workDuration) {
53. observasi = true;
54. }
55. done1 = true;
56. }
50

57. lbr.obsr = true;


58. lbr.sembu = true;
59. return true;
60. }

3. NPC Pindah Tempat Sembunyi


Action Pindah Tempat Sembunyi memiliki dua addPrecondition yang
harus dipenuhi yaitu is_lari harus true dan is_aman harus false, action Pindah
Tempat Sembunyi juga memiliki dua addEfect yaitu is_aman dan is_sembunyi
menjadi true.

Algoritma 4.13 Action NPC Menuju Tempat Sembunyi


1. public bool pindah_temapat_sembunyi = false;
2. private NavMeshAgent navComponent;
3. private float startTime = 0;
4. public float workDuration = 1;
5. NPC npc_parent;
6. misc mis;
7. public pidah_tempat(){
8. addPrecondition ("is_lari", true);
9. addPrecondition ("is_aman", false);
10. addEffect ("is_aman", true);
11. addEffect("is_sembunyi", true);
12. }
13. public override void reset(){
14. pindah_temapat_sembunyi = false;
15. startTime = 0;
16. target = null;
17. }
18. public override bool isDone(){
19. return pindah_temapat_sembunyi;
20. }
21. public override bool requiresInRange(){
22. return false;
23. }
24. public override bool checkProceduralPrecondition (GameObject agent){
25. lbr = GetComponent<Labourer> ();
26. mts = GetComponent<menuju_tempat_sembunyi> ();
27. navComponent = GetComponent<NavMeshAgent> ();
28. mis = GameObject.Find ("enemy").GetComponent<misc> ();
29. tamp = Random.Range (0, mis.tempat_sembunyi.Length-1);
30. if (tamp >= lbr.tampung) {
31. tamp += 1;
51

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.

Algoritma 4.14 Action NPC Menuju Tempat Sembunyi


1. private NavMeshAgent navComponent;
2. public int speed;
3. public bool lari = false;
4. public enemy_lari(){
5. addEffect ("is_lari", true);
6. }
7. public override void reset(){
8. navComponent = GetComponent<NavMeshAgent>();
9. navComponent.speed = 4;
52

10. lari = false;


11. target = null;
12. }
13. public override bool isDone(){
14. return lari;
15. }
16. public override bool requiresInRange(){
17. return false;
18. }
19. public override bool checkProceduralPrecondition(GameObject enemy){
20. navComponent = GetComponent<NavMeshAgent>();
21. return true;
22. }
23. public override bool perform(GameObject enemy){
24. navComponent.speed = speed;
25. lari = true;
26. return true;
27. }

5. NPC Menuju Base Awal


Action Menuju Base Awal atau bisa disebut jipong memiliki
addPrecondition yang harus dipenuhi yaitu is_lari harus true dan memiliki
addEfect is_jipong menjadi true.

Algoritma 4.15 Action NPC Menuju Tempat Sembunyi


1. public bool menang = false;
2. private NavMeshAgent navComponent;
3. public Transform desitination;
4. misc mis;
5. public enemy_menuju_jipong(){
6. addPrecondition ("is_lari", true);
7. addEffect ("is_jipong", true);
8. }
9. public override void reset(){
10. menang = false;
11. target = null;
12. }
13. public override bool isDone(){
14. return menang;
15. }
16. public override bool requiresInRange(){
17. return false;
18. }
53

19. public override bool checkProceduralPrecondition(GameObject enemy){


20. navComponent = GetComponent<NavMeshAgent>();
21. mis = GameObject.Find ("enemy").GetComponent<misc> ();
22. target = mis.tempat_jipong.transform;
23. desitination = target;
24. return true;
25. }
26. public override bool perform(GameObject enemy){
27. navComponent.SetDestination (desitination.position);
28. if (Vector3.Distance (transform.position, target.position)
29. <= 1) {
30. menang = true;
31. }
32. return true;
33. }

4.2.4. Merancang Plan


Tahap keempat dari algoritma GOAP adalah merancang plan untuk NPC.
Untuk merancang plan dibuatlah kelas GoapPlanner, GoapPlanner akan menyusun
plan dari semua kemungkinan plan yang ada berdasarkan goal dan action yang
sudah diketahui sebelumnya. Gambar 4.6 merupakan kelas diagram dari
GoapPlanner.
54

Gambar 4. 6 Kelas diagram GoapPlanner

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

Algoritma 4.16 Method untuk merancang plan


1. public Queue<GoapAction> plan(GameObject agent,
2. HashSet<GoapAction> availableActions,
3. HashSet<KeyValuePair<string,object>> worldState,
4. HashSet<KeyValuePair<string,object>> goal)
5. {
6. foreach (GoapAction a in availableActions) {
7. a.doReset ();
8. }
9. HashSet<GoapAction> usableActions = new HashSet<GoapAction> ();
10. foreach (GoapAction a in availableActions) {
11. if ( a.checkProceduralPrecondition(agent) )
12. usableActions.Add(a);
13. }
14. List<Node> leaves = new List<Node>();
15. Node start = new Node (null, 0, worldState, null);
16. bool success = buildGraph(start, leaves, usableActions, goal);
17. if (!success) {
18. Debug.Log("NO PLAN");
19. return null;
20. }
21. Node cheapest = null;
22. foreach (Node leaf in leaves) {
23. if (cheapest == null)
24. cheapest = leaf;
25. else {
26. if (leaf.runningCost < cheapest.runningCost)
27. cheapest = leaf;
28. }
29. }
30. List<GoapAction> result = new List<GoapAction> ();
31. Node n = cheapest;
32. while (n != null) {
33. if (n.action != null) {
34. result.Insert(0, n.action);
35. }
36. n = n.parent;
37. }
38. Queue<GoapAction> queue = new Queue<GoapAction> ();
39. foreach (GoapAction a in result) {
40. queue.Enqueue(a);
41. }
42. return queue;
43. }
56

Pada method buidlGraph dilakukan proses penyusunan dari action awal


sampai action yang memenuhi syarat untuk menyelesaikan goal yang sebelumnya
sudah dirubah pada method plan.

Algoritma 4.17 Method untuk buildGraph


1. private bool buildGraph (Node parent, List<Node> leaves,
2. HashSet<GoapAction> usableActions,
3. HashSet<KeyValuePair<string, object>> goal){
4. bool foundOne = false;
5. foreach (GoapAction action in usableActions) {
6. if ( inState(action.Preconditions, parent.state) ) {
7. HashSet<KeyValuePair<string,object>> currentState =
8. populateState (parent.state, action.Effects);
9. Node node = new Node(parent,
10. parent.runningCost+action.cost,
11. currentState, action);
12. if (inState(goal, currentState)) {
13. leaves.Add(node);
14. foundOne = true;
15. }
16. else {
17. HashSet<GoapAction> subset =
18. actionSubset(usableActions, action);
19. bool found = buildGraph(node, leaves,subset, goal);
20. if (found)
21. foundOne = true;
22. }
23. }
24. }
25. return foundOne;
26. }

Method populateState berfungsi untuk memindahkan dari satu state ke


state lainnya pada saat penyusunan graph dilakukan oleh method buildGraph dan
juga melakukan pengecekan key pada setiap state.

Algoritma 4.18 Method populateState


1. private HashSet<KeyValuePair<string,object>>
2. populateState(HashSet<KeyValuePair<string,object>> currentState,
3. HashSet<KeyValuePair<string,object>> stateChange) {
4. HashSet<KeyValuePair<string,object>> state = new
57

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.

Algoritma 4.19 Kelas Node


1. private class Node {
2. public Node parent;
3. public float runningCost;
4. public HashSet<KeyValuePair<string,object>> state;
5. public GoapAction action;
6. public Node(Node parent, float runningCost,
7. HashSet<KeyValuePair<string,object>> state, GoapAction action) {
8. this.parent = parent;
9. this.runningCost = runningCost;
10. this.state = state;
58

11. this.action = action;


12. }
13. }

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.

Gambar 4. 7 kelas Diagram 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

GoapAgent berfungsi menjalankan plan yang sudah dibuat sebelumnya dengan


bantuan algoritm FSM untuk idle, MoveTo dan peform state pada plan.

Algoritma 4.20 Parameter yang diperlukan untuk Menjalankan Plan


1. private FSM stateMachine;
2. private FSM.FSMState idleState;
3. private FSM.FSMState moveToState;
4. private FSM.FSMState performActionState;
5. private HashSet<GoapAction> availableActions;
6. private Queue<GoapAction> currentActions;
7. private IGoap dataProvider;
8. private GoapPlanner planner;

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.

Algoritma 4.21 Method Start dan Update


1. void Start () {
2. stateMachine = new FSM ();
3. availableActions = new HashSet<GoapAction> ();
4. currentActions = new Queue<GoapAction> ();
5. planner = new GoapPlanner ();
6. findDataProvider ();
7. createIdleState ();
8. createMoveToState ();
9. createPerformActionState ();
10. stateMachine.pushState (idleState);
11. loadActions ();
12. }
13. void Update () {
14. stateMachine.Update (this.gameObject);
15. }

Method addAction berfungsi untuk memberitahu GoapAgent action apa


saja yang tersedia dan bisa dilakukan oleh NPC.
60

Algoritma 4.22 Method add, get, remove, dan pemeriksa Action


1. public void addAction(GoapAction a) {
2. availableActions.Add (a);
3. }
4. public GoapAction getAction(Type action) {
5. foreach (GoapAction g in availableActions) {
6. if (g.GetType().Equals(action) )
7. return g;
8. }
9. return null;
10. }
11. public void removeAction(GoapAction action) {
12. availableActions.Remove (action);
13. }
14. private bool hasActionPlan() {
15. return currentActions.Count > 0;
16. }

Method createIdleState berfungsi untuk membuat dan memberitahukan


lokasi idle state pada plan.

Algoritma 4.23 Method createIdleState


1. private void createIdleState() {
2. idleState = (fsm, gameObj) => {
3. HashSet<KeyValuePair<string,object>> worldState =
4. dataProvider.getWorldState();
5. HashSet<KeyValuePair<string,object>> goal =
6. dataProvider.createGoalState();
7. Queue<GoapAction> plan = planner.plan(gameObject,
8. availableActions, worldState, goal);
9. if (plan != null) {
10. currentActions = plan;
11. dataProvider.planFound(goal, plan);
12. fsm.popState();
13. fsm.pushState(performActionState);
14. } else {
15. Debug.Log("<color=orange>Failed
16. Plan:</color>"+prettyPrint(goal));
17. dataProvider.planFailed(goal);
18. fsm.popState ();
19. fsm.pushState (idleState);
20. }
21. };
22. }
61

Method createMoveToState digunakan untuk memindahkan state dari satu


state ke state lainnya, dimana state akan bergerak dari state awal menuju ke state
terakhir.

Algoritma 4.24 Method createIdleState


1. private void createMoveToState() {
2. moveToState = (fsm, gameObj) => {
3. GoapAction action = currentActions.Peek();
4. if (action.requiresInRange() && action.target == null) {
5. Debug.Log("<color=red>Fatal error:</color> Action
6. requires a target but has none. Planning failed. You did not
7. assign the target in your Action.checkProceduralPrecondition()");
8. fsm.popState();
9. fsm.popState();
10. fsm.pushState(idleState);
11. return;
12. }
13. if ( dataProvider.moveAgent(action) ) {
14. fsm.popState();
15. }
16. };
17. }

Method createPerformActionState berfungsi untuk menjalankan setiap


state yang terdapat pada plan, setiap state pada plan dilakukan satu kali.

Algoritma 4.25 Method createPerformActionState


1. private void createPerformActionState() {
2. performActionState = (fsm, gameObj) => {
3. if (!hasActionPlan()) {
4. Debug.Log("<color=red>Done actions</color>");
5. fsm.popState();
6. fsm.pushState(idleState);
7. dataProvider.actionsFinished();
8. return;
9. }
10. GoapAction action = currentActions.Peek();
11. if ( action.isDone() ) {
12. currentActions.Dequeue();
13. }
62

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

4.3. Skenario Percobaan


Pada tahap ini dilakukan skenario percobaan pada agent menggunakan
Goal-Oriented Action Planning untuk perancangan NPC character yang dinamis
pada game Petak Umpet. Pecobaan tersebut dibagi menjadi tiga pengujian yaitu
penempatan, keberhasilan, dan agretivitas. Tujuan dari percobaan tersebut adalah
untuk mengetahui apakah NPC sudah dinamis atau belum. Terdapat tiga kategori
yang digunakan untuk percobaan yaitu agresivitas, keberhasilan dan penempatan.
Pengukuran agresivitas adalah untuk mengukur seberapa bagus perilaku
NPC pada saat ditemukan oleh player. Pengukuran pengujian agresivitas yaitu
dengan banyaknya NPC aman pada saat ditemukan dibagi dengan jumlah seluruh
NPC yang ditemukan. Hasil dari percobaan akan dibandingkan antara GOAP dan
GOAP dengan penempatan maksimal dua NPC per tempat sembunyi pada setiap
level, dimana semakin tinggi rata – rata agresivitas maka semakin bagus.
Pengujian keberhasilan adalah untuk mengukur keberhasilan NPC untuk
aman atau menyentuh base awal, baik saat ditemukan oleh player atau tidak.
Pengukuran pengujian keberhasilan adalah jumlah NPC aman dibagi dengan
jumlah NPC yang ada. Hasil dari percobaan akan dibandingkan antara GOAP dan
GOAP dengan penempatan maksimal dua NPC per tempat sembunyi pada setiap
level, dimana yang memiliki rata - rata keberhasilan tertinggi merupakan
percobaan yang terbaik.
Pengujian penempatan adalah untuk mengukur seberapa banyak NPC yang
berada pada satu tempat sembunyi. Pengukuran pengujian penempatan yaitu
dengan memilih tempat sembunyi yang paling banyak ditempati oleh NPC dibagi
dengan jumlah NPC yang ada. Hasil dari percobaan akan dibandingkan antara
GOAP dan GOAP dengan penempatan maksimal dua NPC per tempat sembunyi
pada setiap level, dimana semakin rendah rata – rata percobaan penempatan maka
semakin bagus.
64

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.

4.3.1. Perangkat untuk Percobaan


Percobaan dilakukan dengan menggunakan perangkat laptop dan aplikasi
unity engine secara langsung, yang memiliki spesifikasi sebagai berikut :
 Prosesor : Intel Core i5-6200U
 Sistem Operasi : Microsoft Windows 10 64-bit
 RAM : 8 GB
 VGA : NVIDIA GeForce GT 930mx
 HDD : 1 TB

4.3.2. Hasil Percobaan


Percobaan pertama yaitu percobaan agresivitas dari NPC, dimana dihitung
dari banyaknya musuh yang lolos pada saat musuh ditemukan, dan didapatkan
hasil percobaan pada Tabel 4.1.
65

Tabel 4. 1 hasil percobaan agresivitas 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

Dari Tabel 4.1 pada kolom no percobaan pertama di level 1, didapatkan


hasil 0.33(1/3). Hasil 1/3 artinya jumlah musuh yang lolos pada saat ditemukan
yaitu 1 NPC dibagi dengan jumlah musuh yang ditemukan sebanyak 3 NPC. Dari
hasil percobaan agresivitas didaptkan rata – rata tertinggi pada GOAP yaitu pada
level 1 dan yang terendah pada level 2, dan pada percobaan GOAP 2 penempatan
rata – rata tertinggi didapatkan pada level 2 sedangkan terendah terdapat pada
level 1.
Percobaan kedua yaitu keberhasilan NPC untuk aman, dimana jika NPC
dapat menyentuh base awal / jipong maka NPC akan aman baik NPC ditemukan
oleh player atau tidak, dimana jumlah NPC pada level satu adalah 4 NPC, level 2
66

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

Dari Tabel 4.2 pada kolom no percobaan pertama di level 1, didapatkan


hasil 0.5 yang dihitung dari jumlah NPC yang aman sebanyak 2 NPC dibagi
dengan jumlah total NPC pada level 1 yaitu 4 NPC. Dari percobaan keberhasilan
didapatkan rata – rata terendah pada percobaan GOAP yaitu pada level 2 dan
tertinggi pada level 1, sedangkan pada percobaan GOAP 2 penempatan rata – rata
tertinggi terdapat pada level 1 dan terendah pada level 2.
Percobaan ketiga yaitu penempatan NPC pada saat bersembunyi, dimana
penempatan NPC dihitung dengan cara jumlah NPC yang berada pada satu
tempat, untuk kasus unik seperti terdapat dua NPC pada dua tempat
67

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 Tabel 4.3 pada kolom no percobaan pertama di level 1, didapatkan


hasil 0.25 yang dihitung jumlah NPC yang berada pada satu tempat yang
berjumlah 1 NPC dibagi dengan jumlah total NPC pada level 1 yaitu 4 NPC. Dari
percobaan penempatan didapatkan rata – rata tertinggi pada percobaan GOAP
yaitu pada level 1 dan terendah yaitu pada level 3, sedangkan pada percobaan
GOAP 2 penempatan rata – rata tertinggi terdapat pada level 1 dan terendah pada
level 2 dan level tiga yang memiliki rata – rata sama.
68

4.4. Hasil Perbandingan


Dari hasil percobaan GOAP dan penempatan maksimal dua NPC pada
satu tempat yang sudah di rata – rata dan dijadikan satu, didapatkan hasil seperti
pada Table 4.4.

Tabel 4. 4 Hasil percobaan GOAP dan GOAP 2 maksimal

level 1 level 2 level 3


Aspek GOAP 2 GOAP 2 GOAP 2
GOAP GOAP GOAP
Maksimal Maksimal Maksimal
Agresivitas 0.254 0.308 0.188 0.341 0.215 0.34
Keberhasilan 0.425 0.588 0.29 0.4 0.392 0.558
Penempatan 0.375 0.325 0.3 0. 25 0.267 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

Gambar 4. 8 Grafik hasil percobaan

4.5. Hasil Tampilan Game Petak Umpet Digital


Permainan dimulai dengan hitung mundur dari 10 – 0, pada saat hitung
mundur NPC akan mencari tempat persembunyian, hitung mundur pada game
petak umpet dapat dilihat pada Gambar 4.9.

Gambar 4. 9 Player Hitung Mundur dari 10-0

Pada saat NPC sembunyi, NPC akan melakukan observasi untuk


mengetahui apakah player terlihat atau tidak. Jika NPC melihat player maka NPC
70

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.

Gambar 4. 10 NPC bersembunyi dan ditemukan.

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.

Gambar 4. 11 Player dan NPC berlomba menuju ke base awal/jipong

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.

Gambar 4. 12 Menu permainan selesai dan hasil dari permainan


72

BAB V
KESIMPULAN DAN SARAN

5.1. Kesimpulan

Dari penelitian yang telah dilakukan ini terdapat beberapa kesimpulan,


yaitu:
 Berhasilnya permainan Petak Umpet tradisional dibuat menjadi game
mobile android yang bernama Petak Umpet yang menggunakan algortima
Goal-Oriented Action Plannning (GOAP) sebagai perancang tingkah laku
dari NPC.
 Dengan GOAP NPC menjadi lebih dinamis perilaku NPC yang susah
ditebak oleh pemain.
 Semua pengujian dari penempatan maksimal dua NPC pada satu tempat
mendapatkan hasil yang lebih baik daripada GOAP murni, yaitu pada
dengan nilai rata – rata keseluruhan setiap level agresivitas sebesar 0.330,
keberhasilan sebesar 0.515, dan penempatan sebesar 0.275.
 Penempatan NPC mempengaruhi keberhasilan apakah NPC aman atau
tidak saat sembunyi. Banyaknya NPC mempengaruhi kemungkinan
keberhasilan dari NPC untuk lebih aman saat bersembunyi.

5.2. Saran

Dari penelitian yang telah dilakukan didaptkan bahwa hasil penelitian


algoritma GOAP dengan menggunkan maksimal dua penempatan NPC pada satu
tempat NPC lebih baik di semau aspek percobaan dibandingkan dengan
penempatan NPC yang tidak sibatasi. Pada penelitian berikutnya, algoritma
GOAP dapat digunakan selain pada perancangan tingkah laku NPC, dan juga
untuk melihat seberapa bagus algortima GOAP dapat digunakan algoritma
perancangan NPC yang lain seperti FSM dan behavior tree untuk melihat
algoritma mana yang lebih baik untuk diterapkan dalam perancangan tingkah laku
NPC Petak Umpet.
73

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

Eengine Game Maker. JURNAL SISTEM KOMPUTER, 5(1), 23–30.


Nicolau, M., Perez-Liebana, D., Oneill, M., & Brabazon, A. (2017). Evolutionary
Behavior Tree Approaches for Navigating Platform Games. IEEE
Transactions on Computational Intelligence and AI in Games, 9(3), 227–
238. https://doi.org/10.1109/TCIAIG.2016.2543661
Orkin, J. (2004). Symbolic representation of game world state: Toward real-time
planning in games. Aaai, 5, 26–30. Retrieved from
http://www.aaai.org/Papers/Workshops/2004/WS-04-04/WS04-04-006.pdf
Orkin, J. (2006). Three States and a Plan: The A.I. of F.E.A.R. Media, 1–18.
Pamoedji, A. K. (2017). Pemanfaatan Teknologi Augmented Reality Pada Wisata
Sejarah Lawang Sewu. Unika Semarang.
Poole, M. & G. (1998). Computational Intelligence and Knowledge, (Ci), 1–22.
Retrieved from http://people.cs.ubc.ca/~poole/ci/ch1.pdf
S.j. Ananda, A. Zefaldi, A. D. F. (2016). Aplikasi Permainan Petak Umpet VR
Untuk Melestarikan Permainan Tradisional Indonesia Petak Umpet VR
Game Application to Preserve Traditional Game in Indonesia Prodi Studi D3
Teknik Informatika Fakultas Ilmu Terapan Universitas Telkom Bandung.
Universitas Telkom.
Studiawan, R., Hariadi, M., & Sumpeno, S. (2018). Tactical Planning in Space
Game using Goal-Oriented Action Planning, 2(1), 5–11.
Wibowo, H. (2015). Prilaku Melarikan Diri NPC Berbasis Game RPG Dengan
Menggunakan Metode Rule-Based, 978–979.
Yannakakis, G. N., & Togelius, J. (2015). A Panorama of Artificial and
Computational Intelligence in Games. IEEE Transactions on Computational
Intelligence and AI in Games, 7(4), 317–335.
https://doi.org/10.1109/TCIAIG.2014.2339221
Yumani, A. I. (2014). Penigkatan Keterampilan Motorik Kasar Anak Kelompok B
Melalui Permainan Petak Umpet di TK Dharma Indria 1 Kecamatan
Patranng Kabupaten Jember Tahun Ajaran 2015/2016. Digital Repository
Universitas Jember. https://doi.org/10.1242/jcs.150862

Anda mungkin juga menyukai