Behaviour NPC Game Historical War 3D Using Finite State Machine

(1)

DAFTAR PUSTAKA

AeHyun, K. & JaeHwan, B. 2014. Development of mobile game using

multiplatform(unity3D) game engine. International Journal of Intelligent Information Processing(IJIIP) 5(1):29-35.

Beny, 2010. Pengembangan software game menggunakan RPG maker VX. Skripsi. Universitas Sumatera Utara.

Bevilacqua, Fernando. 2013. Finite-State Machines: Theory and Implementation.

(Online)http://gamedevelopment.tutsplus.com/tutorials/finite-state-machines-theory-and-implementation--gamedev-11867 (17-02-2016).

Creighton, R.H. 2010. Unity 3D Game Development by Example. 1:110-115. (E-Books). http://kat.ph. (10-01-2016).

Doran, John P. 2015. Building an FPS Game with Unity. 1:6-215. (E-Books).http://kat.ph. .(20-12-2015).

Ellison, B. 2008. Non-player character. (Online) en.wikipedia.org/wiki/Non-player_character (25 Juli 2012).

Fauzi, M.Haki & Rodiah. 2013. First person shooter 3D”GamaShoot” dengan blender dan unity 3D. Prosiding Seminar Nasioanal Teknologi Informasi dan Multimedia (AMIKOM 2013),pp.1-6.

Goldstone, Will. 2009. Unity Game Development Essentials. 1:14-129. (E-Books). www.it-ebooks.info (10-01-2016).

Jailani, A.Q. 2010. Strategi gerak hinder non-player character (NPC) pada game first person shooter (FPS) menggunakan finite state machine (FSM). Universitas Trunojoyo : Madura.


(2)

Kyaw, A.s.,Swe, T.N. & Peters, C. 2013. Unity 4.x Game AI Programming. 1:5-50. (E-Books).www.it-ebooks.info (08-03-2016).

Mizanuddin. 2011. Pembuatan game FPS (sudut pandang orang pertama) “operasi LUN INAU” dengan menggunakan unity. Skripsi Amikom: Yogyakarta. Meisadri, R. & Indriani, N. 2013. Pembangunan permainan first person shooter

3D alien hunter. Jurnal Ilmiah Komputer dan Informatika (KOMPUTA) 2(1):1-6.

Okita, Alex. 2015. Learning C# Programming with Unity 3D.1:25-133. (E-Books).http://kat.ph.(10-01-2016).

Peng, X. 2014. 3D game development with unity A case study: A first-person shooter (FPS) game. Helsinki Metropolia University of Applied Sciences: Finlandia.

Raharja, W. S. 2011. Pengembangan aplikasi situs sejarah dalam bentuk peta tiga dimensi interaktif kompleks monumen tugu pahlawan surabaya menggunakan unity 3D engine. Institut Teknologi Surabaya.

TWH, M. 2007. Bungai Rampai Perjuangan Rakyat Sumatera Utara. Yayasan Pelestarian Fakta Perjuangan : Medan.

Xavier Borg. Understanding 2 dimensional spaces [Online]. Blaze labs re-search. URL: http://www.blazelabs.com/f-u-hds.asp . Accessed 10 September 2013.

Wagner F., Schmuki R., Wagner, T. & Wolstenholme, P. 2006. Modelling software with finite state machines. Aurbach Pubclications: New York.

Warden, J. 2012. Finite state machines in game development. (Online) http://jessewarden.com/2012/07/finite-state-machines-in-game-development.html (25 Juli 2012).


(3)

BAB 3

ANALISIS DAN PERANCANGAN

3.1 Arsitektur Umum

Metode yang diajukan pada penelitian ini dapat dilihat pada gambar 3.1 yang memberikan gambaran arsitektur umum dan langkah-langkah yang dilakukan dalam penelitian ini. Detail dari arsitektur umum tersebut akan dijelaskan lebih lanjut pada sub-bab berikutnya.


(4)

3.2 Pengumpulan Data

Tahapan pengumpulan data merupakan tahapan awal dan terpenting, karena menjadi dasar dalam pelaksanaan tahapan selanjutnya. Data-data yang digunakan dalam penelitian ini adalah buku sejarah , foto dan internet.

3.2.1 Foto-Foto Masa Lalu

Stabat yang saat itu memiliki perusahaan kereta api milik kolonial Hindia Belanda pada saat itu membuat beberapa dokumentasi yang masih disimpan oleh belanda saat ini. Foto-fotonya banyak diambil dari museum belanda yang memiliki lama daring resmi, seperti The Koninklijk Instituut voor Taal-, Land- en Volkenkunde (KITLV) yang dikelola oleh Universitas Leiden Belanda dan The Tropenmuseum (Museum of the Tropics).

Sumber laman daring resmi yang dimiliki oleh KITLV ialah http://media-kitlv.nl yang dapat diakses oleh siapapun. Laman daring tersebut memuat banyak sekali arsip foto situs dan tempat yang pernah menjadi koloni dari Pemerintah Hindia Belanda, terutama Indonesia. Namun untuk mendapatkan akses penuh, KITLV mewajibkan pengunjungnya menjadi member dan mendonasikan sejumlah dana. Beberapa contoh foto yang dijadikan sumber data primer dari penetitian ini ada pada gambar 3.3, gambar 3.4 dan gambar 3.5. Selain foto stasiun, yang tidak kalah penting ialah foto peta stabat pada saat itu. Pemerintah Kolonial Hindia Belanda sempat memetakan wilayah Sumatera Timur, termasuk wilayah Stabat dan Tanjung Pura. Seperti pada gambar 3.6 yang sangat dibutuhkan untuk membuat terrain. Yang berada di dalam kotak merah adalah bagian dari peta perjalanan yang digunakan pada game ini. Berawal dari stasiun tanjung pura mengikuti rel kereta api bergerak lurus sampai menuju jembatan di perbatasan antara stabat dan belanda.


(5)

32

Gambar 3.2 Tampilan laman Situs KITLV (KITLV)


(6)

Gambar 3.4 Tampak Belakang Stasiun Kereta Api Tanjung Pura (KITLV)


(7)

34

Gambar 3.6 Peta Jalur Kereta Api Tanjung Pura – Stabat (KITLV) 3.3 Modelling

Dengan terbatasnya informasi yang ada, dalam menentukan ukuran rumah, peneliti menghitung berdasarkan skala dan estimasi dari ukuran sebenarnya suatu objek yang ada dalam foto stasiun kereta api. Metode yang digunakan dalam proses pemodelan 3D ini ialah image-based modelling (IBM) dengan menggunakan 3D Sketch Up software. Contohnya seperti pada gambar 3.3, gambar 3.4 dan gambar 3.5.

3.3.1 Pemodelan NPC

Pembuatan NPC yang digunakan pada aplikasi ini adalah untuk membedakan antara tentara belanda dan tentara Indonesia. Pada tentara belanda akan menggunakan pakaian berwarna hijau dengan celana panjang sedangkan pada tentara Indonesia menggunakan baju berwarna coklat baju safari dan menggunakan celana pendek. Contoh model ini diambil berdasarkan gambar yang telah ditelusuri.


(8)

Karacter 3D pada aplikasi ini dibuat menggunakan software Adobe Mixamo atau Adobe FUSE. Software ini sangat mudah digunakan dan praktis bagi orang yang tidak memiliki pengalaman untuk membuat karakter 3D. tampilan antarmuka Mixamo seperti yang ada pada gambar 3.7. Dengan menggunakan software Mixamo kita dapat menghemat waktu yang dibutuhkan untuk pembuatan NPC yang pada ukuran normal mungkin memakan waktu yang lama. Sedangkan untuk pembuatan karakter first person menggunakan prefab UFPS v.1.5.0. dari Asset Store sebagai prototype untuk menjalankan karakter utama dalam game ini.

Gambar 3.7 Tampilan Adobe FUSE 3.3.2 Pemodelan Environment

Linkungan virtual dibuat untuk menggambarkan bagaimana Letnan Amir Yahya bersama Timnya melakukan peperangan dengan belanda yang dimulai dari stasiun kereta api. Untuk mendukung ini peneliti menggunakan Game Engine (GE) sebagai platform pengembangan aplikasi.

Game Engine yang digunakan dalam penelitian ini adalah Unity3D Personal Edition versi 5.1.3f. Unity3D merupakan salah satu game engine software yang paling banyak digunakan saat ini. Unity3D dipilih karena compatibility yang lebih luas, platform


(9)

36

yang lebih beragam dan mendukung dua bahasa pemrograman, yaitu Javascript dan C# (Wang, et al. 2010).

Game Engine memiliki kemampuan untuk membangun landscape yang merepresentasikan lingkungan sekitar, misalnya pohon, rumput, sungai dan sebagainya dengan memanfaatkan objek terrain yang tersedia. Pengaturan terrain memungkinkan untuk mengatur kecepatan angin, tinggi rendahnya suatu permukaan, warna tekstur tanah dan sebagainya. Selain itu pengaturan lightning yang tepat akan memberikan kesan nyata. Sekitar 80% informasi yang dirasakan manusia berasal dari mata, maka persepsi visual merupakan faktor yang paling penting dalam lingkungan virtual yang dibangun. Lingkungan yang dibangun menjadi aspek terpenting dalam virtual reality dan harus memberikan immersive experience kepada pengguna. Sifat immersivity pada lingkungan virtual tersebut merupakan kunci agar pengguna dapat berinteraksi secara sempurna dengan dunia tersebut dan memungkinkan pengguna berimajinasi sehingga tidak menyadari lingkungan sebenarnya dalam dunia nyata.

3.3.2.1 Membangun Landscape

