• Tidak ada hasil yang ditemukan

Behaviour NPC Game Historical War 3D Using Finite State Machine

N/A
N/A
Protected

Academic year: 2017

Membagikan "Behaviour NPC Game Historical War 3D Using Finite State Machine"

Copied!
23
0
0

Teks penuh

(1)

BAB 2

LANDASAN TEORI

2.1. Sejarah singkat perang merebut Stabat

(2)

Belanda melancarkan agresinya yang pertama. Letnan Amir Yahya yang berada di tanjung pura di panggil komandannya untuk merebut kembali stabat. Sesuai dengan rencana, pasukan Lettu Lidan Syam yang ditugaskan untuk merebut stabat bergerak melalui bukit melintang dengan melalui jembatan kereta api. Pasukan yang berkekuatan 350 orang itu dengan tenang melangkah menuju titik yang telah ditentukan. Dari sana pasukan RI menggempur kedudukan belanda, sekaligus merebut kota stabat. Pasukan bergerak tepat pukul 18.00 dan sampai di ujung jembatan stabat pukul 20.00 Wib.

(3)

2.2 Teori 2D dan 3D

sebuah pemahaman tentang gerak dan penggerak keduanya sangat penting dalam memahami games. Kebanyakan objek didalam game bergerak. Apa yang membuatnya menjadi dinamis adalah gerakan itu sendiri. Jika itu adalah 2D character seperti Angry Birds atau 3D karakter yang lengkap seperti Tomb Raider, suasana game dan gerakan yang terus-menerus. Untuk memahami pengertian dari gerak, khususnya yang berkaitan dengan permainan komputer, pengetahuan dasar dalam vektor matematika diperlukan. Vektor digunakan secara luas dalam pengembangan game bukan hanya untuk menjelaskan kecepatan, akselerasi, posisi, dan arah tetapi juga dalam model 3D untuk menentukan texturing UV, sifat pencahayaan, dan efek khusus lainnya (Peng, 2014).

2.2.1 Prinsip Vektor

(4)

Gambar 2.1 Peta imajinatif menggambarkan penggunaan vektor (Peng,2014)

Untuk kembali ke kapal kargo dari harta karun itu, para pelaut dapat berjalan di sepanjang jalan yang sama yang digambarkan di atas, tetapi dalam ke arah sebaliknya. Ini dapat diselesaikan dengan membalik vektor sehingga semua nilai koordinat harus dikalikan dengan -1. Dalam hal ini, untuk dapat kembali ke kapal mereka harus pergi melalui vektor (-3,7). Ini adalah cara terbaik bagi orang untuk mengetahui jarak lurus antara kapal dan harta karun itu. Panjang vektor, ditulis v, didefenisikan besarnya dan ditulus |v|, dan itu bisa ditemukan menggunakan teorema Pythagoras, seperti yang ditunjukan pada persamaan 1.

Setiap game object atau prefab di Unity memiliki banyak vektor yang terkait dengan itu. Transformasi setiap komponen game object atau prefab memiliki tiga sifat penting: rotasi, posisi, dan skala. Tampilan dari environment game klasik dengan model karakter sebagai objek yang ditunjukkan pada Gamtbar 2.2. Pada umumnya, dalam 3D, sumbu x menyatakan samping, y menyatakan atas, dan z menyatakan depan. Setiap game object atau prefab memiliki bentuknya sendiri. Sumbu ditunjukan di jendela Scene dengan tiga jenis garis panah merah, yang ditunjukkan pada Gambar 2.2, warna merah, hijau, dan biru. Sumbu y adalah hijau, sumbu x adalah merah, dan sumbu Z adalah biru.

(5)

Environment di Unity memiliki sumbunya sendiri, dan orientasi yang dapat disesuaikan oleh pengguna dalam mengubah sudut pandang sekitar untuk mengamati objek yang berbeda. Di Unity, orientasi kamera yang menentukan orientasi utama. Semua game object memiliki orientasi mereka sendiri digambarkan dengan sumbu x, y, z yang diperlihatkan pada Jendela Scene ketika game object itu terpasang. Dengan demikian, dengan membaringkan game object, sumbu y dari game object ini maka dia menjadi horizontal.

Gambar 2.2 Koordinat di Edit Scene pada Unity (Peng,2014)

(6)

2.2.2 Defenisi Ruang 2D dan 3D

