Artificial Intelligence Pada Game dan Arsitektur Game Engine
ARTIFICIAL INTELLIGENCE PADA GAME
Artificial Intelligence (AI) atau biasa disebut kecerdasan
buatan merupakan kecerdasan yang diciptakan dan dimasukkan ke dalam suatu mesin
(komputer) sehingga dapat melakukan pekerjaan seperti yang dapat dilakukan oleh
manusia.
Penggunaan AI pada game sendiri terdapat 2 macam yang
masing-masing memiliki karakteristik yang berbeda-beda diantaranya adalah
seperti dibawah ini:
Decision Making
Decision Making merupakan serangkaian algoritma yang
dirancang sedemikian rupa dengan cara memasukkan beberapa kemungkinan langkah
yang bisa diambil oleh suatu aplikasi. Decision Making pada game memberikan
kemampuan suatu karakter untuk menentukan langkah apa yang akan diambil. Cara
kerja dari Decision Making adalah dengan menentukan satu pilihan diantara
banyak list yang telah dibuat pada algoritma yang dirancang.
Decision Making sendiri terbagi menjadi 3 bagian yakni :
1. Decision Tree
Decision Tree atau biasa disebut pohon keputusan merupakan
metode klasifikasi dan prediksi yang sangat kuat dan terkenal. Metode pohon
keputusan mengubah fakta yang sangat besar menjadi pohon keputusan yang
mempresentasikan aturam. Aturannya dapat dengan mudah dipahami dengan bahasa
yang alami. Aturan ini juga dapat diekspresikan dalam bentuk bahasa basis data
seperti SQL untuk mencari record pada kategori tertentu. Selain itu, pohon
keputusan juga berguna untuk mengeksplorasi data, menemukan hubungan tersembunyi
antara sejumlah calon variabel input dengan sebuah variabel target. Karena
pohon keputusan memadukan antara eksplorasi data dan pemodelan, pohon keputusan
ini sangat bagus sebagai langkah awal dalam proses pemodelan bahkan ketika
dijadikan sebagai model akhir dari beberapa teknik lain (J R Quinlan, 1993).
2. State Machine
FSM(Finite State Machines) merupakan sebuah metodologi
perancangan sistem kontrol yang menggambarkan tingkah laku atau prinsip kerja
sistem dengan menggunakan tiga hal berikut :
State(Keadaan), Event(Kejadian), Action(Aksi)
Pada suatu saat ketika periode waktu yang cukup signifikan,
sistem akan berada pada salah state yang aktif. Kemudian sistem dapat beralih
atau bertransisi menuju state yang lain jika mendapatkan suatu masukan atau
event tertentu, baik yang berasal dari perangkat luar ataupun komponen dalam
sistemnya itu sendiri. Transisi keadaan ini biasanya disertai oleh aksi yang
dilakukan oleh sistem ketika menanggapi masukan. Aksi yang dilakukan dapat
berupa aksi yang sederhana atau bisa melibatkan rangkaian proses yang relative
kompleks.
3. Rule System
Rule Based System merupakan metode pengambilan keputusan
yang berdasarkan pada aturan-aturan tertentu yang telah ditetapkan. RBS dapat
diterapkan pada agen virtual dalam bentuk kecerdasan buatan sehingga dapat
melakukan tindakan tertentu. Tindakan tersebut dipresentasikan oleh set aturan
yaitu penyebab, proses dan hasil dari tindakan yang dilakukan.
RBS merupakan sistem yang baik jika menjawab pertanyan
mengenai What(Apa), How(Bagaimana), dan Why(Mengapa) dari Rule Base(RB) selama
proses inferensia. Jawaban serta penjelasannya dapat disediakan dengan baik.
Path Finding
Metode Path Finding seringkali dijumpai pada game yang
bergenre strategi, dimana kita sebagai user menunjuk satu karakter untuk
digerakkan ke lokasi tertentu dengan cara mengklik lokasi yang akan dituju.
Maka, si karakter tersebut akan bergerak ke arah yang telah ditentukan, dan
secara “cerdas” dapat menemukan jaur terpendek ataupun menghindari rintangan yang
ada.
Metode pada Path Finding terbagi menjadi 4 bagian yakni:
A. Waypoints
Merupakan titik acuan/kumpulan koordinat yang digunakan
untuk keperluan navigasi. Maksud dari keperluan navigasi disini adalah
mengidentifikasi sebuah titik dipeta. Disetiap koordinat biasanya menyertakan
longitude, latitude, dan terkadang altitude untuk keperluan navigasi di udara.
B. A* Searching
Algoritma A* merupakan yang sering digunakan pada game yang
menggunakan metode pathfinding. Algoritma ini dipilih karena A* sangat mudah
untuk diimplementasikan dan sangat efisien. Dengan menggunakan algoritma A*
kita dapat menentukan jalur terpendek. Pada algotitma ini akan menyeleksi
dengan cara membuang langkah yang tidak perlu dengan mempertimbangkan bahwa
langkah yang dibuang dipastikan tidak mencapai solusi yang diinginkan.
Prinsip dari algoritma ini yaitu dengan cara mencari jalur
terpendek dari sebuah simpul awal (Starting Point) menuju ke simpul tujuan
dengan memperhatikan harga (F) terkecil. Algoritma A* akan memperhitungkan cost
dari current state ke tujuan dengan fungsi heuristic, selain itu algoritma ini
juga mempertimbangkan cost yang telah ditempuh selama ini dari initial state ke
current state. Jadi maksudnya jika jalan yang telah ditempuh terlalu panjang
dan ada jalan lain yang cost nya lebih kecil tetapi memberikan posisi yang sama
jika dilihat dari goal, maka jalan yang lebih pendeklah yang akan dipilih.
C. Dijkstra
Algoritma Dijkstra yang dinamai penemunya yakni seorang
ilmuwan komputer, Edsger Dijkstra merupakan sebuah algoritma yang rakus atau
biasa dikenal dengan algoritma greedy. Algoritma ini biasa dipakai dalam
memecahkan permasalahan jarak terpendek (shortest path problem) untuk sebuah
graf berarah (directed graph) dengan bobot-bobot sisi (edge weights) yang
bernlai positif.
D. Tactical
Pathfinding
Tactical Pathfinding merupakan algoritma pencarian jalur
yang bisa melakukan pencarian jalur terpendek dengan menghitung bobot ancaman.
Implementasi algoritma ini dapat memberikan gerakan taktis pada non-player
character. Algoritma ini dilakukan berdasarkan algoritma pencarian jalur A*
yang ditambah dengan perhitungan bobot.
ARSITEKTUR GAME ENGINE
Game Engine adalah system perangkat lunak yang dirancang
untuk menciptakan dan pengembangan video game. Ada banyak mesin permainan yang
dirancang untuk bekerja pada konsol permainan video dan sistem operasi desktop
seperti Microsoft Windows, Linux, dan Mac OS X. fungsionalitas inti biasanya
disediakan oleh mesin permainan mencakup mesin render ( “renderer”) untuk 2D
atau 3D grafis, mesin fisika atau tabrakan (dan tanggapan tabrakan), suara,
script, animasi, kecerdasan buatan, jaringan, streaming, manajemen memori,
threading, dukungan lokalisasi, dan adegan grafik. Proses pengembangan
permainan sering dihemat oleh sebagian besar menggunakan kembali mesin
permainan yang sama untuk menciptakan permainan yang berbeda.
Engine bukanlah executable program, artinya engine tidak
bisa dijalankan sebagai program yang berdiri sendiri. Diperlukan sebuah program
utama sebagai entry point atau titik awal jalannya program. Pada C++, entry
point-nya adalah fungsi ‘main().’ Biasanya program utama ini relatif pendek.
Game engine adalah program yang ‘memotori’ jalannya suatu program game. Kalau
game diilustrasikan sebagai ‘musik’ yang keluar dari mp3 player, maka engine
adalah ‘mp3 player’ dan program utama adalah ‘data mp3’ yang dimasukkan ke
dalam mp3 player tersebut. Dengan adanya engine, waktu, tenaga dan biaya yang
dibutuhkan untuk membuat game software menjadi berkurang secara signifikan.
Beberapa game dengan jenis dan gameplay yang hampir sama
bisa dibuat dengan sedikit usaha bila terlebih dulu dibuat engine-nya. Setelah engine
diselesaikan, programmer hanya perlu menambahkan program utama, memakai
resources (objek 3D, musik, efek suara) yang baru, dan, jika benar-benar
dibutuhkan, sedikit memodifikasi engine sesuai kebutuhan spesifk dari game yang
bersangkutan. Program game engine seluruhnya berorientasi objek. Dia lebih
bersifat reaktif daripada prosedural. Sulit untuk menggambarkan engine secara
keseluruhan dalam flow-chart, karena alur program bisa diatur sesuai dengan
keinginan pemakai engine, yaitu game programmer.
Tujuan Penggunaan Game Engine
Game engine menyediakan seperangkat alat pengembangan visual
di samping komponen software digunakan kembali. Alat-alat ini umumnya diberikan
dalam suatu lingkungan pengembangan terpadu untuk mengaktifkan disederhanakan,
perkembangan pesat dari permainan dengan cara data-driven. Mesin pengembang
Game upaya untuk “pra-menciptakan roda” dengan mengembangkan suite perangkat
lunak kuat yang mencakup banyak unsur pengembang game mungkin perlu untuk
membangun sebuah permainan.
Kebanyakan mesin permainan suite menyediakan fasilitas yang
memudahkan pengembangan, seperti grafik, suara, fisika dan fungsi AI. Mesin
permainan ini kadang-kadang disebut “middleware” karena, seperti dengan istilah
naluri bisnis, mereka menyediakan sebuah platform perangkat lunak yang
fleksibel dan dapat digunakan kembali yang menyediakan semua fungsionalitas
inti yang dibutuhkan, langsung dari kotak, untuk mengembangkan sebuah aplikasi
permainan sambil mengurangi biaya , kompleksitas, dan waktu-ke-pasar-semua faktor
penting dalam industri video game yang sangat kompetitif. Gamebryo dan
RenderWare adalah seperti program middleware banyak digunakan.
Seperti solusi middleware lainnya, mesin permainan biasanya
menyediakan abstraksi platform, yang memungkinkan permainan yang sama untuk
dijalankan pada berbagai platform termasuk game konsol dan komputer pribadi
dengan sedikit, jika ada, perubahan yang dibuat ke kode sumber permainan.
Seringkali, mesin permainan dirancang dengan arsitektur berbasis komponen yang
memungkinkan sistem tertentu dalam mesin yang akan diganti atau diperpanjang
dengan lebih khusus (dan sering kali lebih mahal) komponen middleware game
seperti Havok untuk fisika, Miles Sound System untuk suara, atau Bink untuk
Video.
Beberapa mesin permainan seperti RenderWare bahkan dirancang
sebagai rangkaian dihubungkan secara longgar komponen middleware permainan yang
bisa selektif dikombinasikan untuk membuat mesin khusus, bukan pendekatan yang
lebih umum dari memperluas atau menyesuaikan solusi terintegrasi yang
fleksibel. Namun diperpanjang tercapai, hal itu tetap menjadi prioritas tinggi
dalam mesin game karena berbagai kegunaan yang mereka diterapkan. Meskipun
kekhususan nama, mesin permainan yang sering digunakan untuk jenis lain
aplikasi interaktif dengan kebutuhan grafis real-time seperti demo pemasaran,
visualisasi arsitektur, simulasi pelatihan, dan lingkungan pemodelan.
Beberapa mesin permainan hanya menyediakan 3D real-time
rendering kemampuan bukan berbagai fungsi yang dibutuhkan oleh game. Mesin ini
mengandalkan pengembang game untuk melaksanakan seluruh fungsi ini atau merakit
dari komponen middleware permainan lainnya. Jenis mesin umumnya disebut sebagai
“mesin grafis,” “mesin render,” atau “mesin 3D” bukan meliputi lebih istilah
“mesin permainan.” Terminologi ini tidak konsisten banyak digunakan sebagai
fitur lengkap mesin permainan 3D disebut hanya sebagai “mesin 3D.”
Beberapa contoh mesin grafis adalah: Crystal Space,
Genesis3D, Irrlicht, JMonkey Engine, OGRE, RealmForge, Truevision3D, dan Visi
Engine. Modern permainan atau mesin grafis umumnya memberikan grafik adegan,
yang merupakan representasi berorientasi objek dari dunia permainan 3D yang
sering menyederhanakan desain game dan dapat digunakan untuk rendering yang
lebih efisien dari dunia maya yang luas.
Tipe Game Engine
Game engine biasanya datang dengan berbagai macam jenis dan
ditujukan untuk berbagai kemampuan pemrograman. Ada 3 tipe game engine yang ada
saat ini, diantaranya :
·
Roll – your – own – Game Engine.Banyak
perusahaan game kecil seperti publisher indie biasanya menggunakan engine-nya
sendiri. Mereka menggunakan API seperti XNA, DirectX atau OpenGL untuk membuat
game engine mereka sendiri. Di sisi lain, mereka kadang menggunakan library
komersil atau yang open source. Terkadang mereka juga membuat semuanya mulai
dari nol.Biasanya game engine tipe ini lebih disukai karena selain kemungkinan
besar diberikan secara gratis, juga memperbolehkan mereka (para developer)
lebih fleksibel dalam mengintegrasikan komponen yang diinginkan untuk dibentuk
sebagai game engine mereka sendiri. Kelemahannya banyak engine yang dibuat
dengan cara semacam ini malah menyerang balik developernya. Tower Games Studio
membutuhkan satu tahun penuh untuk menyempurnakan game engine-nya, hanya untuk
ditulis ulang semuanya dalam beberapa hari sebelum penggunaannya karena adanya
bug kecil yang sangat mengganggu.
·
Mostly-ready game engines.Engine ini biasanya
sudah menyediakan semuanya begitu diberikan pada developer/programer. Semuanya
termasuk contoh GUI, physiscs, libraries model, texture dan lain-lain. Banyak
dari mereka yang sudah benar-benar matang, sehingga dapat langsung digunakan
untuk scripting sejak hari pertama. Game engine semacam ini memiliki beberapa
batasan, terutama jika dibandingkan dengan game engine sebelumnya yang
benar-benar terbuka lebar.Hal ini ditujukan agar tidak terjadi banyak error
yang mungkin terjadi setelah sebuah game yang menggunakan engine ini dirilis
dan masih memungkinkan game engine-nya tersebut untuk mengoptimalkan kinerja
game-nya. Contoh tipe game engine seperti ini adalah Unreal Engine, Source
Engine, id Tech Engine dan sebagainya yang sudah sangat optimal dibandingkan
jika harus membuat dari awal. Dengan hal ini dapat menyingkat menghemat waktu
dan biaya dari para developer game.
·
Point – and – click Engine.Engine ini merupakan
engine yang sangat dibatasi, tapi dibuat dengan sangat user friendly. Anda
bahkan bisa mulai membuat game sendiri menggunakan engine seperti GameMaker,
Torque Game Builder dan Unity3D. Dengan sedikit memanfaatkan coding, kamu sudah
bisa merilis game point-and-click yang kamu banget. Kekurangannya terletak pada
terbatasnya jenis interaksi yang bisa dilakukan dan biasanya hal ini mencakup
semuanya, mulai dari grafis hingga tata suara.Tapi bukan berarti game engine
jenis ini tidak berguna, bagi developer cerdas dan memiliki kreativitas tinggi,
game engine seperti ini bisa dirubah menjadi sebuah game menyenangkan, seperti
Flow. Game engine ini memang ditujukan bagi developer yang ingin menyingkat
waktu pemrogramman dan merilis game-game mereka secepatnya.
Beberapa Contoh Game Engine Open Source :
1.
3D Game Studio
2.
Delta 3D
3.
Unreal Engine
4.
Panda 3D
5.
Torque
6.
Quake Engine
Comments
Post a Comment