Unity3D dilengkapi dengan fitur asset store dimana terdapat cukup banyak asset gratis maupun berbayar yang dapat digunakan untuk membangun lingkungan virtual. Lingkungan virtual merupakan entitas menyeluruh dari landscape yang telah didesain sesuai dengan yang diinginkan. Landscape sendiri dibuat menggunakan fitur terrain yang ada pada Unity3D dan merujuk pada peta Tanjung Pura yang dibuat oleh pemerintah colonial Hindia Belanda seperti pada gambar 3.6. Adapun hasil dari pemodelan lingkungan virtual dapat dilihat pada gambar 3.8 untuk tampilan sesuai peta dan gambar 3.6 untuk lingkungan stasiun kereta api.

3.3.2.2 Pengaturan Cahaya (Lightning)

Pada penelitian ini, model pencahayaan yang digunakan ialah directional light yang berfungsi sebagai cahaya matahari dan point light yang berfungsi sebagai cahaya bola lampu. Agar lingkungan virtual yang dibangun tampak lebih nyata, maka harus ada minimal satu sumber cahaya agar mampu menimbulkan efek terang dan gelap beserta bayangan (shade).


(10)

Pencahayaan juga harus memperhatikan intensitas dari cahaya yang dihasilkan, karena intensitas cahaya yang tidak sesuai akan menyebabkan ketidaksesuaian warna pada model. Perbedaan intensitas cahaya dapat dilihat pada Gambar 3.9 dimana intensitas cahaya terlalu tinggi sehingga menyebabkan perubahan warna yang terlalu mencolok dan tidak sesuai dengan yang diinginkan.

Gambar 3.8 Lingkungan Virtual Stasiun Kereta api

Gambar 3.9 Intensitas cahaya yang terlalu tinggi atau terlalu rendah akan merusak realitas pada dunia virtual


(11)

38

3.3.2.3 Collision Detection

Collision Detection merupakan fitur pada game engine yang berguna untuk mendeteksi adanya benturan antar objek. Agar fitur ini aktif, sebuah collider harus ditambahkan pada sebuah objek. Collider merupakan sebuah mesh yang tidak dilihat dengan cara menonaktifkan fitur mesh renderer pada objek tersebut. Collider berfungsi sebagai trigger agar dua objek yang berbenturan (salah satunya objek aktif) dapat memberikan respon dan tidak dapat menembus objek tersebut. Pada gambar 3.10 dapat dilihat ilustrasi dari dua objek yang mengalami collision yang memiliki rectangle collider.

Gambar 3.10 Cara kerja Collision Detection

Pada Unity3D, Collider sendiri memiliki bentuk geometri seperti square, sphere, capsule atau mesh. Collider berbentuk square, sphere dan capsule memiliki bentuk geometri yang cukup sederhana, namun memiliki presisi collision detection yang rendah terhadap mesh yang memiliki bentuk geometri yang rumit. Namun ketiga jenis collider tersebut lebih ringan saat dijalankan oleh game engine. Sedangkan collider dengan bentuk sama dengan mesh, maka bentuk geometri dari collider tersebut mengikuti bentuk asli dari bentuk mesh sehingga memiliki presisi collision detection yang tinggi. Sebaliknya, collider jenis ini lebih banyak memakai sumber daya memory dan grafis pada komputer.

3.3.2.4 Penggunaan Player Controller

Setelah lingkungan virtual dibuat, maka selanjutnya perlu ditambahkan objek baru berupa player controller (PC). Fungsi PC disini ialah menjadi penerima input (sensor) dari pengguna sehingga pengguna dapat melakukan eksplorasi pada lingkungan virtual yang


(12)

dibangun. PC akan menerima input dari sensor seperti keyboard, mouse dan console. Pada penelitian ini saya akan menggunakan game assets UFPS dari Unity Asset Store yang memiliki kelengkapan yang dibutuhkan sebagai player controller.

3.3.2.5 Camera

Kamera Unity adalah sebuah game object pada Hierarchy dan ditunjukkan pada jendela scene secara otomatis. Pada kamera game menunjukkan area yang tampak pada screen, yang mana kamera menunjukkan tinggi dan lebarnya jarak pandang, juga mengatur kedalaman. Bentuk ukuran pandangan bisa di atur ke orthographic atau perspective. Pandangan ini dibuat dari posisi mata yang mana bisa dibayangkan dengan lokasi penonton pada bentuk tiga dimensi.

Unity di ilustrasikan pada gambar 3.11. Kamera perspective digunakan pada gambar 3.11a. cara terbaik untuk menunjukkan proyeksi perspective adalah dengan menunjukkan kedalaman dari garis bangunan yang semakin mengecil di kejauhan dan semakin menghilang. Ini tidak berlaku untuk kamera orthographic pada gambar 3.11b. Depth hanya bisa ditentukan oleh objek yang didepannya. Bangunan seperti tampak rata, karena disana tidak ada perbedaan ukuran antara jarak bangunan. Gambar 3.11c dan 3.11d mengilustrasikan pendekatan yang mana volume view dari kamera di tentukan dalam Jendela Scene. Jika object tidak di tempatkan didalam volume view dari kamera pada Scene, maka tidak akan terlihat pada layar game. Gambar 3.11 adalah gambar 3D game scene di Unity menggunakan kamera perspective (a) dan kamera orthographic (b). bentuk klipping yang meruncing menunjukkan menggunakan kamera perspective (c). bentuk klipping yang berbentuk kubing menunjukkan menggunakan kamera orthographic pada scene.

3.3.2.6 Terrain Editor

Salah satu fitur umum pada game engine adalah terrain editor. Tidak hanya pengguna bisa membentuk idenya, tetapi mereka bisa mengembangkannya dengan flora dari rumput sampai semak hutan melalui tekstur paint. Unity menyediakan segala kemudahan pada terrain editor. Di terrain editor, bermacam-macam objek bisa dibuat dan dikembangkan,


(13)

40

seperti LOD (level of detail), jarak, culling, dan animasi. Meskipun ini membuatnya menjadi sangat mudah untuk mengatur dan mengembangkan sebuah terrain, dengan berbagai fitur-fiturnya, juga ada limitnya. Untuk mendapatkan informasi yang lebih mendalam tentang tree generator, harus menggunakan referensi manual, kemudian cari panduan terrain engine.

Sebuah objek terrain bisa dibuat pada scene antara Hierarchy dan Project views dengan posisi 0,0,0 ketika pengguna membuat terrain button. Pada Inspector, ketika objek terrain di pilih pada Hierarchy, pengguna akan melihat properties dan tools yang digunakan untuk mengembangkannya, seperti pada gambar 3.12. Posisi, rotasi dan scale akan di set pada Transform section, dan disini nilai defaultnya adalah ok. Tools pada Terrain (Script) adalah tools utama untuk membuat terrain. Sebagai contohnya, pengguna bisa menggunakan tombol pertama untuk membuat gunung dengan beragam ketinggian dan tombol keempat untuk membuat pohon, bush, atau rumput. Pada umumnya, terrain editor adalah salah satu terbesar pada Unity3D.

Gambar 3.11 kamera perspective di Unity3D. di copy dari Penny de Byl (2013)[1,194]


(14)

Gambar 3.12 Terrain Tools pada Inspector (Peng, 2014) 3.3.2.7 Skybox

Metode paling umum adalah membuat langit dengan texture awan dan cuaca dengan mengimport skybox. Sebenarnya ini adalah sebuah cube (kubus) yang ditempatkan terbalik pada main camera dengan gambar langit yang di render. Karena hanya enam planes dan enam texture yang dibutuhkan, ini adalah cara yang relatif hemat biaya untuk menampilkan visual langit yang meyakinkan. Enam texture telah ditentukan posisi mereka pada kubus : atas, bawah, depan, belakang, kiri, dan kanan, sebuah contoh skybox pada gambar 3.13. Unity menyediakan berbagai skyboxes. Untuk menggunakannya, paket skybox harus di import dengan mengklik kanan Asset > Import Package > Skyboxes. Untuk mengimplementasikan sebuah skybox ke ga me, pilih objek Main Camera pada Hierarchy dan temukan lokasi komponen kamera di Inspector, kemudian atur nilai Clear


(15)

42

Flags pada Skybox. Akhirnya mengembalikannya ke main menu dan pilih Edit > Render Settings, kemudian pengguna bisa memilih material skybox yang mana akan digunakan pada Inspector. Pada game, default material skybox tidak ada.

Gambar 3.13 Enam texture digunakan untuk membuat sebuah Skybox 3.3.2.8 Clouds

Dynamic fog (kabus dinamis) adalah teknik yang lebih kompleks daripada prefabricated fog (kabut prefabrikasi). Bagaimanapun kabut standar yang diterapkan pada komputer grafis memerlukan efek fade out disegala asset 3D seperti terrain, prefabs dalam scene, kabut volumetrik termasuk dalam ruang 3D. ini membutuhkan lebih banyak processor daripada render. Namun, ini tidak jadi masalah pada console dan mesin desktop sekarang ini. Jenis efek-efek alami yang dapat diselesaikan dengan kabut volumetrik berisi awan gelap, debu, dan kabut. Pemain dapat melihat awan setiap kali dia melihat ke atas.


(16)

3.4 Game Logic

Game logic pada game ini menggunakan metode finite state machine pada non-player character yang berperan sebagai musuh dan sekutu. Tugas mereka adalah untuk membunuh player atau team yang bersama player. Game logic dibuat berdasarkan alur dasar permainan. Untuk penjelasan lebih detail dapat dilihat pada sub-bab alur dasar permainan sebagai berikut.

3.4.1 Alur Dasar Permainan