(Peng,2014) Teori-teori vektor pada ruand 2D atau 3D diterapkan dengan cara yang sama. Perbedaan antara sistem koordinat 2D dan sistem koordinat 3D adalah nilai parameternya yang berlainan. Dalam game engine 3D, game 2D yang dikembangkan dengan sumbu x dan sumbu z. Dalam game 2D, umumnya diposisikan pada latar yang sama, yang mana diinisialisasikan nilai dari y menjadi 0. Setiap pergerakan pada game object tersebut hanya bisa bertindak pada latar itu saja. Hal ini dapat diasimilasikan dengan memindahkan objek sekitar daerah atas planar. Kebanyakan game 2D, kamera ditempatkan langsung di atas scene dan perspektif dihapus untuk memberikan pandangan adegan yang benar-benar 2D. apakah itu game 2D atau 3D kamera adalah komponen yang penting karena menampilkan semua tindakan dari game object pada player di arena permainan. Sebagai hasilnya melalui lensa mata kita dapat merasakan suasana permainan itu. Memahami bagaimana kamera bergerak dan bagaimana cara untuk menyesuaikannya dibutuhkan pengetahuan dasar.

(7)

biasanya diwakili oleh simbol. Ruang ini hanya salah satu contoh dari berbagai ruang dalam tiga dimensi yang disebut 3-manifold.

Gambar 2.3 Memahami ruang 2D. disalin dari insinyur Xavier Borg (2007)

2.2.3 Translasi, Rotasi, dan Skala

(Peng, 2014) Setiap game object apakah itu dalam bentuk 2D atau 3D dapat dilakukan dengan tiga transformasi : translasi, rotasi, dan skala. Translasi berhubungan dengan gerakan dan posisi game object dan ditentukan oleh vektor 2D bahwa orang pada bagian sebelumnya telah berpindah pada peta. Fitur penting dari translasi adalah setiap kali nilai-nilai x, y, dan z di ubah. Nilai-nilai-nilainya dapat diubah sekaligus dengan vektor atau satu per satu. Untuk memindahkan game object ke arah x sebanyak 8, Unity C# :

Gameobject.transform.position.x =+8 ;

Untuk memindahkan game object sebanyak 5 pada x, 9 pada y, dan 14 pada z, dalam Unity C#, itu bisa ditulis seperti ini :

(8)

Gameobject.transform.position = new Vector3 (5,9,14);

Unity menaruh rotasi sebagai Quaternion internal. Untuk memutar objek, gunakan Transform.rotate. Gunakan Transform.eulerAngles untuk mengatur rotasi sudut euler. Sebuah game object dapat diputar sumbu x, y, atau z atau dunia pada sumbu x, y, dan z. rotasi gabungan juga sangat mendukung. Sebuah objek dapat diputar semaunya yang didefenisikan oleh nilai-nilai vektor.

Pada akhirnya skala dapat mengubah ukuran objek seperti yang ditunjukkan pada Gambar 2.4 Sebuah game object dapat diskalakan sepanjang sumbu x, y, dan z. Ini kemampuan yang sangat penting yang dapat mengubah skala game object dengan mengatur nilai skala secara individual, begini :

Gambar 2.4 Menskalakan Objek (Peng, 2014)

(9)

sumbu y menjadi -1 akan mengubah game object terbalik. Ini adalah kemampuan yang diperlukan untuk memahami bagaimana game object akan bergerak dalam game. Para desainer harus meluangkan waktu untuk menyesuaikan diri dengan ruang 2D dan 3D. Untungnya, Unity menyediakan matematika yang dapat dikerjakan dengan mudah dan memberitahukan berbagai fungsi yang mudah digunakan.

2.3 Prinsip Desain atau Aturan pada Game First Person Shooter

(Peng, 2014) Seluruh Tema dari projek game ini adalah mekanisme yang berhubungan dengan aksi yang sedang berlangsung pada game dari operasi animasi internal dan pemrograman ke interaksi antara environment dan player. Namun, dalam penelitian game, mekanisme game tersebut digunakan untuk mengacu kepada hubungan yang dikembangkan yang menfasilitasi dan menentukan tantangan antara game dan player. Itu adalah sistem yang rumit yang mengandung serangkain alasan yang masuk akal, aksi, tujuan, dan umpan balik para player. Memahami mekanisme game sangat berguna untuk membuat aksi-aksi dan unsur-unsur lain yang dapat diimplementasikan dan menghasilkan ide yang tak terbatas untuk game dengan menggabungkan aksi, aturan dan tujuan. Siklus ini diilustrasikan pada Gambar 2.5.

(10)

