RSS

Minggu, 26 September 2010

Pembuatan AI dengan implementasi C++ (part 1)

Bagi para gamers yang penasaran dengan pembuatan AI (kecerdasan buatan) pada game itu seperti apa,sedikit penjelasan tentang design AI dan implementasinya dengan C++...

Kebetulan ini menjadi topik skripsi saya yaitu otomasi AI dengan voice command, berhubung voice command nya belum dibuat, jadi saya cerita tentang AI nya dulu..

Ok,..pertama basic matematika dan fisika kita harus kuat (yang gak kuat belajar lagi kayak saya) terutama tentang koordinat cartesian, fungsi2, trigonometri lalu vektor..beberapa developer game menyebut vektor adalah "sahabat" karena jika game tersebut berbasis 2D maka kita menggunakan vektor 2D jika 3D? ya vektor 3D...
untuk basic fisikanya, masih ingat s = v.t? itu adalah rumus menghitung jarak s(jarak) = v(kecepatan) * time (waktu), serta rumus2 percepatan, gravitasi dll....

itu untuk basic matematika dan fisikanya..sekarang kita masuk ke bagian AI nya,,

pernah dengan FSM? itu adalah sebutan mutlak untuk para developer game yaitu Finite State Machine atau kondisi AI nya... sebagai contoh adalah game PacMan,..dalam game PacMan ada beberapa kondisi :
1. Jika PacMan belum makan Bulatan maka setan akan mengejar dan PacMan menghindar
2. Jika sudah makan Buletan maka PacMan mengejar, setan menghindar..

atau contoh yang lebih mudah adalah sebuah lampu:
1. Jika saklar Off maka lampu mati
2. Jika saklar On maka lampu hidup..

udah jelas? kebayang kan berapa state yang dibuat jika ingin membuat game yang komplex?
untuk implementasinya perhatikan script berikut :

enum StateType

void Agent:: UpdateState (StateType CurrentState)
{
switch (CurrentState)
{
case state_kabur;
HindariMusuh();
if (Safe())
{
ChangeState(state_siaga);
}
break;

case state_siaga;
IkutiAlur();
if(bahaya())
{
if(MusuhlebihLemah())
{
ChangeState(state_serang);
}
else
{
ChangeState(state_kabur);
}
}
break;

case state_serang;
if(MusuhlebihKuat())
{
ChangeState(state_kabur);
}
else
{
HancurkanMusuh();
}
break;
}
}

script C++ diatas adalah script dasar dari game DotA (Defense of the Ancient),tapi scriptnya gak semudah itu lho...masih banyak script2 lainnya yang belum saya pelajari...

ok itu untuk FSM nya....

sekarang kita masuk ke Agent..
disini anda harus mengerti Autonomous Agent..apa itu???
Autonomous Agent adalah AI yang dapat berinteraksi dengan lingkungannya...
misal dalam game, Ada ranjau didepan prajurit, tetapi prajurit berhasil menghindar, berarti si AI prajurit itu bisa berinteraksi dengan lingkungan,buktinya dia bisa tau ada ranjau didepan...
karena AI itu kita buat berdasarkan pengetahuan maka AI tidak bersifat Omnisscience (serba tahu) kita tidak dapat menyalahkan AI jika dia salah persepsi, karena AI diciptakan berdasarkan pengetahuan dari kita..(berarti klo AI salah, salahin juga yang buatnya.hehehe)....

ok, didalam implementasi C++ para developer game telah sepakat menentukan komponen2 yang akan dipakai untuk pembuatan game (khususnya AI)..diantaranya :
MovingEntity, BaseGameEntity, SteeringBehavior, GroupBehavior,dll..
jika ingin dilihat Class Diagramnya..monggo..


silahkan dicoba codingannya sendiri,,,kalau ada salah design mohon maaf ya,.namanya juga baru belajar...
selesai part 1 kali ini, karena ane udah pegel ngetik + ngantuk,,,nanti disambung lagi dipart 2 yah...

4 komentar:

  1. Intelligent agent: agent yang udah ditanamkan pengetahuan di dalamnya..

    Kl autonomous agent kyknya di atasnya, udah punya pengetahuan dan bisa menambahkan pengetahuan baru secara otomatis ke dalam dirinya jika dia punya pengalaman baru..

    Gk yakin sih bener apa salah.. AI nya udah lebih dari 1 tahun yg lalu..

    laras mutiara diva

    BalasHapus
  2. Fai, lo emang udah dapet topik ya, pembimbingnya siapa?

    BalasHapus
  3. blog walking.
    keren gan,
    :)

    BalasHapus