Alur permainan dimulai dengan pemain memilih play pada menu interface, ketika sudah berada didalam game player akan melihat Lettu Lidan Syam sebagai npc yang barking (bersorak), player mendekati npc tersebut terus menekan tombol “F” yang diarahkan ke npc dan muncullah kotak dialog pilih next dan next untuk mendapatkan misi. Setelah muncul popup misson player tekan “ESC” dan pilih menu “Quest” terus track quest tersebut. Dikatakan harus membunuh 5 tentara belanda. Setelah membunuh tentara belanda, maka player harus menemui Lettu Lidan Syam kembali dan melaporkan bahwa misi telah selesai baru bisa melanjutkan ke scene selanjutnya. Pada scene kedua player akan bertemu Letnan Amir Yahya dan bercerita, setelah selesai player diharuskan memukul mundur pasukan belanda sampai melewati jembatan stabat. Berakhirlah scene pada game ini dan akan kembali ke main menu.

3.4.2 Implementasi Finite State Machine

Pada bab sebelumnya telah dijelaskan tentang State dalam FSM. Pada penelitian ini script yang akan digunakan sebagai otak dari semua aktivitas yang dilakukan oleh AI ialah FPSBrain.cs. Ketika di Play, awalnya musuh akan berpatroli sesuai dengan waypoint yang telah ditentukan. Bila musuh melihat player yang mendekat dia akan mengejar sampai distance minimum yang ditentukan jaraknya dan engage (menembak) ke player sampai player memiliki darah 0% dan musuh kembali ke state normal bisa diam ataupun patrol kembali. Kode program seperti berikut:


(17)

44

3.5 Antarmuka Pengguna (User Interface)

Pada tahap ini akan dirancang tampilan antarmuka dari game Pertempuran Stabat. Perancangan tampilan antarmuka pengguna merupakan perancangan tata letak dari tampilan aplikasi yang akan dibangun. Desain antarmuka pengguna harus mempertimbangkan beberapa aspek. Salah satu aspek terpenting dari desain antarmuka pengguna ialah kenyamanan pengguna dan tingkat kemudahan pemakaian antarmuka yang bersifat user friendly. Pentingnya unsur kemudahan dalam pemakaian (user friendly) dikarenakan tujuan dari adanya tampilan antarmuka pengguna ialah untuk memudahkan pengguna dalam menggunakan aplikasi. Bagaimana aplikasi bisa dijalankan dengan mudah oleh pengguna yang sama sekali belum pernah menjalankan aplikasi tersebut menjadi faktor penting dalam desain antarmuka pengguna. Flowchart User Interface dapat dilihat pada gambar 3.14

