Sabtu, 24 Agustus 2013

Dalam sebuah game akan terasa tidak lengkap jika player tidak memiliki lawan. Untuk itu hampir dalam semua game pasti ada suatu karakter yang digerakkan oleh komputer AI yang berfungsi sebagai lawan atau teman. Sebut saja game sederhana pac-man, pasti tidak akan seru atau bahkan belum bisa disebut game jika karakter mirip cumi-cumi yang selalu menjadi lawan pemain dihilangkan. Oleh karena itu keberadaan karakter AI menjadi sangat penting bagi sebagian game.

Gambar game pacman
Gambar game Pacman

Seiring berkembangnya waktu manusia mulai membuat karakter AI yang semakin baik. Dahulu kala karakter AI dari sebuah game mungkin hanya bersifat sangat minim seperti musuh pacman yang hanya bertugas mengikuti lawan. Namun saat ini seiring berjalannya waktu karakter AI seringkali dilengkapi berbagai algoritma tertentu sehingga seakan-akan player merasa kalau lawan mainnya benar-benar bisa berpikir layaknya manusia.

Pada artikel ini saya akan sedikit membahas bagaimana cara membuat sebuah karakter AI yang sangat simpel dan hanya bertugas untuk mengejar obyek yang menjadi target. Tidak ada algoritma tertentu disini bahkan tidak dapat menemukan jalur terdekat untuk mengejar obyek. Algoritma AI ini bisa sobat terapkan untuk membuat game-game shooter sederhana seperti Alien Shooter. Bahkan mungkin bagi sebagian orang hal ini masih belum dapat disebut sebagai AI, namun apalah namanya itu tidaklah penting, yang penting bagaimana sobat bisa memahami bagaimana algoritma membuat obyek yang dapat mengikuti obyek lain secara smooth di unity. Ok langsung saja kita mulai langkah-langkahnya. 

Alat, bahan, dan skill yang diperlukan :
  1. Unity yang sudah terinstall di PC sobat
  2. Kemampuan dasar untuk menggunakan Unity seperti membuat objek, transformasi obyek seperti translate, rotate, dsb. Kalo sobat belum tahu dasar unity mari silahkan mampir ke artikel saya sebelumnya tentang kumpulan link tutorial gamedev. Silahkan belajar dari salah satu link di bagian Unity Basic.
Setelah alat dan bahan terpenuhi saatnya belajar.. Berikut adalah tutorial step by stepnya :

1. Buat karakter
 Pertama buat dulu karakter sesuai selera. Bisa yang simple-simple aja atau import dari model 3D lain. Kalau saya sendiri bikin karakter dari bentuk dasar sederhana, capsule sebagai badan dan cylinder sebagai hidung. Untuk membuat obyek klik Game Object >> Create other >> pilih obyek yang diinginkan. Gambar di bawah adalah karakter milik saya, sedikit aneh sih tapi lumayan daripada nggak.

Buat karakter sederhana

2. Buat arena
Arena diperlukan untuk landasan bagi obyek-obyek dalam game. Arena dapat dibuat menggunakan terrain, namun kali ini saya hanya menggunakan cube biasa yang saya atur ukurannya dan saya beri texture terrain

Buat arena

Selain arena, tentu akan lebih bagus jika diberikan effect cahaya. Tambahkan directional light untuk memberi efek cahaya seperti matahari.

Berikan cahaya directional light

3. Buat script untuk AI
Setelah bentuk karakter dan arena telah siap maka saatnya untuk memberikan script pada karakter. Disini saya buat C# script dengan nama kelas AICharacterBehaviour

Buat script untuk mengikuti object

Adapun isi dari script tersebut adalah sbb :

using UnityEngine;
using System.Collections;

public class AICharacterBehaviour : MonoBehaviour {
public GameObject target; //target yang dikejar
public float movingSpeed = 2f; //kecepatan berpindah
public float turnSpeed = 0.05f; //kecapatan berbelok

void Update() {
Vector3 gapPosition = target.transform.position - this.transform.position; //Gap antara posisi AI dengan target
gapPosition = new Vector3(gapPosition.x, 0, gapPosition.z); //Nilai gap y dibuat 0 agar AI mengabaikan posisi atas dan bawah (Y) dari target dan hanya mengikuti arah ke kanan dan ke kiri (X dan Y)
Quaternion lookRotation = Quaternion.LookRotation(gapPosition); //Rotasi untuk look atau melihat target
this.transform.rotation = Quaternion.Lerp(this.transform.rotation, lookRotation, turnSpeed); //Membuat rotasi berubah secara smooth menggunakan fungsi lerp dari rotasi awal ke rotasi tujuan lookRotasion

this.transform.Translate(Vector3.forward * movingSpeed * Time.deltaTime); //Bergerak maju
}
}


setelah script dibuat maka langkah selanjutnya adalah mengimplementasikan script pada karakter. Lakukan drag drop script ke karakter

Lakukan drag & drop

4. Buat karakter target / player yang digerakkan user
Setelah karakter AI jadi maka kita buat target yang dikejar. Target ini nantinya dapat digerakkan oleh user melalui keyboard. Pada tutorial ini karakter target saya buat kubus dan saya beri C# script PlayerBehaviour.

Target berupa kubus

Adapun isi dari scriptnya PlayerBehaviour dalah sbb


using UnityEngine;
using System.Collections;

public class PlayerBehaviour : MonoBehaviour {
public float movingSpeed = 15; //kecepatan bergerak

void Update () {
//Jika keyboard di tekan
if (Input.GetKey(KeyCode.LeftArrow))
this.transform.Translate(Vector3.left * movingSpeed * Time.deltaTime, Space.World);
else if(Input.GetKey(KeyCode.RightArrow))
this.transform.Translate(Vector3.right * movingSpeed * Time.deltaTime, Space.World);
else if (Input.GetKey(KeyCode.UpArrow))
this.transform.Translate(Vector3.forward * movingSpeed * Time.deltaTime, Space.World);
else if (Input.GetKey(KeyCode.DownArrow))
this.transform.Translate(Vector3.back * movingSpeed * Time.deltaTime, Space.World);
}
}


Selanjutnya tinggal implementasi kedalam karakter dengan drag & drop

Lakukan drag & drop script

5. Uji coba
Untuk melakukan ujicoba kita pasang dulu target ke dalam script AI agar target dikejar. Tinggal lakukan drag & drop saja

Drag and drop target ke dalam AI

Kemudian terakhir atur kameranya sedemikian rupa agar viewnya nyaman

Jalankan project

Jadi deh... Silahkan di play dan lihat sendiri apa yang terjadi. Untuk menggerakkan player tinggal tekan panah atas bawah kanan dan kiri. Untuk hasil jadinya saya lampirkan di link dibawah. Jika menemui masalah silahkan komen saja.

Mungkin cukup sekian artikel kali ini, mohon maaf jika ada salah kata, semoga bermanfaat dan terus berkarya. ^^

DOWNLOAD PROJECT:  http://www.4shared.com/zip/9Mtzs2vR/Simple_AI.html

BACA JUGA :
Pencarian rute menggunakan algoritma A* dengan library arongranberg



EmoticonEmoticon