(Peng, 2014) Para player disajikan dengan sebuah tantangan. Untuk mencapai tantangan mereka mendapatkan alat yang dapat digunakan untuk melakukan aksi dan aturan-aturan yang membatasi ruang lingkup aksi ini. Alat-alat yang digunakan mengandung objek yang berisi masukkan atau input seperti sensor dan keyboard, serta alat-alat virtual didalam game seperti senjata, kotak-alat, dan kunci. Peraturan tentang bagaimana player dapat bermain didunia game. Didalam game kartu, umumnya aturan ditulis dalam buku instruksi dan ditangani oleh player. Dalam video game, player dibimbing secara sadar akan aturan dalam game dan pemrogram kode game tersebut harus dapat memastikan bahwa player bisa mengikutinya. Pemrogram juga memberikan informasi kepada player tergantung dari aksi ataupun tindakan yang dilakukan untuk membantu mereka belajar bagaimana cara memainkan game ini dengan lebih baik dan menyelesaikan tantangan. Bagian dari mekanisme umpan balik juga bisa menginformasikan player ketika mereka menang atau gagal.

2.4 Teori Finite State Machine

(11)

2.4.1 Perencanaan State dan Transisi

(Bevilacqua, 2013) Penerapan FSM dimulai dengan states dan transisi yang dibutuhkan. Bayangkan FSM pada Gambar 2.6, menggambarkan otak dari semut yang membawa daun ke rumah. Titik awal adalah state find leaf, yang mana akan aktif sampai semut menemukan daunnya. Ketika itu terjadi, kondisi state di transisikan ke go home, yang mana akan aktif sampai semut sampai di sarang. Ketika semut sampai sarang, state yang aktif menjadi find leaf lagi, jadi semut mengulangi perjalanannya. Jika state yang aktif adalah find leaf dan kursor mouse mendekati semut, transisinya menjadi state run away. Ketika state aktif, semut akan lari dari kursor mouse. Ketika kursor tidak lagi menjadi ancaman, transisi state kembali ke find leaf. Karena ada transisi yang menghubungkan antara find leaf dan run away, semut akan selalu melarikan diri dari kursor mouse ketika itu mendekati semut selama semut mencari daun. Itu tidak akan terjadi jika state yang aktif adalah go home (cek gambar 2.7). Dalam kasus ini semut akan pulang kerumah tanpa rasa takut, hanya transisi ke find leaf ketika semut sampai rumah.

2.4.2 Menerapkan Finite State Machine

(12)

Gambar 2.6 Menggambarkan Otak dari semut (Bevilacqua, 2013)

(13)

public class FSM {

private var activeState : Function; // menunjukkan fungsi state yang aktif

public function FSM () {}

public function setState(state :Function) :void { activeState = state ; }

public function update () :void { if ( activeState != null )

{ activeState(); } }

}

(14)

Gambar 2.8 FSM dari otak semut dengan berfokus pada kode (Bevilacqua, 2013)

public class Ant {

public var position :Vector3D; public var velocity :Vector3D; public var brain :FSM ;

public function Ant (posX : Number, posY :Number) { position = new Vector3D (posX, posY); velocity = new Vector3D (-1,-1);

brain = new FSM () ;

//beritahu brain untuk memulai mencari daun (leaf). brain.setState (findLeaf);

}

/** state findLeaf membuat semut menuju daun.

*/

(15)

}

/** state goHome membuat semut menuju rumah.

*/

public function goHome () :void { }

public function update() :void {

// memperbaharui FSM yang mengendalikan “brain”. Ini akan memanggil fungsi state yang sedang aktif : findLeaf (), goHome(), atau runaway().

brain.update();

//menerapkan vektor kecepatan untuk posisi, membuat semut berjalan.

moveBasedOnVelocity (); }

(….) }

(16)