ControlState(){

if(CurrenStatePatrol && CanEngage == true){

investigate();

}

if(CurrenStateInvestigate && canSeeEnemy == true){

activateEngagementScript();

}

if(CurrenStateInvestigate){

investigate += 1;

if(investigateTicks >= investigateTickToBreakoff){

CurrentStatePatrol;


(18)

Gambar 3.14 Flowchart sistem aplikasi game

Pada saat memulai game player akan dihadapkan pada interface Main Menu game dimana terdapat Play, Options dan Quit. Jika player memilih Play maka sistem akan meneruskan ke perintah selanjutnya untuk meloading asset, loading asset digunakan sebagai petunjuk bahwa game sedang berjalan. Setelah selesai, komputer membutuhkan input dari player untuk bergerak maju dan mundur serta menembak didalam game. Pada menu Options terdapat pilihan untuk mengatur musik dan resolusi layar yang dapat disesuaikan oleh player. Dari submenu setting musik player dapat kembali ke menu utama dengan menekan tombol back. Terakhir adalah Quit sebagai menu untuk berhenti bermain game dan sistem berakhir.


(19)

46

3.5.1 Tampilan Menu Utama

Pada halaman Menu utama, terdapat tiga Menu utama. Menu-menu tersebut ditampilan dalam sebuah tombol (button). Menu-menu utama tersebut ialah , tombol Play, tombol Options, dan tombol Quit. Sedangkan tombol Options ketika ditekan maka akan menampilkan sub menu, yaitu untuk mengatur Volume Music dan Ukuran dari resolusi yang digunakan. Tampilan menu utama dapat dilihat pada gambar 3.15.

Gambar 3.15 Desain Tampilan Antarmuka Pengguna Menu Utama 3.5.2 Tampilan Loading Screen

Tampilan Loading Screen merupakan tampilan yang menjadi perantara antara menu dengan game seperti gambar 3.16. Hal ini diperlukan karena aplikasi yang cukup membutuhkan sumber daya yang banyak sehingga membutuhkan waktu yang lama untuk mempersiapkan asset yang ada. Apabila tidak ada Loading Screen, kesan yang muncul oleh pengguna ialah aplikasi tidak merespon atau biasa disebut hang.


(20)

(21)

BAB 4

IMPLEMENTASI DAN PENGUJIAN

Bab ini membahas implementasi dan pengujian sistem sesuai dengan analisis dan perancangan sistem pada Bab 3. Penjelasan tentang implementasi sistem dilakukan untuk mengetahui hasil rancangan aplikasi dan pengujian untuk membuktikan jika aplikasi dapat berjalan dengan baik.

4.1 Implementasi Sistem

Implementasi aplikasi game sejarah ini dibuat menggunakan Unity dalam Bahasa pemrograman C# dengan menggunakan Integrated Development Environment (IDE) MonoDevelop Versi 5.9.6. Penulis memilih menggunakan Unity dikarenakan unity memiliki banyak fitur yang lengkap untuk membuat game 3D dan gratis.

4.1.1 Konfigurasi Perangkat Keras

Untuk menjalankan game pada komputer ataupun laptop, kebutuhan perangkat keras yang digunakan cukup tinggi, terutama processor, RAM dan Kartu Grafis. Agar pengujian dapat berjalan dengan baik, penelitian ini menggunakan komputer notebook Asus K43S dengan spesifikasi perangkat keras yang dapat dilihat pada tabel. 4.1.

4.1.2 Konfiguras perangkat lunak yang digunakan

Konfigurasi perangkat lunak yang digunakan pada penelitian ini, baik saat proses implentasi maupun pengujian dapat dilihat pada tabel 4.2.


(22)

Tabel 4.1 Konfigurasi perangkat keras yang digunakan

No. Jenis Komponen Komponen yang digunakan

1. Processor Intel® Core™ i3-2330M CPU @2.20GHz (4CPUs), ~2.2GHz

2. Memory 4096MB RAM

3. Kartu Grafis Intel® HD Graphics 3000

4. Storage 500 GB Hitachi

5. Resolusi Layar 1366 x 768 (32bit) (60Hz)

Tabel 4.2. Konfigurasi perangkat lunak yang digunakan

No. Jenis Software Software yang digunakan

1. Sistem Operasi Microsoft® Windows 7 Ultimate 64bit 2. Modelling Tools SketchUp dan Adobe

3. Game Engine Unity 3D v5.1.2f

4.1.3 File Asset

File asset adalah berkas file yang digunakan dalam implementasi aplikasi ini. Berkas file terdiri dari FBX objek bangunan dan objek karakter, gambar dan Suara. Berkas file FBX dibuat menggunakan Sketchup dan Adobe Fuse kemudian di ekspor menjadi tujuh file. Keseluruhan berkas file dapat dilihat pada gambar 4.1 sebagai berikut. Sedangkan untuk berkas file suara, aplikasi ini menggunakan dua file suara yaitu CallofDutyWorldAtWar.mp3 dan CoD WaW.mp3 diambil dari youtube soundtrack dari Call of Duty.


(23)

50

Gambar 4.1 Berkas File pada Folder Project Unity 4.1.4 Eksekusi Aplikasi

Berikut akan di jelaskan hasil eksekusi aplikasi game fps yang dijalankan pada laptop Asus K43S. Penjelasan dimulai dari awal aplikasi yang dapat dilihat pada gambar 4.2.

Gambar 4.2 Tampilan awal game

Secara otomatis audio akan menyala dan musik akan diputar. Pemain dapat memilih untuk mematikan suara dengan memilih menu “Option” dan atur volume,


(24)

terdapat setting resolusi gambar juga pada sub menu “Option”. Untuk langsung keluar player bisa memilih menu “Quit” dan programpun akan terhenti. Untuk memulai game player bisa memilih menu “Play”. Setelah itu akan muncul tampilan loading screen seperti tampak pada gambar 4.3 berikut.

Gambar 4.3 Tampilan Loading Screen

Pada halaman ini Unity sedang loading asset yang dibutuhkan untuk gameplay. Tampilan loading screen ini dibutuhkan karena agar player mengetahui bahwa aplikasi sedang bekerja. Setelah tampilan loading screen selesai maka tampilan selanjutnya adalah tampilan dalam game seperti pada gambar 4.4 berikut.


(25)

52

Penjelasan penomoran pada gambar 4.4 adalah sebagai berikut : 1. Health Point (Darah) Player

2. Jumlah ammo

Gambar 4.5 Pause pada saat ingame

Pada gambar 4.5 adalah tampilan pada saat Pause ingame. Menu menggunakan File dari Asset Store yaitu Dialogue System for Unity v1.5.8 sebagai prototipe. Penjelasan nomor pada gambar 4.5 adalah sebagai berikut :

1. Quest Log

Berisikan submenu untuk Tracking Quest atau misi pada saat bermain. 2. Save Game


(26)

3. Load Game

Submenu untuk meload game yang telah disave sebelumnya. 4. Clear Saved Game

Submenu untuk menghapus file save. 5. Restart Game

Submenu untuk merestart game dan kembali ke awal menu pada game. 6. Close Menu

Submenu untuk menutup tampilan pause.

Tampilan pada saat player kehabisan HP (Health Points) pada gambar 4.6 adalah dimana player memiliki darah 0% atau dibawah 0%.


(27)

54

4.2 Pengujian Sistem

Pada bagian ini akan dijelaskan pengujian terhadap aplikasi game fps. Penjelasan ini dibagi atas uji metode, uji antarmuka dan uji sistem.

4.2.1. Uji Metode

Pengujian perlu dilakukan untuk menilai seberapa baik kerja metode yang digunakan pada suatu system. Bila metode yang digunakan tidak bekerja sesuai kebutuhan maka perlu diselidiki lebih lanjut mengenai faktor yang mempengaruhi terjadinya kendala tersebut. Metode yang diuji pada tahap ini adalah metode npc untuk Patrol dan Engage (menembak) ketika melihat musuh, bila musuh sudah tidak ada npc akan kembali ke mode diam atau patrol kembali. Pada gambar 4.7 npc sedang berpatroli. Tanda panah merah menandakan npc menuju waypoint yang telah ditentukan.


(28)

Ketika npc berhasil membuat player kehabisan HP, player akan kembali ke posisi awal dalam game dan npc yang masih hidup akan kembali berpatroli kembali berdasarkan waypoint yang telah ditentukan. Seperti yang terlihat pada gambar 4.8 berikut npc yang masih hidup adalah satu ketika player telah kehabisan HP. Npc melakukan patroli kembali seperti sebelum player datang sesuai dengan waypoint yang telah ditentukan pada npc tersebut. Ini salah satu kekurangan dari game ini, npc tidak dapat maju untuk mendorong atau memperbesar daerah jangkauan patrolinya. Jadi npc hanya dapat kembali ke waypoint yang ditentukan tanpa ada perubahan arah patrolinya.

Gambar 4.8 Npc kembali berpatroli 4.2.2 Uji Antarmuka

Pengujian antarmuka game fps ini dilakukan dengan cara pengisian kuesioner yang dilakukan secara tertulis oleh 20 orang mahasiswa teknologi informasi. Pengujian ini


(29)

56

dilakukan untuk mengetahui apakah permainan yang dibuat layak atau tidak untuk dimainkan dalam notebook. Untuk kategori pemberian nilai dapat dilihat pada Tabel 4.3 dan hasil dari evaluasi antarmuka aplikasi yang diperoleh dapat dilihat apda Tabel 4.4.

Tabel 4.3. Kategori pemberian nilai No. Alternatif Jawaban Bobot Nilai

1. Sangat Baik 5

2. Baik 4

3. Cukup 3

4. Buruk 2

5. Sangat Buruk 1

Tabel 4.4. Uji antarmuka aplikasi No. Sasaran Penilaian

Hasil Penilaian Sangat

Baik Baik Cukup Buruk

Sangat Buruk 1. Desain aplikasi secara umum 4 15 1 - -

2. Tampilan FPS 2 18 - - -

3. Menu 3 14 3 - -

4. Tampilan animasi permainan 2 15 3 - -

5. HUD 1 16 3 - -

6. Audio 1 16 3 - -

Sk = (f/N) * Ik ……….………...(4,3) Keterangan :

Sk : Nilai untuk setiap k (k = sangat baik, baik, cukup, buruk dan sangat buruk) f : Total respon dalam k.

N : Jumlah responden. Ik : Nilai k.


(30)

Hasil Penilaian :

1. Desain aplikasi secara umum : nilai sama dengan 4,5. 2. Tampilan FPS : nilai sama dengan 4,1.

3. Menu : nilai sama dengan 4.

4. Tampilan animasi permainan : nilai sama dengan 3,7.

5. HUD : nilai sama dengan 3,9.

6. Audio game : nilai sama dengan 3,9.

Nilai total keseluruhan dari aspek antarmuka dihitung dengan menggunakan Rumus (4,4) berikut.

Stotal = ∑ Sk/n ……….………..(4,4) Keterangan :

Stotal : Nilai untuk keseluruhan penilaian. n : Jumlah sasaran penilaian.

Maka diperoleh nilai keseluruhan dari aspek antarmuka sebagai berikut : Stotal = 4,15 + 4,1 + 4 + 3,7 + 3,9 + 3,9 / 6

= 3,93

Dari nilai keseluruhan didapatkan nilai 3.93 maka dapat disimpulkan bahwa hasil penelitian pengguna terhadap aspek antarmuka aplikasi game fps adalah Cukup.

4.2.3 Uji Sistem

Penulis melakukan uji coba pada sistem untuk melihat berapa Frame per Second (FPS) dari aplikasi game fps ini apakah terlihat mulus di mata player sesuai dengan minimal frame yang layak buat game yang dimainkan. Dapat dilihat pada Gambar 4.9.


(31)

58

Gambar 4.9 Frame per Second game Berikut penjelasan pada Gambar 4.9 :

1. Statistic

Dapat dilihat statistic pada game tersebut bahwa Frame per Second dari game adalah 15 FPS yang dapat dikatakan rendah. Karena minimal FPS untuk game adalah 30 FPS agar terlihat mulus di mata player. Tris dan Verts yang sangat besar membuat proses rendering game ini memakan banyak memori sehingga fps yang dihasilkan juga rendah.

Pada Unity terdapat Profiler window yang membantu mengoptimalkan game. Profiler akan memberitahu, penulis berapa banyak waktu yang dihabiskan berbagai bidang pada game ini. Sebagai contoh profiler akan memberitahu persentase waktu yang dihabiskan untuk rendering, animasi atau dalam game logic. Penulis dapat bermain game di Editor ketika profiler di aktifkan, dan profiler akan merekam data kinerja. Profiler window


(32)

kemudian menampilkan data dalam kerangka waktu, sehingga penulis dapat melihat frame atau daerah spike (menghabiskan banyak waktu) daripada yang lain. Dengan mengklik dimana saja di timeline, bagian bawah profiler window akan menampilkan informasi rinci untuk frame yang dipilih seperti pada Gambar 4.10. terlihat proses rendering meningkat drastis ketika player mulai berjalan hingga menyentuh 15 FPS. Rendering adalah proses data pada kamera di unity untuk memilah layer yang dapat dilihat oleh kamera atau karakter didalam game dalam bentuk visual.

Gambar 4.10 Profiler window unity

Dapat diambil kesimpulan bahwa game ini membutuhkan kartu grafis yang sedikit lebih tinggi dari kartu grafis yang penulis gunakan untuk mendapatkan hasil yang lebih bagus. Namum, dengan FPS yang penulis dapat ketika digunakan pada hardware ini masih dapat dibilang bagus untuk kualitas 3D yang memang memakan banyak memory dan kartu grafis.


(33)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Berdasarkan pembahasan dan evaluasi dari bab-bab terdahulu, maka dapat diambil kesimpulan sebagai berikut :

1. Sumber informasi tentang perang distabat ini sangat terbatas, sehingga pembuatan Model 3D bangunan dan Landscape yang dibuat hanya berdasarkan pada gambar yang ada.

2. Cerita sejarah pada penelitian hanya pada suatu event war yang terjadi untuk memperebutkan stabat, sehingga kelanjutan dari ceritanya tidak dimuat dan hanya berdasarkan buku sejarah yang sangat singkat.

3. Pada saat dimainkan Game ini memiliki frame rate (fps) sekitar 15, dikarenakan membutuhkan kartu grafis yang lebih tinggi.

4. Melalui game kita dapat memberikan gambaran visual Sejarah yang terjadi di sekitar kita.


(34)

5.2 Saran

Beberapa saran yang dapat menjadi pertimbangan dalam penelitian selanjutnya adalah : 1. Penyederhanaan proses pemodelan 3D, sehingga rendering lebih optimal dengan

memanfaatkan tekstur yang lebih nyata.

2. Menambahkan lebih banyak lagi scene untuk cerita sejarah tentang Sumatera Utara.

3. Penambahan Fitur NPC sebagai masyarakat yang sedang beraktifitas dengan memanfaatkan Artificial Inteligence (AI).


(35)

BAB 2

LANDASAN TEORI

2.1. Sejarah singkat perang merebut Stabat

(TWH, 2007) Setelah terbentuknya kesatuan-kesatuan lasykar dan TKR (Tentara keamanan Rakyat) maka kebutuhan senjata makin mendesak. Sasaran yang dilakukan adalah melakukan penyerobotan gudang senjata Angkatan Udara Jepang di Marindal tanggal 25 November 1945. Pengawal gudang diikat kemudian isi gudang baik senjata serta peti-peti peluru dan bahan makanan maupun tekstil diangkut sampai jauh malam. Kawasan paling barat yaitu lokngha (Aceh) merupakan pertahanan jepang yang paling utama. Di sanalah bertumpu berbagai jenis senjata berat untuk menghadapi sekutu. Begitu jepang kalah, kemerdekaan di proklamirkan, tidak kurang 5000 rakyat dan lasykar ditambah satu Kompi Angkatan Pemuda Indonesia (API) di bawah pimpinan Syaman Gaharu tanggal 1 Desember 1945, selama beberapa hari mengepung dan mengurung pasukan jepang. Kemudian terjadi pertempuran dari pukul 9.00 pagi hingga siang. Residen Teuku Nyak Arif, wakil resien T.M.Ali Panglima Polim, ketua Pemuda Republik Indonesia A.Hasjmy mengadakan pembicaraan dengan jepang untuk menghentikan pertempuran. Kemudian diadakan perundingan di antara point yang dituntut adalah pangkalan Lhoknga harus diserahkan kepada pejuang. Seluruh tentara jepang dipindahkan ke blang bintang. Setelah itu, Sejarah perang di stabat melawan belanda padah tahun 1947 ini tidak banyak diketahui oleh banyak orang. Untuk itu dibuatlah sarana untuk menyampaikan cerita sejarah ini ke dalam bentuk game. Pada saat itu binjai dan stabat telah direbut belanda. Pasukan Indonesia berada di tanjung pura. Hari itu awal agustus


(36)

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.

Dalam pertempuran itu, posisi Lettu Lidan Syam dan Letnan Amir Yahya paling depan. Mereka selalu berdekatan paling jauh jarak mereka hanya 6 meter. Pasukan Lidan Syam telah naik ke jembatan, bahkan 2/3 jembatan dikuasai. Pertempuran itu baru berjalan setengah jam. Kelihatan ada tanda-tanda belanda mulai meninggalkan kubu pertahanannya. Tapi apa boleh buat,”mujur saja tak dapat diraih, malang tak dapat ditolak”. Sebuah peluru mortir jatuh di tempat Lettu Lidan Syam dan Letnan Amir Yahya. Lidan Syam yang baru pertama kali terlibat dalam pertempuran seru mengalami luka berat terkena pecahan peluru. Sedangkan Letnan Amir Yahya juga mengalami luka di paha bagian belakang. Ketika peluru mortir meledak antara mereka terdengar suara teriakan Lettu Lidan Syam. Menyadari kedua orang pimpinan pasukan yang memimpin pasukan itu terkena ledakan, anak buah dari pasukan tersebut berusaha menarik keduanya dari ajang pertempuran untuk diberi pertolongan. Perlahan-lahan Letnan Amir Yahya dapat ditarik ke tempat yang lebih aman dan segera diberi perawatan sementara. Sedangkan, Lettu Lidan Syam yang bobot badannya terlalu berat, kira-kira 90-100 kg sangat sulit untuk ditarik ke lokasi yang lebih aman. Karena mengalami luka parah dan sangat banyak mengeluarkan darah, menyebabkan Lidan Syam gugur sebagai kusuma bangsa. Saat itu yang berusaha menggendong Letnan Amir Yahya dan membawanya ke luar dari area pertempuran adalah Letnan Bustanil Arifin (mantan Menteri Koperasi Ka.Bulog), yang pada malam itu rupanya juga turut bertempur merebut stabat. Mereka yang diterluka dibawa ke Rumah Sakit Langsa (Aceh Timur) yang lokasinya jauh dari pertempuran dan disana terdapat tenaga medis yang ahli dalam bidangnya. Langsa merupakan basis bagi para pejuang dalam mempertahankan kemerdekaan.


(37)

9

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

(Peng,2014) Dalam 2D , vektor memiliki x dan y koordinat. Tapi dalam 3D, ada x, y, dan z koordinat. Dalam sistem matematika mutlak, sebuah vektor tidak hanya sebuah titik pada latar, tetapi juga sekumpulan perintah koordinasi yang dinamis. Ada sebuah legenda yang akan di tampilkan untuk memahami vektor. Sebuah peta harta karun legendaris dibuat, dan kapal kargo berhenti dititik (4,8) yang disebut start. Sebagai contoh, para pelaut mengambil tiga langkah ke timur dan tujuh langkah ke selatan. Seperti ditunjukan dalam Gambar 2.1, para pelaut bergerak tiga langkah ke timur dan digambarkan vektor (3,0), yang berarti berpindah 3 dalam arah x positif. Kemudian para pelaut mengambil tujuh langkah ke selatan bisa digambarkan vektor (0,-7). Yang berarti berpindah 7 ke arah y negatif dan 0 ke arah y. Untuk menentukan lokasi terakhir, vektor x dan y ditambahkan ke titik awal x dan y. sebagai contoh, pada gambar 2.1, kapal kargo dititik (4,8) dan pelaut berpindah positif tiga x positif, yang akan menempatkan mereka di titik (7,8). Kemudian mereka berpindah dikurangi tujuh y-axis, yang akan menempatkan mereka di (7,1). Sebenarnya, mereka juga dapat tiba di titik yang sama dengan mengambil jalan pintas, dengan kata lain, mereka dapat berjalan langsung dalam garis lurus antara titik awal dan harta karun itu. Dalam kasus ini, dua vektor (3,0) dan (0,-7) harus digabungkan bersama-sama dan hasilnya adalah (3,-7). Dengan menggunakan vektor baru ini dan berangkat dari lokasi awal, mereka akan sampai pada lokasi yang sama di titik (7,1).


(38)

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.


(39)

11

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)

Di Unity, Vector2 dan Vector3 adalah kelas yang umumnya digunakan. Posisi, rotasi, dan nilai skala game object disimpan sebagai Vector3. Informasi vektor 2D disimpan sebagai Vektor2. Vektor dari game object untuk sumbu x, y, dan z dapat dikontrol dengan kode pemrograman Vector3.left, Vector3.up, dan Vector3.forward masing-masing. Pengguna dapat menggerakkan game object kesegala arah tanpa kode dan orientasi.


(40)

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.

Bi-dimensional (ruang dua dimensi) adalah model geometrik dari proyeksi planar fisik alam semesta dimana kita hidup. Dua dimensi biasanya disebut panjang dan lebar. Keduanya terletak pada latar yang sama. Untuk menganalisis kasus 2D, seperti yang ditunjukkan pada gambar 2.3, bahwa dari contoh flatland klasik, dimana seseorang hidup dialam semester 2D dan hanya mengetahui dua dimensi (ditampilkan sebagai grid bir), atau bidang datar, katakanlah arah x dan y. orang seperti itu tidak pernah bisa membayangkan arti tinggi dalam arah z, sehingga dia tidak dapat melihat ke atas atau ke bawah, dan melihat orang lain sebagai bentuk 2D pada permukaan datar ia tinggal. Ruang Tiga Dimensi adalah model model geometrik tiga parameter dari fisik alam semesta (tanpa mempertimbangkan waktu) dimana semua materi yang dikenal ada. Tiga dimensi ini bisa dilabel sebagai kombinasi dari tiga yang dipilih dari istilah panjang, lebar, tinggi, kedalaman, dan keluasan, dengan kata lain, biasanya diberi label x, y, dan z. tiga arah apapun dapat dipilih, asalkan itu semua tidak terletak pada latar 3yang sama. Dalam matematika dan fisika, urutan angka n dapat dimengerti sebagai lokasi ruang n-dimensi. Ketika n=3, himpunan semua lokasi tersebut disebut ruang 3-dimensi Euclidean. Hal ini


(41)

13

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 :

Gameobject.transform.position.x +=5; Gameobject.transform.position.y +=9; Gameobject.transform.position.z +=14; Atau


(42)

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)

Harus diketahui bahwa nilai-nilai untuk skala selalu dikalikan terhadap ukuran dasar dari game object. Oleh karena itu, tidak dapat membuat skala nol. Jika desainer ingin membalik sebuah objek, nilai skala negatif dapat digunakan. Misalnya, mengatur skala


(43)

15

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.


(44)

(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

(Bevilacqua, 2013) Finite State Machine (FSM) adalah model yang digunakan untuk menggambarkan dan mengatur aliran eksekusi yang biasanya digunakan untuk program komputer dan urutan logika sirkuit. Hal ini cocok diterapkan terhadap AI pada game, memproduksi hasil yang bagus tanpa kode yang kompleks. (Warden, 2012) Untuk pemrograman AI, penulis memiliki pilihan deterministic atau non-deterministic. Kebanyakan video game memiliki deterministic. Berarti anda tahu bagaimana musuh akan bereaksi berdasarkan masukan yang berbeda. Jika mereka akan menyerang. Jika anda bersembunyi dan menunggu, mereka akan menyerang anda. FSM pendeknya adalah model komputasi yang berbasis pada mesin hipotesis yang terbuat dari satu atau banyak state. FSM biasanya digunakan untuk mengatur dan menggambarkan aliran eksekusi yang berguna diterapkan pada game. “Otak” dari musuh, misalnya bisa diimplementasikan menggunakan FSM setiap state merupakan suatu tindakan, seperti attack atau evade. FSM dapat digambarkan dengan grafik, dimana node adalah state dan ujung-ujungnya adalah transisi. Setiap sisi memiliki label yang menginformasikan ketika transisi terjadi, seperti player is near pada gambar 2.5, yang menunjukkan bahwa mesin akan beralih dari wander ke attack jika player is near.


(45)

17

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

(Bevilacqua, 2013) FSM dapat diimplementasikan dan dikemas dalam satu kelas, bernama FSM misalnya. Idenya adalah untuk menjalankan setiap state sebagai fungsi atau metode, menggunakan properti yang disebut activeState didalam kelas untuk menentukan state mana yang aktif. Karena setiap state adalah fungsi, selama fungsi state tertentu aktif mempresentasikan keadaan state tersebut akan dipanggil setiap membaharui game. Metode Update () pada FSM harus dipanggil setiap game frame, sehingga dapat memanggil fungsi yang ditunjukkan oleh properti activeState. Panggilan yang akan memperbaharui tindakan dari state yang sedang aktif. Metode setState () akan mentransisikan FSM ke state yang baru dengan mengarahkan properti activeState untuk fungsi state baru. Fungsi state tidak harus menjadi anggota FSM, bisa saja menjadi kelas lain, yang mana membuat kelas FSM lebih umum dan dapat digunakan kembali.


(46)

Gambar 2.6 Menggambarkan Otak dari semut (Bevilacqua, 2013)

Gambar 2.7 FSM menggambarkan otak dari semut. Perhatikan kurangnya transisi antara run away dan go home (Bevilacqua, 2013)


(47)

19

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(); } }

}

