1.1 Kecerdasan Buatan VS
Game AI
Artificial Intelligence dalam Game
Salah satu unsur yang berperan penting dalam sebuah game adalah
kecerdasan buatan. Dengan kecerdasan buatan, elemen-elemen dalam game dapat
berperilaku sealami mungkin layaknya manusia. Game AI adalah aplikasi untuk
memodelkan karakter yang terlibat dalam permainan baik sebagai lawan, ataupun
karakter pendukung yang merupakan bagian dari permainan tetapi tidak ikut
bermain (NPC = Non Playable Character). Peranan kecerdasan buatan dalam hal
interaksi pemain dengan permainan adalah pada penggunaan interaksi yang
bersifat alami yaitu yang biasa digunakan menusia untuk berinteraksi dengan
sesama manusia.
Contoh media interaksi :
Penglihatan (vision)
Suara (voice), ucapan (speech)
Gerakan anggota badan ( gesture)
Untuk pembentukan Artificial Intelligence pada game ternyata
digunakan pula algoritma, yaitu jenis pohon n-ary untuk suatu struktur.
Implementasi pohon (tree) ini biasa disebut game tree. Berdasarkan game tree
inilah sebuah game disusun algoritma kecerdasan buatannya. Artificial
intellegence yang disematkan dalam sebuah game yang membentuk analisis game
tree biasanya merepresentasikan kondisi atau posisi permainan dari game sebagai
suatu node, dan merepresentasikan langkah yang mungkin dilakukan sebagai sisi
berarah yang menghubungkan node kondisi tersebut ke anak (child) sebagaimana
representasi suatu pohon (tree).
Namun, biasanya representasi langsung tersebut mempunyai
kelemahan, yaitu representasi data pohon akan menjadi sangat lebar dan banyak.
Mungkin bagi sebuah mesin komputer mampu melakukan kalkulasi sebanyak apapun
masalah, namun game tree yang lebar dan besar memberikan beberapa masalah,
antara lain konsumsi proses memori, kapasitas penyimpanan yang cukup besar dan
kinerja yang kurang pada konsol game berspesifikasi rendah. Karena itu dibentuklah
beberapa algoritma dan penyederhanaan bagi sebuah game tree.
1.2 Mode Game AI
Pathfinding
Metode pathfinding paling mudah ditemui pada game-game bertipe
strategi dimana kita menunjuk satu tokoh untuk digerakkan ke lokasi tertentu
dengan mengklik lokasi yang hendak dituju. Si tokoh akan segera bergerak ke
arah yang ditentukan, dan secara “cerdas” dapat menemukan jalur terpendek
ataupun menghindari dari rintangan-rintangan yang ada. Salah satu algoritma
pathfindin yang cukup umum dan yang paling banyak digunakan utnuk mencari jarak
terpendek secara efisien adalah algoritma A* (baca: A star). Secara umum,
algoritma A* adalah mendefinisikan area pencarian menjadi sekumpulan node-node
(tiles). Titik awal dan titik akhir ditentukan terlebih dulu untuk mulai
penelusuran pada tiap-tiap node yang memungkinkan untuk ditelusuri. Dari sini,
akan diperoleh skor yang menunjukkan besarnya biaya untuk menempuh jalur yang
ditemukan, ditambah dengan nilai heuristik yang merupakan nilai biaya estimasi
dari node yang ada menuju tujuan akhir. Iterasi akan dilakukan hingga akhirnya
mencapai target yang dituju.
Jaringan saraf tiruan (neural network)
Neural network cukup baik ketika diterapkan pada kasus-kasus yang
sifatnya non-linier atau mengambil keputusan yang tidak dapat dilakukan dengan
metode tradisional. Penerapannya seringkali pada game-game yang memerlukan
kemampuan adaptif atau belajar dari pengalaman. Sebagai contoh, jika suatau
ketika terjadi pertempuran antar player dengan unit komputer, dan unit komputer
mengalami kekalahan, maka pada kesempatan lain yang serupa, komputer akan
memilih untuk tidak bertempur. Semakin banyak pengalaman yang dialami komputer,
maka komputer menjadi semakin cerdas. Prinsip dasar dari jaringan saraf tiruan
ini adalah perbaikan bobot secara terus menerus agar output yang dihasilkan
menjadi semakin akurat (semakin cerdas).
Algoritma Genetis (genetic algorithm)
Algoritma genetis sedikit banyak dipengaruhi oleh teori evolusi
yang dicetuskan Darwin, yaitu bahwa spesies akan terus menerus beradaptasi
dengan lingkungannya dan ciri khasnya yang terletak pada kromosom, akan
diturunkan pada generasi berikutnya. Generasi turunan ini menerima gabungan
kromosom dari kedua induknya, yang disebut dengan crossover. Pada algoritma
genetis, akan diterapkan langkah ranking fitness untuk melakukan seleksi
terhadap langkah ranking fitness untuk melakukan seleksi terhadap generasi
turunan yang terbaik. Pada game berbasis algorima genetis, turunan terbaik
inilah yang dilibatkan ke dalam game, dimana akan digunakan oleh komputer untuk
merespons perubahan-perubahan tingkah laku user.
sebenarnya bukan hanya 3
teknik kecerdasan buatan di atas yang dapat digunakan dalam sebuah game
berbasis kecerdasan buatan masih banyak lagi teknik yang lain.
1.3 Algoritma,
Struktur Data dan Representasi
Beberapa algoritma yang digunakan dalam game, mungkin salah
satunya adalah algoritma yang digunakan dalam game pacman tersebut.
1. Decision tree
Decision Tree adalah salah satu metode klasifikasi yang paling
populer karena mudah untuk diinterpretasi oleh manusia. Decision tree adalah
model prediksi menggunakan struktur pohon atau struktur berhirarki. Konsep dari
decision tree adalah mengubah data menjadi pohon keputusan dan aturan-aturan
keputusan. Manfaat utama dari penggunaan decision tree adalah kemampuannya
untuk mem-break down proses pengambilan keputusan yang kompleks menjadi lebih
simpel sehingga pengambil keputusan akan lebih menginterpretasikan solusi dari
permasalahan.
Kelebihan
Daerah pengambilan keputusan yang sbelumnya kompleks dan sangat
global, dapat diubah menjadi lebih simpel dan spesifik.
Eliminasi perhitungan-perhitungan yang tidak diperlukan, karena
ketika menggunakan metode decision tree maka sample diuji hanya berdasarkan
criteria atau kelas tertentu.
Fleksibel untuk memilih features dari internal nodes yang berbeda,
feature yang terpilih akan membedakan suatu criteria dibandingkan criteria yang
lain dalam node yang sama. Kefleksibelan metode decision tree ini meningkatkan
kualitas keputusan yang dihasilkan jika dibandingkan ketika menggunakan metode
penghitungan satu tahap yang lebih konvensional.
Dalam analisis multivariat, dengan kriteria dan kelas yang
jumlahnya sangat banyak, seorang penguji biasanya perlu untuk mengestimasikan
baik itu distribusi dimensi tinggi ataupun parameter tertentu dari distribusi
kelas tersebut. Metode decision tree dapat menghindari munculnya permasalahan
ini dengan menggunakan criteria yang jumlahnya lebih sedikit pada setiap node
internal tanpa banyak mengurangi kualitas keputusan yang dihasilkan.
Kekurangan
Terjadi overlap terutama ketika kelas-kelas dan criteria yang
digunakan jumlahnya sangat banyak. Hal tersebut juga dapat menyebabkan
meningkatnya waktu pengambilan keputusan dan jumlah memory yang diperlukan.
Pengakumulasian jumlah error dari setiap level dalam sebuah pohon
keputusan yang besar.
Kesulitan dalam mendesain decision tree yang optimal. Hasil
kualitas keputusan yang didapatkan dari metode decision tree sangat tergantung
pada bagaimana pohon tersebut didesain.
2. Finite State Machines (FSM)
FSM adalah sebuah metodologi perancangan sistem kontrol yang
menggambarkan tingkah laku atau prinsip kerja sistem dengan menggunakan tiga
hal berikut: State (Keadaan), Event (kejadian) dan Action (aksi). Pada satu
saat dalam periode waktu yang cukup signifikan, sistem akan berada pada salah
satu state yang aktif. Sistem dapat beralih atau bertransisi menuju state lain
jika mendapatkan masukan atau event tertentu, baik yang berasal dari perangkat
luar atau komponen dalam sistemnya itu sendiri (misal interupsi timer).
Transisi keadaan ini umumnya juga disertai oleh aksi yang dilakukan oleh sistem
ketika menanggapi masukan yang terjadi. Aksi yang dilakukan tersebut dapat
berupa aksi yang sederhana atau melibatkan rangkaian proses yang relative
kompleks. Berdasarkan sifatnya, metode FSM ini sangat cocok digunakan sebagai
basis perancangan perangkat lunak pengendalian yang bersifat reaktif dan real
time. Salah satu keuntungan nyata penggunaan FSM adalah kemampuannya dalam
mendekomposisi aplikasi yang relative besar dengan hanya menggunakan sejumlah
kecil item state. Selain untuk bidang kontrol, Penggunaan metode ini pada
kenyataannya juga umum digunakan sebagai basis untuk perancangan
protokol-protokol komunikasi, perancangan perangkat lunak game, aplikasi WEB
dan sebagainya.
Dalam bahasa pemrograman prosedural seperti bahasa C, FSM ini
umumnya direalisasikan dengan menggunakan statemen kontrol switch case atau/dan
if..then. Dengan menggunakan statemen-statemen kontrol ini, aliran program
secara praktis akan mudah dipahami dan dilacak jika terjadi kesalahan logika.
Finite State Machine di dunia AI Game Programming, merupakan salah
satu teknik yang paling sering digunakan.
Kelebihan
Implementasinya mudah dan cepat
Memudahkan proses debugging. Karena telah dipecah menjadi kepingan
yang lebih kecil, proses debugging kalau terjadi behavoiur yang tidak
semestinya, menjadi lebih mudah
Proses komputasi yg minimal, karena sejatinya FSM hanyalah
conditional statement yang dikemas dalam bentuk yang lebih elegan.
Fleksibel, dapat dikombinasikan dengan teknik AI lain misalnya
fuzzy logic dan neural network.
Kekurangan
Behaviour dari agen mudah diprediksi, karena tidak ada searching
dan atau learning di dalam agen tersebut
Karena mudah diimplementasi, kadang programmer langsung tembak di
eksekusi tanpa melakukan desain FSM terlbih dahulu. Biasanya akan terjadi FSM
yang terfragmentasi
Timbul apa yang dinamakan dengan State Oscillation yaitu ketika
batasan antara dua buah state terlalu tipis
3. Sistem berbasis aturan (Rule Based System)
adalah suatu program komputer yang memproses informasi yang
terdapat di dalam working memory dengan sekumpulan aturan yang terdapat di
dalam basis pengetahuan menggunakan mesin inferensi untuk menghasilkan
informasi baru.
Sebuah Rule-Based System dapat dibentuk dengan menggunakan sebuah
assertions set, yang secara kolektif membentuk working memory, dan sebuah rule
set yang menentukan aksi pada assertions set. RBS secara relatif adalah
model sederhana yang bisa diadaptasi ke banyak masalah. Namun, jika ada terlalu
banyak peraturan, pemeliharaan sistem akan rumit dan terdapat banyak failure
dalam kerjanya.
Kelebihan
Availability-bertambah, intelligent tutor, intelligent dB,
danger-reduced, performance
multiple expertise, reability-bertambah, explanation steady,
unemotional and complete response
Kekurangan
Jika terlalu banyak aturan, sistem menjadi sulit dalam me-maintain
performance dan Keterbatasan dalam memutuskan teknik yang digunakan untuk suatu
masalah.
4. Algoritma A*
Menyelesaikan masalah yang menggunakan graf untuk perluasan ruang
statusnya. Dengan menerapkan suatu heuristik, algoritma ini membuang
langkah-langkah yang tidak perlu dengan pertimbangan bahwa langkah-langkah yang
dibuang sudah pasti merupakan langkah yang tidak akan mencapai solusi yang
diinginkan. Algoritma A* membangkitkan simpul yang paling mendekati solusi.
Simpul ini kemudian disimpan suksesornya ke dalam list sesuai dengan urutan
yang paling mendekati solusi terbaik. Kemudian, simpul pertama pada list
diambil, dibangkitkan suksesornya dan kemudian suksesor ini disimpan ke dalam
list sesuai dengan urutan yang terbaik untuk solusi.
Algoritma ini akan mengunjungi secara mendalam (mirip DFS) selama
simpul tersebut merupakan simpul yang terbaik. Jika simpul yang sedang
dikunjungi ternyata tidak mengarah kepada solusi yang diinginkan, maka akan
melakukan runut balik ke arah simpul akar untuk mencari simpul anak lainnya
yang lebih menjanjikan dari pada simpul yang terakhir dikunjungi. Bila tidak
ada juga, maka akan terus mengulang mencari ke arah simpul akar sampai
ditemukan simpul yang lebih baik untuk dibangkitkan suksesornya. Strategi ini
berkebalikan dengan algoritma DFS yang mencari sampai kedalaman yang terdalam
sampai tidak ada lagi suksesor yang bisa dibangkitkan sebelum melakukan runut
balik, dan BFS yang tidak akan melakukan pencarian secara mendalam sebelum
pencarian secara melebar selesai. A* baru berhenti ketika mendapatkan solusi
yang dianggap solusi terbaik.
Algoritma A* menggabungkan jarak estimasi/heuristik [h(n)] dan jarak
sesungguhnya/cost [g(n)] dalam membantu penyelesaian persoalan. Heuristik
adalah nilai yang memberi harga pada tiap simpul yang memandu A* mendapatkan
solusi yang diinginkan. Dengan heuristik, maka A* pasti akan mendapatkan solusi
(jika memang ada solusinya). Dengan kata lain, heuristik adalah fungsi optimasi
yang menjadikan algoritma A* lebih baik dari pada algoritma lainnya. Namun
heuristik masih merupakan estimasi/perkiraan biasa saja. Sama sekali tidak ada
rumus khususnya. Artinya, setiap kasus memiliki fungsi heuristik yang
berbeda-beda.
5. Algoritma Dijkstra
Algoritma Dijkstra adalah sebuah algoritma rakus
(greedy algorithm) yang dipakai dalam memecahkan permasalahan jarak terpendek
(shortest path problem) untuk sebuah graf berarah (directed graph) dengan
bobot-bobot sisi (edge weights) yang bernilai tak negatif.
Misalnya, bila vertices dari sebuah graf melambangkan kota-kota
dan bobot sisi (edge weights) melambangkan jarak antara kota-kota tersebut,
maka algoritma Dijkstra dapat digunakan untuk menemukan jarak terpendek antara
dua kota. Input algoritma ini adalah sebuah graf berarah yang berbobot
(weighted directed graph)
Tujuan Algoritma Dijkstra yaitu untuk menemukan jalur terpendek
berdasarkan bobot terkecil dari satu titik ke titik lainnya.
Kelemahan algoritma ini adalah semakin banyak titik akan semakin
memakan waktu proses.
Jumlah titik menentukan tingkat efektifitas dari algoritma
djikstra.
Urutan Logika Algoritma Dijkstra
-Beri nilai bobot (jarak) untuk setiap titik ke titik lainnya,
lalu set nilai 0 pada node awal dan
nilai tak hingga terhadap node lain (yang belum terisi).
-Set semua node “Belum terjamah” dan set node
awal sebagai “Node keberangkatan”.
-Dari node keberangkatan, pertimbangkan node tetangga yang belum
terjamah dan hitung
jaraknya dari titik keberangkatan.
-Setelah selesai mempertimbangkan setiap jarak
terhadap node tetangga, tandai node
yang telah terjamah sebagai “Node terjamah”. Node terjamah tidak akan pernah di
cek
kembali, jarak yang disimpan adalah jarak terakhir dan yang paling minimal
bobotnya.
-Set “Node belum terjamah” dengan jarak terkecil
(dari node keberangkatan) sebagai
“Node Keberangkatan” selanjutnya dan lanjutkan dengan kembali ke step 3.
Dari beberapa algoritma AI diatas mungkin kita sekarang dapat
mengerti bagaimana AI dalam game bekerja, atau malah kita bingung dan tidak
mengerti. Ada banyak proses rumit yang jika dikerjakan terlihat akan sangat
memakan waktu, sedangkan saat kita bermain game, semuanya terjadi begitu cepat
dalam hitungan detik. Tetapi tu semua mungkin karena adanya komputer sebagai
alat pemprosesan yang dapat mengerjakannya dalam hitungan detik.
1.4 Kompleksitas
Kesalahan
Dalam konteks kecerdasan buatan dalam permainan video, kecurangan
mengacu pada programmer agen memberikan akses ke informasi yang tersedia kepada
pemain. Dalam sebuah contoh sederhana, jika agen ingin tahu apakah pemain dekatnya
mereka dapat menjadi diberikan kompleks, manusia seperti sensor (melihat,
mendengar, dll), atau mereka bisa menipu dengan hanya meminta mesin permainan
untuk posisi pemain. Penggunaan kecurangan dalam AI menunjukkan keterbatasan
"kecerdasan" dicapai artifisial, secara umum, dalam permainan di mana
kreativitas strategis sangat penting, manusia dengan mudah bisa mengalahkan AI
setelah minimal trial and error jika bukan untuk keuntungan ini. Kecurangan
sering diimplementasikan untuk alasan kinerja di mana dalam banyak kasus
mungkin dianggap dapat diterima sepanjang pengaruhnya tidak jelas bagi pemain.
Sedangkan kecurangan hanya merujuk hak istimewa yang diberikan secara khusus
untuk AI itu tidak termasuk kecepatan tidak manusiawi dan presisi alami untuk pemain-komputer
mungkin panggilan keuntungan yang melekat komputer "kecurangan" jika
mereka menghasilkan agen bertindak tidak seperti pemain manusia.
Kecurangan AI adalah aspek yang terkenal dari seri Peradaban Sid
Meyer, dalam pertandingan tersebut, pemain harus membangun kerajaan dari awal,
sedangkan kerajaan komputer menerima unit tambahan tanpa biaya dan dibebaskan
dari pembatasan sumber daya.
1.5 Jenis
Game AI
RTS (Real Time Strategy)
Game ini biasanya bersifat turn based ataupun bisa dimainkan secara
bersamaan, identik dengan bermain melawan human intelegent (manusia vs manusia)
yang biasanya menggunakan LAN ataupun Internet. Game ini bisa dikatakan game
perang-perangan. Contoh game RTS adalah (DOTA, StarCraft, Civilization).
RPG (Role Playing Game)
Game ini memiliki unsur yang unik, karena biasanya tidak ada tamat
dalam game seperti ini (Kalaupun tamat, hanya ceritanya saja, dan kalian masih
bisa leveling atau grinding sesuka hati). Kalian akan menjalankan sebuah main
character yang bisa kalian costumize, mencari uang, membangun koneksi dengan
NPC (non playable player) dan sebagainya. Contoh dari game RPG adalah (KOA,
Skyrim, The Witcher).
FPS (First Person Shooter)
FPS adalah game Tembak-tembakan, pukul-pukulan, tusuk-tusukan yang
menggunakan sudut pandang orang pertama. Biasanya kita hanya bisa melihat
tangan dari character kita. Contoh game ini FPS adalah (Call of Duty, Counter
Strike, Far Cry 3).
TPS (Third Person Shooter)
TPS sama definisinya dengan FPS. Hanya saja sudut pandangnya yang
berbeda. Di TPS kita memakai sudut pandang orang ketiga. Kita bisa melihat
keseluruhan character dari belakang (punggung). Contoh game TPS adalah (Dark
Souls, Dark Siders, Assassins Creed).
Sand Box
Game yang bersetting disuatu daerah, jadi kita bertualang pada
suatu map yang sudah disediakan, dan kita bebas menjelajahinya tanpa harus
loading ketika berpindah kesuatu daerah, biasanya game-game yang seperti ini
game yang paling banyak peminatnya apalagi kita biasanya disuguhkan dengan
"kebebasan" didalam game seperti ini. Contoh game Sand Box (GTA,
Saints Row, Sleeping Dogs).
1.6 Kecepatan dan Memori
Kebanyakan program AI
menuntut memori yang besar dan kecepatan yang tinggi.
Sumber
Kecerdasan buatan dalam game, Bella alysha
Artificial Intelligence, Sandi Setiawan, Andi Offset Yogyakarta,
1993
Mengenal Artificial
Intelligence, Suparman, Andi Offset Yogyakarta, 1991.