public function findLeaf() :void {

// menggerakkan semut ke daun

velocity = new Vector3D(Game.instance.leaf.x - position.x, Game.instance.leaf.y -

position.y);

if (distance(Game.mouse, this) <= MOUSE_THREAT_RADIUS) {

// kursos mouse mengancam kita. Ayo lari !

State goHome () digunakan untuk membuat semut pulang kerumah :

public function goHome() :void {

// menggerakan semut menuju rumah.

velocity = new Vector3D(Game.instance.home.x - position.x, Game.instance.home.y

- position.y);

if (distance(Game.instance.home, this) <= 10) {

// semut sampai dirumah. Cari daun lagi.

(17)

Akhirnya, state runAway () digunakan untuk membuat semut melarikan diri dari kursor mouse :

public function runAway() :void {

// menggerakkan semut untuk menjauh dari kursor mouse

velocity = new Vector3D(position.x - Game.mouse.x, position.y - Game.mouse.y);

// apakah kursor mouse masih dekat sini?

if (distance(Game.mouse, this) > MOUSE_THREAT_RADIUS) {

// tidak, kursor mouse telah pergi. Ayo cari daun lagi.

brain.setState(findLeaf);

}

}

(18)

Gambar 2.9 FSM semut diperbaharui dengan transisi baru (Bevilacqua, 2013)

Stack-based FSM dapat diimplementasikan dengan menggunakan pendekatan yang sama seperti sebelumnya, tapi kali ini menggunakan sebuah array dari fungsi pointer untuk mengontrol tumpukan. Properti activeState tidak lagi diperlukan, karena tumpukan yang paling atas telah menjadi state aktif.

public class StackFSM {

private var stack :Array;

public function StackFSM() {

this.stack = new Array();

}

public function update() :void {

var currentStateFunction :Function = getCurrentState();

if (currentStateFunction != null) {

currentStateFunction();

}

(19)

public function popState() :Function {

return stack.pop();

}

public function pushState(state :Function) :void {

if (getCurrentState() != state) {

stack.push(state);

}

}

public function getCurrentState() :Function {

return stack.length > 0 ? stack[stack.length - 1] : null;

}

}

(20)
(21)

brain.pushState(findLeaf); // dorong state "findLeaf", buat menjadi state aktif

(22)

}

(23)

Karakter npc mengisi dunia fiksi dari game dan dapat mengisi peran apapun yang tidak di tempati oleh player character. Karakter npc mungkin sekutu, para pengamat atau pesaing untuk player character. Npc juga bisa pedagang yang berdagang mata uang untuk hal-hal seperti peralatan atau perlengkapan Npc sehingga bervariasi dalam tingkat detail (Ellison, 2008).

2.6 Penelitian Terdahulu

Beberapa penelitian yang berkaitan dengan pembuatan game First Person Shooter menggunakan Unity adalah :

1. Xia, Peng (2014) membahas tentang membuat game First Person Shooter menggunakan Unity.

2. Jailani, A.Q. (2010) meneliti tentang membuat strategi gerak hindar Non-Player Character (NPC) pada game First Person Shooter (FPS) menggunakan Finite State Machine (FSM).

3. Mizanuddin (2011) membuat game First Person Shooter Operasi Lun Inau menggunakan Unity.

Gambar

Gambar 2.1 Peta imajinatif  menggambarkan penggunaan vektor (Peng,2014)
Gambar 2.2 Koordinat di Edit Scene pada Unity (Peng,2014)
Gambar 2.3  Memahami ruang 2D. disalin dari insinyur Xavier Borg (2007)
Gambar 2.4 Menskalakan Objek (Peng, 2014)
+5

Referensi

Dokumen terkait

2 01 17 Program peningkatan pemasaran hasil produksi pertanian/ perkebunan Tersedianya penampunga n hasil pertanian Optimalisas i peningka tan kualitas dan kuantitas produksi SDA

Dari hasil penelitian didapat persentase sebanyak 0,2 %, Jika dibandingkan dengan penelitian yang dilakukan di RSUD Kabupaten Sumedang, persentase obat yang rusak atau

Salah satu dokumen yang menjadi acuan dalam pembangunan jangka panjang adalah Undang-Undang No 25/2004 tentang Sistem Perencanaan Pembangunan Nasional, yang

Fenomena yang merisaukan banyak pihak,pada sekarang ini adalah gaya pacaran para remaja yang menjurus pada hubungan seksual atau seks bebas.Khususnya remaja putri

Dari hasil tersebut dapat disimpulkan bahwa ada hubungan positif dan signifikan antara tingkat pengetahuan dengan sikap terhadap pernikahan dini yang pada remaja

Hasil penelitian menyimpulkan bahwa penggunaan limbah jerami padi sebagai pakan basal ternak sapi pada usaha penggemukan tidak memberikan respon produksi dan ekonomi yang

dari suatu state ke state lain berdasarkan kondisi masukan saat itu, salah satu caranya adalah dengan menggunakan sebuah metode yang disebut FSM (Finite State Machine).. Jika

Pada penelitian ini dibuat sebuah game yang berjudul Zamrud Khatulistiwa dengan Menggunakan Metode FSM (Finite State Machine) pada game agennya untuk merancang