Menggunakan kelas FSM yang telah dijelaskan sebelumnya, saatnya untuk menerapkan “brain” karakternya. Pada penjelasan sebelumnya semut digunakan dan dikendalikan dengan FSM. Pada Gambar 2.8 adalah gambaran dari state dan transisi, fokus pada kodenya. Semut direpresentasikan dengan class Ant, yang memiliki properti bernama otak dan metode untuk tiap state. Properti brain adalah turunan dari kelas FSM :


(48)

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. */


(49)

21

}

/** 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 (); }

(….) }

Kelas Ant juga memiliki kecepatan dan properti posisi, keduanya digunakan untuk menghitung pergerakan dengan menggunakan integrasi Euler. Metode update ini dipanggil di setiap kerangka game, sehingga akan memperbaharui FSM. Dibawah ini penerapan tiap state, dimulai dengan findLeaf (), state bertanggung jawab untuk memandu semut ke posisi daun :


(50)

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.instance.leaf, this) <= 10) {

// semut sangat dekat dengan daun.inilah waktunya. // pulang.

brain.setState(goHome); }

if (distance(Game.mouse, this) <= MOUSE_THREAT_RADIUS) { // kursos mouse mengancam kita. Ayo lari !

// ini akan membuat brain mulai memanggil runAway() // sekarang.

brain.setState(runAway); }

}

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.


(51)

23

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); }

}

Hasilnya, semut akan dikendalikan oleh “brain” dari Finite State Machine. Bayangkan jika semut juga ingin lari dari kursor mouse ketika akan pulang. FSM dapat diperbaharui seperti pada gambar 2.9. Tampaknya adalah modifikasi yang sepele, penambahan transisi baru, tetapi ini menimbulkan masalah. Jika state run away dan kursor mouse tidak lagi mendekat, state apa yang seharusnya semut transisikan ke go home atau find leaf. Solusi dari masalah itu adalah dengan menggunakan Stack-based FSM. Tidak seperti FSM yang ada, Stack-based FSM menggunakan tumpukan untuk mengontrol state-state. Bagian atas tumpukan berisi state yang aktif, transisi ditangani dengan mendorong atau state muncul ke atas dari tumpukan. State bisa muncul ke atas dengan sendirinya dari tumpukan itu dan mendorong state yang lain, yang berarti transisi penuh (seperti FSM yang sederhana). State bisa muncul ke atas dengan sendirinya dari tumpukan yang berarti state saat ini telah selesai dan state selanjutnya di dalam tumpukan akan segera aktif. Pada akhirnya, itu akan mendorong state yang baru, yang artinya state aktif akan berubah untuk sementara waktu, tapi ketika state itu muncul lagi dari tumpukan, maka state aktif yang sebelumnya akan mengambil alih lagi.


(52)

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(); }


(53)

25

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; }

}

Metode setState () telah diganti dengan dua metode baru : pushState () dan popState (). pushState () menambahkan dua state baru ke atas tumpukan, sementara popState () menghapus state yang di atas tumpukan. Kedua metode ini secara otomatis mentransisikan mesinnya ke state yang baru, karena state yang di atas tumpukan telah berganti.Ketika menggunakan Stack-based FSM, yang menjadi catatan penting adalah bahwa setiap state bertanggung jawab muncul dari tumpukan. Biasanya state menghapus dirinya sendiri dari tumpukan ketika sudah tidak diperlukan lagi, seperti jika attack () aktif tapi targetnya baru saja mati. Menggunakan contoh semut, hanya beberapa perubahan yang diperlukan untuk menyesuaikan kode untuk digunakan pada Stack-based fsm. Masalah tidak tahu kemana state akan transisi sekarang sudah dapat diselesaikan berkat sifat dari Stack-based FSM. Hasilnya adalah seekor semut dapat melarikan diri dari kursor mouse, transisi kembali ke keadaan state aktif sebelum ancaman.


(54)

public class Ant { (...)

public var brain :StackFSM;

public function Ant(posX :Number, posY :Number) { (...)

brain = new StackFSM();

// beritahukan brain untuk mencari daun. brain.pushState(findLeaf); (...) } /**

* state "findLeaf".

* membuat semut mendekati daun. */

public function findLeaf() :void { //gerakkan semut mendekati daun.

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

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

// semut sudah sangat dekat dengan daun.ini waktunya! // pulang.

brain.popState(); // memindahkan "findLeaf" dari tumpukan.

brain.pushState(goHome); // mendorong state "goHome" , membuatnya menjadi state aktif.


(55)

27

if (distance(Game.mouse, this) <= MOUSE_THREAT_RADIUS) { // kursor mouse mengancam kita. Ayo lari!

// state "runAway" didorong keatas "findLeaf", yang artinya

// state "findLeaf" akan aktif kembali ketika state"runAway" berakhir.

brain.pushState(runAway); }

}

/**

* state "goHome".

*membuat semua menuju ke rumah. */

public function goHome() :void {

// gerakkan 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.

brain.popState(); // pindahkan state “goHome” dari tumpukan.

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

if (distance(Game.mouse, this) <= MOUSE_THREAT_RADIUS) { // kursor mouse mengancam kita. Ayo lari!

// state "runAway" terdorong diatas "goHome", yang artinya

// state"goHome" yang akan aktif lagi ketika state "runAway" berakhir.

brain.pushState(runAway); }


(56)

} /**

* state "runAway".

* membuat semut lari dari kursor mouse */

public function runAway() :void {

// gerakkan semut menjauhi kursor mouse

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

Game.mouse.y);

// apakah kursor mouse masih disini?

if (distance(Game.mouse, this) > MOUSE_THREAT_RADIUS) { // tidak kursor mouse telah pergi. Ayo kembali ke sebelumnya. // state aktif.

brain.popState(); }

} (...) }

2.5 Pengertian NPC

Sebuah NPC dikenal sebagai karakter yang bukan orang atau karakter yang bukan dimainkan, dalam game adalah setiap karakter yang tidak dimainkan oleh player atau pemain. Dalam video game, ini biasanya berarti karakter yang dikendalikan oleh komputer melalui kecerdasan buatan. Jika player character (PC) dalam cerita protagonist, npc dapat dianggap sebagai “pemain pendukung” atau “ekstra” dari narasi Role playing.


(57)

29

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.

4. Meisadri et al (2013) meneliti pembangunan game First Person Shooter 3D Alien Hunter menggunakan algoritma A* star sebagai pathfinding dan fuzzy logic.


(58)

BAB 1 PENDAHULUAN

1.1. LATAR BELAKANG

Sumatera Utara memiliki banyak cerita sejarah yang mengangumkan. Salah satunya adalah cerita tentang Agresi Militer Belanda yang terjadi di Indonesia Khususnya Sumatera Utara. Perjuangan Rakyat Sumatera demi kemerdekaan. Generasi sekarang mungkin tidak mengetahui secara mendetail bagaimana bentuk dan corak perang kemerdekaan. Senjata-senjata jenis apa yang digunakan dan bagaimana cara memperoleh begitu banyak senjata untuk mempertahankan kemerdekaan. Dengan bermodalkan sumber daya militer, para pemuda dilatih jepang dalam kesatuan Giyungan, Heiho, dan Peta, sehingga mereka cukup bakal menjadi pimpinan militer, dan cukup mahir menggunakan senjata mulai dari senjata ringan hingga senjata berat. Adanya sebutan pejuang berjuang hanya dengan “bambu runcing” pengertiannya, kita berjuang mulanya tidak punya senjata (TWH, 2007).

Para pemuda di Medan ini pada mulanya ketika mendaftarkan diri menjadi anggota Laskyar hanya membawa bambu runcing, piring seng untuk tempat makan dan sepatu karet. Dengan kelengkapan ini mereka latihan dan menjaga keamanan, terutama sebelum inggris menduduki kota Medan dan Belanda merekrut bekas anggota KNIL-nya. Cerita Sejarah seperti ini tekadang sangat membosankan sehingga hanya sedikit orang yang mengetahui secara jelas dan detail cerita ini. Dikarenakan sumber informasi yang kurang dan kurangnya niat untuk banyak membaca dikarenakan kurang menarik.


(59)

2

Sehingga dibutuhkan sarana yang dapat membuat orang tahu akan sejarah ini dengan pendekata yang menyenangkan. Perkembangan teknologi yang tengah terjadi pada saat ini telah membuat perubahan yang signifikan dalam pola hidup manusia. Kebutuhan akan teknologi menjadi hal yang hampir merata di seluruh dunia. Sebagian besar orang-orang menggunakan teknologi ini untuk menunjang kehidupan mereka dan sebagai sarana hiburan, salah satu penggunaan teknologi komputer sebagai sarana hiburan adalah Game. Game banyak diminati karena membutuhkan interaksi dengan pengguna. Mulai dari anak-anak hingga orang dewasa menyukai Game. Pada umumnya Game dibuat untuk sarana hiburan bagi penggunanya. Akan tetapi hal itu tidak membuat Game 100% aman untuk dikonsumsi. Hal-hal yang membuat Game itu tidak aman untuk dikonsumsi adalah rating dari Game tersebut, efek visual output Game, perbedaan budaya antara pengguna dan vendor Game, dan lain-lain (Mizanuddin, 2011).

Video Game adalah sebuah “permainan” dengan tampilan sebuah gambar atau visual yang dapat memberikan respon balik jika diberikan perintah-perintah tertentu menggunkanan alat kontrol pada seperangkat sistem elektronik (ITS, 2013). Setiap tipe Game memiliki dua sifat visualisasi yaitu 2D dan 3D. Game pada saat ini yang lebih menarik dimainkan adalah Game berbasis 3D karena objek yang terdapat pada Game tersebut terlihat lebih nyata (Fauzi, 2013). Untuk membuat Game yang berbasis 3D dibutuhukan Game Engine untuk merealisasikannya. Salah satu Game Engine yang terkenal adalah Unity. Unity menawarkan Game engine versi gratis. Selain itu, Game engine ini tergolong yang mudah digunakan dan banyak referensi yang dapat digunakan sebagai bahan pembelajaran. Unity adalah sebagai salah satu engine paling profesional, efisien dan Unity sup-port Web, PC, Mac, iOS, flash, Android, Xbox360, PS3 dan Wii platform. Pada saat ini banyak sekali genre Game, salah satunya adalah First Person Shooter (FPS). FPS adalah genre Video Game yang berfokus pada senjata dan projektil berbasis senjata perang melalui perspektif orang pertama, yang mana pengalaman player melalui mata protagonisnya (Peng, 2014).


(60)

Salah satu komponen yang kini diterapkan pada Game adalah kecerdasan buatan (Artificial Intelligence atau AI). AI yang didefenisikan sebagai Kecerdasan Entitas Ilmiah. Penelitian tentang AI (Artificial Intelligence) pada NPC (Non-Player Character) dalam Game hingga saat ini masih terus di kembangkan. Artificial Intelligence tersebut dikembangkan untuk merancang perilaku Non-Player Character (Zikri, 2011). Artificial Intelligence pada Game First Person Shooter umumnya terdiri dari perencanaan path, mengambil item, menggunakan item, dan berperang. Khusus untuk berperang Non-Player Character juga diharapkan mempunyai strategi-strategi khusus seperti halnya manusia. Strategi yang dimaksud bisa berupa strategi dimana pengambilan keputusan kapan saat mengejar lawan, menyerang lawan maupun menghindari lawan dengan penyesuaian pada kondisi Non-Player Character pada saat itu (Jailani, 2010). Salah satu metode yang digunakan untuk kecerdasan buatan dalam membuat game adalah metode Finite State Machine (FSM). FSM banyak digunakan untuk membuat Game yang pada situasi tertentu dapat menghasilkan respon. Didalam Game cerita adalah bagian yang sangat penting.

Oleh karena itu maka dibuatlah penelitian ini, Berdasarkan latar belakang tersebut, penulis melakukan penelitian dengan judul “Behaviour NPC Game 3D Using Finite State Machine”. Dengan penelitian ini diharapkan orang dapat membayangkan secara visual tentang sejarah tersebut yang ditampilkan dengan menyenangkan.

1.2 RUMUSAN MASALAH

Perancangan cerita sejarah dalam bentuk games sangat diperlukan sebagai media pembelajaran sejarah. Rumusah masalah pada penlitian ini adalah Bagaimana cara mengenalkan Game Sejarah Sumatera Utara dalam bentuk 3D serta merancang NPC Using Finite State Machine.

1.3 BATASAN MASALAH

Adapun batasan masalah untuk menghindari penyimpangan dan perluasan yang tidak diperlukan, penulis membuat batasan antara lain :

1. Game hanya dapat dijalankan pada komputer berbasis Windows, Linux, dan PC. 2. Game hanya bisa dimainkan oleh satu player atau Single Player.


(61)

4

3. Game bersifat offline tidak terhubung ke internet. 4. Game Engine yang digunakan adalah Unity. 5. Bahasa Pemrograman yang digunakan C# 1.4. TUJUAN PENELITIAN

Tujuan dari penelitian ini adalah Menghasilkan sarana hiburan dalam bentuk games untuk mengenalkan Sejarah Sumatera Utara dalam bentuk 3D.

1.5. MANFAAT PENELITIAN

Manfaat dari penelitian yang dilakukan adalah :

1. Menghasilkan Game bernuansa sejarah atau Historical untuk dipelajari dalam lingkungan virtual (virtual environment)..

2. Finite State Machine dapat diterapkan pada NPC dalam game FPS. 3. Menjadi referensi bagi penelitian-penelitian berikutnya.

1.6. METODOLOGI

Tahapan-tahapan yang akan dilakukan pada pelaksanaan penelitian adalah sebagai berikut Studi Literatur

Studi literatur dilakukan dalam rangka pengumpulan referensi/pustakan tentang Sejarah perang Sumatera Utara, Unity, serta algoritma Finite State Machine.

1. Analisis Permasalahan

Pada tahap ini dilakukan analisis terhadap bahan referensi yang telah dikumpulkan pada tahap sebelumnya untuk mendapatkan pemahaman mengenai metode yang diterapkan yakni algoritma Finite State Machine, serta domain masalah yang akan diselesaikan yakni merancang behavior NPC.


(62)

2. Implementasi

Pada tahap ini dilakukan implementasi algoritma Finite State Machine untuk menghasilkan behavior NPC yang reaktif dan realtime. Kemudian memasukkan cerita sejarah perang Sumatera Utara kedalam Game.

3. Evaluasi dan Analisis Hasil

4. Pada tahap ini dilakukan evaluasi serta analisis terhadap hasil implementasi menggunakan Finite State Machine sebagai behavior NPC.

5. Dokumentasi dan Laporan

Pada tahap ini dilakukan dokumentasi dan penyusunan laporan hasil evaluasi dan analisis serta implementasi Finite State Machine pada behavior NPC.

1.7. SISTEMATIKA PENULISAN

Sistematikan penulisan skripsi ini terdiri atas lima bagian utama sebagai berikut : Bab 1 : Pendahuluan

Bab pendahuluan ini berisi tentang hal-hal yang mendasari dilakukannya penelitian serta pengidentifikasian masalah penelitian. Bagian-bagian yang terdapat dalam bab pendahuluan ini meliputi latar belakang masalah, perumusan masalah, batasan masalah, tujuan penelitian, dan manfaat penelitian.

Bab 2 : Landasan Teori

Pada bab tinjauan pustaka menguraikan landasan teori, penelitian terdahulu, teori algoritma Finite State Machine, serta cerita sejarah perang Sumatera Utara.

Bab 3 : Analisis dan Perancangan

Bab ini membahas analisis dan perancangan, dimulai dari Unity, SketchUp, pemodelan terrain, penambahan material dan tekstur, serta implementasi Finite State Machine pada NPC.


(63)

6

Bab 4 : Implementasi dan Pengujian

Pada bab ini berisi pembahasan tentang implementasi yang telah dijabarkan pada bab 3. Selain itu, hasil yang didapatkan dari pengujian yang dilakukan akan dijabarkan di bab ini.

Bab 5 : Kesimpulan dan Saran

Bab ini berisi kesimpulan dari rancangan dan penelitian yang telah dibahas pada bab 3, serta hasil penelitian pada bab 4 serta saran-saran yang diajukan untuk pengembangan penelitian selanjutnya.


(64)

ABSTRAK

Sumatera Utara memiliki banyak cerita sejarah tentang perjuangan. Misalnya tentang agresi militer belanda di Indonesia setelah merdeka. Banyak perlawanan-perlawanan yang dilakukan tiap daerah di sumatera utara untuk mempertahankan kemerdekaannya. Aplikasi ini dibuat untuk menampilkan game dalam bentuk 3D yang digunakan sebagai sarana hiburan dan edukasi. Game ini bergenre First-Person Shooting yang mana pemain mencari musuh dan membunuh dengan cara menembaknya. Perancangan aplikasi game ini berdasarkan cerita rakyat sumatera utara tentang memperebutkan stabat dari tangan belanda. Game Engine yang digunakan adalah Unity 5. Unity dapat digunakan untuk menghasilkan game dalam bentuk 3D untuk merealisasikan dunia nyata dalam bentuk virtual. Perancangan game ini adalah hasil dari analisis, desain , dan implementasi dari metode Finite State Machine yang digunakan untuk behavior NPC. Hasil dari perancangan game ini adalah Game dalam bentuk 3D berdasarkan cerita sejarah dan untuk Npcnya menggunakan metode Finite State Machine.


(65)

vi

BEHAVIOUR NPC GAME HISTORICAL WAR 3D USING FINITE

STATE MACHINE

ABSTRACT

North Sumatra has a lot of stories about the history of the struggle. For instance on the Dutch military aggression in Indonesia after independence. Many insurgencies do each region in northern Sumatra to maintain its independence. This application was created to show the game in the form of 3D for entertainment and education. This game genre of First-Person Shooter in which players seek to kill the enemy and shot her way. This game application design based on the folklore of North Sumatra on fighting Stabat from Dutch hands. Game Engine used is Unity 5. Unity can be used to produce the game in 3D to realize the real world in virtual form. The design of this game is the result of the analysis, design, and implementation of methods Finite State Machine is used for NPC behavior. Results from the design of this game is a game in 3D based on the story of history and to Npc using Finite State Machine.


(66)

BEHAVIOUR NPC GAME HISTORICAL WAR 3D USING FINITE

STATE MACHINE

SKRIPSI

ANDEAN ARIPPA

101402010

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

UNIVERSITAS SUMATERA UTARA

MEDAN

2016


(67)

BEHAVIOUR NPC GAME HISTORICAL WAR 3D USING FINITE STATE

MACHINE

SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi

ANDEAN ARIPPA 101402010

PROGRAM STUDI TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2016


(68)

PERSETUJUAN

Judul : BEHAVIOUR NPC GAME HISTORICAL WAR 3D

USING FINITE STATE MACHINE

Kategori : SKRIPSI

Nama : ANDEAN ARIPPA

Nomor Induk Mahasiswa : 101402010

Program Studi : SARJANA (S1) TEKNOLOGI INFORMASI Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI

Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Romi Fadillah Rahmat, B.Comp.Sc.,M.Sc. Muhammad Fadly Syahputra, B.Sc., M.Sc.IT NIP. 19860303201012 1 004 NIP. 198301292009121003

Diketahui/Disetujui Oleh

Program Studi Teknologi Informasi Ketua,

Muhammad Anggia Muchtar, ST.,MM.IT NIP. 198001102008011010


(69)

iii

PERNYATAAN

BEHAVIOUR NPC GAME HISTORICAL WAR 3D USING FINITE STATE MACHINE

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juli 2016

ANDEAN ARIPPA 101402010


(70)

UCAPAN TERIMA KASIH

Puji dan syukur penulis ucapkan kepada Allah SWT dengan segala rahmat dan karuniaNya penulisan tugas akhir ini berhasil diselesaikan dalam waktu yang telah ditetapkan. Selama penyelesaian tugas akhir ini, banyak bantuan dan kerja sama serta doa dan dukungan dari berbagai pihak, oleh karena itu penulis sampaikan ucapan terima kasih sedalam-dalamnya dan penghargaan kepada:

1. Kedua orang tua dan sanak saudara penulis yang telah memberikan dukungan dan motivasi baik materil dan spiritual selama penulis mengikuti pendidikan hingga selesainya tugas akhir ini.

2. Bapak M. Fadly Syahputra, B.Sc.,M.Sc.IT, selaku pembimbing 1 sekaligus Sekretaris Program Studi Teknologi Informasi dan Bapak Romi Fadillah Rahmat, B.Comp.Sc.,M.Sc. selaku pembimbing 2 yang telah banyak meluangkan waktu dan pikiran beliau, memotivasi, memberikan arahan, kritik dan saran kepada penulis.

3. Bapak Dan Ibu Dosen Penguji yang telah memberikan kritik dan saran kepada penulis.

4. Semua dosen, staff dan pegawai di Jurusan Teknologi Informasi serta Fakultas Ilmu Komputer dan Teknologi Informasi yang tidak dapat saya sebutkan satu-persatu.

5. Rekan seperjuangan dalam penelitian ini, M.Kurniawan Widhianto, Ovy Rizky, dan Joko Almady, serta rekan-rekan mahasiswa yang tidak dapat saya sebutkan satu-persatu, khususnya angkatan 2010 Program Studi Teknologi Informasi USU yang telah memberikan dukungan dan semangat untuk saya.

Semoga segala kebaikan dan bantuannya dibalas oleh Allah SWT dan semoga tugas akhir ini dapat bermanfaat bagi semua pihak yang memerlukannya.


(71)

v

ABSTRAK

Sumatera Utara memiliki banyak cerita sejarah tentang perjuangan. Misalnya tentang agresi militer belanda di Indonesia setelah merdeka. Banyak perlawanan-perlawanan yang dilakukan tiap daerah di sumatera utara untuk mempertahankan kemerdekaannya. Aplikasi ini dibuat untuk menampilkan game dalam bentuk 3D yang digunakan sebagai sarana hiburan dan edukasi. Game ini bergenre First-Person Shooting yang mana pemain mencari musuh dan membunuh dengan cara menembaknya. Perancangan aplikasi game ini berdasarkan cerita rakyat sumatera utara tentang memperebutkan stabat dari tangan belanda. Game Engine yang digunakan adalah Unity 5. Unity dapat digunakan untuk menghasilkan game dalam bentuk 3D untuk merealisasikan dunia nyata dalam bentuk virtual. Perancangan game ini adalah hasil dari analisis, desain , dan implementasi dari metode Finite State Machine yang digunakan untuk behavior NPC. Hasil dari perancangan game ini adalah Game dalam bentuk 3D berdasarkan cerita sejarah dan untuk Npcnya menggunakan metode Finite State Machine.


(72)

BEHAVIOUR NPC GAME HISTORICAL WAR 3D USING FINITE

STATE MACHINE

ABSTRACT

North Sumatra has a lot of stories about the history of the struggle. For instance on the Dutch military aggression in Indonesia after independence. Many insurgencies do each region in northern Sumatra to maintain its independence. This application was created to show the game in the form of 3D for entertainment and education. This game genre of First-Person Shooter in which players seek to kill the enemy and shot her way. This game application design based on the folklore of North Sumatra on fighting Stabat from Dutch hands. Game Engine used is Unity 5. Unity can be used to produce the game in 3D to realize the real world in virtual form. The design of this game is the result of the analysis, design, and implementation of methods Finite State Machine is used for NPC behavior. Results from the design of this game is a game in 3D based on the story of history and to Npc using Finite State Machine.


(73)

vii

DAFTAR ISI

ABSTRAK v

ABSTRACT vi

DAFTAR ISI vii

DAFTAR TABEL x

DAFTAR GAMBAR xi

BAB 1 PENDAHULUAN

1.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 4

1.5 Manfaat Penelitian 4

1.6 Metode Penelitian 4

1.7 Sistematika Penulisan 5

BAB 2 LANDASAN TEORI

2.1 Sejarah Singkat Perang Merebut Stabat 7

2.2 Teori 2D dan 3D 9

2.2.1 Prinsip Vektor 9

2.2.2 Defenisi Ruang 2D dan 3D 12

2.2.3 Translasi, Rotasi dan Skala 13 2.3 Prinsip Desain atau Aturan pada game First-Person Shooter 15

2.4 Teori Finite State Machine 16

2.4.1 Perencanaan State dan Transisi 17 2.4.2 Menerapkan Finite State Machine 17


(1)

vii

DAFTAR ISI

ABSTRAK v

ABSTRACT vi

DAFTAR ISI vii

DAFTAR TABEL x

DAFTAR GAMBAR xi

BAB 1 PENDAHULUAN

1.1 Latar Belakang 1

1.2 Rumusan Masalah 3

1.3 Batasan Masalah 3

1.4 Tujuan Penelitian 4

1.5 Manfaat Penelitian 4

1.6 Metode Penelitian 4

1.7 Sistematika Penulisan 5

BAB 2 LANDASAN TEORI

2.1 Sejarah Singkat Perang Merebut Stabat 7

2.2 Teori 2D dan 3D 9

2.2.1 Prinsip Vektor 9

2.2.2 Defenisi Ruang 2D dan 3D 12

2.2.3 Translasi, Rotasi dan Skala 13

2.3 Prinsip Desain atau Aturan pada game First-Person Shooter 15

2.4 Teori Finite State Machine 16

2.4.1 Perencanaan State dan Transisi 17

2.4.2 Menerapkan Finite State Machine 17


(2)

2.6 Penelitian Terdahulu 29

BAB 3 ANALISIS DAN PERANCANGAN

3.1 Arsitektur Umum 30

3.2 Pengumpulan Data 31

3.2.1 Foto-Foto Masa Lalu 31

3.3 Modelling 34

3.3.1 Pemodelan NPC 34

3.3.2 Pemodelan Environment 35

3.3.2.1 Membangun Landscape 36

3.3.2.2 Pengaturan Cahaya 36

3.3.2.3 Collision Detection 38

3.3.2.4 Penggunaan Player Controller 38

3.3.2.5 Camera 39

3.3.2.6 Terrain Editor 39

3.3.2.7 Skybox 41

3.3.2.8 Clouds 42

3.4 Game Logic 43

3.4.1 Alur Dasar Permainan 43

3.4.2 Implementasi Finite State Machine 43

3.5. Antarmuka Pengguna (User Interface) 44

3.5.1 Tampilan Menu Utama 46

3.5.2 Tampilan Loading Screen 46

BAB 4 IMPLEMENTASI DAN PENGUJIAN

4.1 Konfigurasi Sistem 48

4.1.1 Konfigurasi Perangkat Keras 48


(3)

ix

4.1.3 File Asset 49

4.1.4 Eksekusi Aplikasi 50

4.2 Pengujian Sistem 54

4.2.1 Uji Metode 54

4.2.2 Uji Antarmuka 55

4.2.3 Uji Sistem 57

BAB 5 KESIMPULAN

5.1 Kesimpulan 60

5.2 Saran 61


(4)

DAFTAR TABEL

Halaman

Tabel 4.1 Konfigurasi perangkat keras yang digunakan 49

Tabel 4.2. Konfigurasi perangkat lunak yang digunakan 49

Tabel 4.3 Kategori Pemberian Nilai 56


(5)

xi

DAFTAR GAMBAR

Halaman

Gambar 2.1 Peta imajinatif menggambarkan penggunaan vektor 10

Gambar 2.2 Koordinat di Edit Scene pada Unity 11

Gambar 2.3 Memahami Ruang 2D 13

Gambar 2.4 Menskalakan Objek 14

Gambar 2.5. Siklus Mekanisme Game 15

Gambar 2.6 Menggambarkan Otak dari Semut 18

Gambar 2.7 FSM Menggambarkan Otak dari Semut. Perhatikan kurangnya

Transisi antara Run away dan Go home 18

Gambar 2.8 FSM dari Otak Semut Dengan Berfokus Pada Kode 20

Gambar 2.9 FSM Semut Diperbaharui Dengan Transisi Baru 24

Gambar 3.1 Arsitektur Umum 30

Gambar 3.2 Tampilan Laman Situs KITLV 32

Gambar 3.3 Tampak Depan Stasiun Kereta Api Tanjung Pura 32

Gambar 3.4 Tampak Belakang Stasiun Kereta Api Tanjung Pura 33

Gambar 3.5 Jembatan Menuju Stabat 33

Gambar 3.6 Peta Jalur Kereta Api Tanjung Pura – Stabat 34

Gambar 3.7 Tampilan Adobe FUSE 35

Gambar 3.8 Lingkungan Virtual Stasiun Kereta api 37

Gambar 3.9 Intensitas Cahaya yang Terlalu Tinggi atau Terlalu

Rendah Akan Merusak Realitas Pada Dunia Virtual 37

Gambar 3.10 Cara Kerja Collision Detection 38

Gambar 3.11 Kamera Perspective di Unity3D 40

Gambar 3.12 Terrain Tools pada Inspector 41

Gambar 3.13 Enam Texture Digunakan Untuk Membuat Sebuah Skybox 42

Gambar 3.14 Flowchart Sistem Aplikasi Game 45


(6)

Gambar 3.16 Desain Tampilan Antarmuka Pengguna Loading Screen 47

Gambar 4.1 Berkas File Pada Folder Project Unity 50

Gambar 4.2 Tampilan Awal Game 50

Gambar 4.3 Tampilan Loading Screen 51

Gambar 4.4 Tampilan In-Game Pertempuran Stabat 51

Gambar 4.5 Pause Pada Saat inGame 52

Gambar 4.6 Tampilan Player Kehabisan Health Point 53

Gambar 4.7 NPC Berpatroli 54

Gambar 4.8 NPC kembali Berpatroli 55

Gambar 4.9 Frame per Second game 58