BAB 2 LANDASAN TEORI 2.1 Teori Umum Teori Umum adalah teori yang dipakai sebagai landasan bagi teori-teori lainnya. 2.1.1 Model Waterfall M enurut Pressman (2005, p79-80), waterfall model memberikan pendekatan yang sistematis dan sekuensial bagi pengembangan software yang dimulai dari level sistem dan melalui tahapan communication, planning, modeling, construction, dan deployment. Communication Planning Modelling Construction Deployment Gambar 2.1 Waterfall Model Berikut adalah penjelasan dari tahapan-tahapan tersebut: 1. Communication Terdiri dari project initiation dan requirement gathering. M erupakan tahapan pengumpulan kebutuhan yang dilakukan secara intensif dan fokus terutama kepada software. 8 9 2. Planning Terdiri dari estimating, scheduling, dan tracking. Pada tahap ini, pengemban g software membuat perkiraan waktu yang diperlukan. Pada tahap ini juga dilakukan penjadwalan untuk menyelesaikan tahap-tahap pembuatan software sesuai dengan waktu yang telah diperkirakan. 3. M odelling Terdiri dari analysis dan design. Pada saat mendesain software, biasanya memiliki beberapa proses yang memfokuskan pada empat atribut bagian dari program. Atribut tersebut adalah struktur data, arsitektur software, representasi interface, dan detail algoritma. Proses desain mengubah kebutuhan menjadi representasi dari software yang dapat dinilai untuk kualitas sebelum penulisan code dimulai. 4. Construction Terdiri dari code dan test. Pada tahap ini, desain diterjemahkan menjadi bentuk yang dapat dibaca oleh mesin. Setelah penulisan code selesai dibuat, pengujian terhadap program dilakukan. Proses pengujian menekankan pada logika internal pada software, meyakinkan semua pernyataan telah diuji, dan pada fungs i external. 5. Deployment Terdiri dari delivery, support, dan feedback. Pada tahap ini, pengemban g software menyediakan software yang menyediakan fungsi dan fitur yang bermanfaat. Pengembang software juga menyediakan dokumentasi untuk semua fitur dan fungsi. Pada tahap ini juga, pengembang software mendapatkan umpan balik terhadap software yang berujung pada pemodifikasian fungsi dan fitur. 10 2.1.2 Multimedia M enurut Tay Vaughan (2006, p3), multimedia adalah kombinasi dari teks, foto, seni grafis, suara, animasi, dan elemen-elemen video yang dimanipulasi secara digital. Elemen-elemen yang terdapat dalam multimedia adalah sebagai berikut: 1. Teks M enurut Tay Vaughan (2006, p49), suatu kata dapat memuat banyak arti sehingga disaat mulai bekerja dengan teks, sangat penting untuk menerapkan keakuratan dan kepadatan dalam kata tertentu yang Anda pilih. Dalam multimedia, kata tersebut merupakan kata yang akan muncul dalam judul, menu, bantuan navigasi, juga dalam narasi dan isi dari multimedia. Typeface merupakan famili dari karakter grafis yang terkadang menyertakan banyak type size dan sytle. Font merupakan kumpulan karakter dari satu ukuran dan style yang dimiliki oleh famili typeface tertentu. (Vaughan, 2006, p50) Cara yang paling sederhana dalam mengelompokkan sebuah typeface adalah dengan cara serif versus sans serif. Sans dalam bahasa Perancis berarti “tanpa” dan serif merupakan dekorasi kecil pada akhir huruf. Font serif biasanya digunakan untuk badan teks karena serif dapat membantu menuntun mata pembaca melihat baris-baris teks. Sebaliknya, font sans serif digunakan untuk headline dan pernyataan yang dicetak tebal. (Vaughan, 2006, p553) 2. Suara M enurut Tay Vaughan (2006, p92), ketika sesuatu bergetar di udara saat digerakkan maju mundur, akan menciptakan gelombang. Gelombang tersebut 11 menyebar dan ketika mencapai telinga akan mengalami perubahan tekanan, atau getaran, sebagai suara. Audio digital dibuat saat mengkonversikan sebuah gelombang suara ke dalam angka (digitizing). Suara digital merupakan sampel suara. Setiap fraksi n dalam satu detik, sampel suara diambil dan disimpan sebagai informasi digital dalam bit dan byte. Kualitas dari audio digital tergantung pada seberapa serin g sampel diambil dan berapa banyak angka yang digunakan untuk merepresentasikan nilai dari tiap sampel. (Vaughan, 2006, p94-95) Format file suara sebenarnya menggunakan metodologi untuk mengorganisasikan bit dan byte data suara digital ke dalam file data. Struktur file tersebut tentu saja harus diketahui sebelum data tersebut di-load ke dalam sebuah komputer. Salah satu contoh dari format file audio digital adalah .wav (WA V Audio). (Vaughan, 2006, p105-106) 3. Gambar M enurut Tay Vaughan (2006, p125), gambar dapat berbentuk kecil atau besar, atau bahkan dalam layar penuh. Gambar dapat berwarna, ditempatkan secara acak pada layar, dapat berbentuk geometris atau dibentuk secara aneh. Salah satu cara menjalankan gambar pada komputer adalah sebagai lukisan grafis atau yang biasa disebut dengan bitmap. Bit merupakan elemen paling sederhana dalam dunia digital, benda elektronik yang dapat dihidupkan atau dimatikan, hitam atau putih, atau benar (1) atau salah (0). Map merupakan matriks dua dimensi dari bit ini. Sehingga dapat disimpulkan bahwa bitmap merupakan matriks sederhana dari titik-titik kecil 12 yang membentuk sebuah image dan ditampilkan di layar komputer atau dicetak. (Vaughan, 2006, p126) M enurut Dastbaz (2002, p58-59), terdapat beberapa format file gambar yang sudah dikenal oleh banyak orang, yaitu: a. JPEG (.jpg) Format kompresi gambar yang digunakan untuk menampilkan fotofoto dan gambar lainnya dan dapat menangani berbagai kedalaman warna. b. PNG (.png) Format kompresi file yang dapat menampilkan gambar 24-bit. 4. Animasi M enurut Tay Vaughan (2006, p160), animasi adalah membuat presentasi statis menjadi hidup. Animasi merupakan perubahan visula sepanjang waktu dan memberi kekuatan besar pada proyek multimedia. Animasi dapat dilakukan karena adanya fenomena biologi yang disebut persistensi penglihatan dan fenomena psikologi yang disebut phi. Sebuah objek yang dilihat oleh mata manusia masih tersimpan secara kimia di retina mata selama beberapa saat setelah penglihatan. Jika dikombinasikan dengan kebutuhan pemikiran manusia untuk mengonsep secara lengkap aksi yang ditangkap, maka menjadi mungkin bagi seri image yang berubah secara perlahan dan sangat cepatsatu sesudah yang lain-agar seolah-olah bercampur menjadi satu dalam ilus i visual dari pergerakan. (Vaughan, 2006, p161) Untuk animasi 3 dimensi, kebanyakan pekerjaan yang dilakukan adalah membuat model dari masing-masing objek dan mendesain karakteristik dari 13 bentuk dan tampilan mereka. Selanjutnya, perangkat lunaklah yang mengomputasi pergerakan objek dalam ruang 3 dimensi. (Vaughan, 2006, p163) 5. Video M enurut Tay Vaughan (2006, p178), video merupakan elemen multimedia yang dapat menggambarkan hembusan napas dari ramainya perdagangan atau meyakinkan seorang siswa agar tertarik dalam proyek belajar berbasis komputer. Dari semua elemen multimedia, video menempati tuntutan performa yang tertinggi dalam komputer dan untuk memori dan penyimpanannya 2.1.3 Interaksi Manusia dan Komputer (IMK) M enurut Ben Shneiderman (2010, p5), Ada delapan hal yang perlu diperhatikan dalam membuat desain antarmuka atau yang sering kita kenal sebagai user interface. M enurut Shneiderman (2010, p32), terdapat lima faktor manusia terukur yang dapat dijadikan sebagai pusat evaluasi, yaitu: 1. Waktu belajar, berapa lama waktu yang diperlukan user untuk mempelajari cara yang relevan untuk melakukan suatu tugas? 2. Kecepatan kinerja, berapa lama waktu yang diperlukan untuk mengerjakan suatu tugas? 3. Tingkat kesalahan user, berapa banyak kesalahan dan kesalahan apakah yang bisa terjadi saat user mengerjakan tugas tersebut? 4. Daya ingat, bagaimana user mengatur pengetahuan setelah beberapa waktu? Ingatan mungkin dapat dihubungkan dengan waktu belajar dan frekuens i penggunaan merupakan peran yang penting. 14 5. Kepuasan yang subjektif, seberapa banyak user menyukai penggunaan bermacam aspek dalam antarmuka? Jawaban dapat dipastikan melalui wawancara atau melakukan survey, termasuk skala kepuasan dan tempat untuk komentar bebas dari user. M enurut Shneiderman (2010, p88-89), terdapat delapan aturan emas dalam merancang antarmuka: 1. Berusaha untuk konsisten Tindakan konsisten diperlukan dalam situasi yang serupa. Hal ini biasa digunakan dalam pembuatan prompt, menu, dan help screens. Begitu juga dengan pembuatan command user. 2. Memungkinkan pengguna untuk menggunakan shortcut Seiring meningkatnya frekuensi penggunaan, pengguna juga ingin mengurangi jumlah interaksi dan meningkatkan laju dari interaksi tersebut. Singkatan, tombol fungsi, perintah tersembunyi, dan fasilitas makro sangat membantu expert users. 3. M enawarkan umpan balik yang informatif Untuk setiap tindakan dari operator, harus ada sistem umpan balik. Untuk tindakan-tindakan sering dan kecil, tanggapan dapat bersifat sederhana, sedangkan untuk tindakan jarang dan utama, respon harus lebih bersifat detail. 4. Desain dialog untuk menghasilkan penutupan Urutan-urutan dari tindakan-tindakan yang ada harus diatur menjadi bagian awal, tengah, dan akhir. Umpan balik informatif pada sekumpulan tindakan-tindakan yang ada memberikan kepuasan penyelesaian, rasa lega, tanda untuk menghentikan suatu rencana dan pilihan dari pikiran mereka, dan indikasi bahw a 15 caranya jelas yaitu untuk mempersiapkan sekelompok tindakan-tindakan yang ada berikutnya. 5. Penawaran penanganan error yang sederhana Sebisa mungkin, buat desain dari s istem yang ada agar pengguna tidak berbuat kesalahan yang serius. Namun jika kesalahan dibuat, sistem harus dapat mendeteksi kesalahan yang sederhana dan mekanisme yang mudah dipahami untuk penanganan kesalahan. 6. M engizinkan pembalikan tindakan Fitur ini bertujuan untuk mengurangi kecemasa, karena pengguna tahu bahw a kesalahan dapat dibatalkan. Sehingga mendorong pengguna dalam menjelajah pilihan-pilihan tindakan yang asing. Bentuk dari pembalikan tindakan dapat berupa satu tindakan, entri data, atau sekelompok lengkap dari tindakan-tindakan yang ada. 7. Dukungan internal lokus control Operator berpengalaman berkeinginan kuat mengenai rasa mereka bertanggun g jawab atas sistem dan sistem pun merespon tindakan mereka.Buat desain dari sistem untuk membuat pengguna berperan sebagai pengambil inisiatif daripada para responden yang ada. 8. Kurangin beban memori jangka pendek Keterbatasan manusia dalam mengolah informasi dalam jangka waktu pendek memerlukan sesuatu yang dapat ditampilkan namun disimpan dalam bentuk sederhana.Halaman-halaman ganda diperketat, frekuensi dari window-motion dikurangi, waktu pelatihan yang memadai dialokasikan untuk kode, mnemonik, dan urutan tindakan. 16 2.1.4 UML (Unified Modeling Language) M enurut Bentley dan Whitten (2007, p371), UM L adalah satu set dari ketentuan modeling yang digunakan untuk menspesifikasi atau mendeskripsikan sebuah sistem software dalam suatu kondisi dari objek. UM L dibagi menjadi beberapa komponen: 1. Class Diagram M enurut Bentley dan Whitten (2007, p400), class diagram menggambarkan struktur sistem suatu object. Diagram ini menampilkan class-class objek yang sistemnya tersusun seperti hubungan antara class-class objek. Gambar 2.2 Contoh Class Diagram 2. Use Case Diagram M enurut Bentley dan Whitten (2007, p246-250), use case diagram menggambarkan interaksi antara sistem dan sistem eksternal dan user. Dengan kata lain, secara grafikal mendeskripsikan siapa yang akan menggunakan sistem dan dengan cara seperti apa yang diharapkan user untuk berinteraksi dengan sistem. 17 Gambar 2.3 Contoh Use Case Diagram Use case diagram memiliki komponen sebagai berikut: a. Pelaku Pada use case diagram, pelaku adalah segala sesuatu yang perlu berinteraksi dengan sistem untuk pertukaran informasi b. Relationship (hubungan) Pada use case diagram, hubungan digambarkan dalam sebuah garis di antara dua simbol. 3. Sequence Diagram M enurut Bentley dan Whitten (2007, p394), secara grafikal, sequence diagram menggambarkan bagaimana objek berinteraksi satu sama lain melalui pesan dalam eksekusi use case atau operasi. Diagram ini menggambarkan langkahlangkah pesan dikirim dan diterima antara obyek. 18 Gambar 2.4 Contoh Sequence Diagram 4. Activity Diagram M enurut Bentley dan Whitten (2007, p390), activity diagram menggambarkan alur yang berurutan dari aktifitas use case atau proses bisnis. Diagram ini juga dapat digunakan untuk memodelkan logika dengan suatu sistem. Gambar 2.5 Contoh Activ ity Diagram 19 Activity diagram memiliki komponen sebagai berikut: a. Titik solid Pada activity diagram, titik solid menggambarkan awal sebuah proses. b. Segi empat dengan sudut tumpul Pada activity diagram, segi empat dengan sudut tumpul menggambarkan tugas yang perlu dilakukan. c. Panah Pada activity diagram, panah menggambarkan sasaran yang mengawali kegiatan. d. Diamond Pada activity diagram, diamond menggambarkan sebuah sebuah kegiatan keputusan. e. Titik solid di dalam lingkaran Pada activity diagram, titik solid di dalam lingkaran menggambarkan akhir sebuah proses. 2.1.5 File Based M enurut Connoly dan Begg (2010, p57-58), sistem file based merupakan kumpulan dari program aplikasi yang menampilkan layanan untuk end user seperti penghasilan laporan. Setiap program mendefinisikan dan mengatur datanya sendiri. Sistem file based merupakan upaya awal untuk panduan pengisian sistem yang komputerisasi yang sudah dikenal. Sistem pengisian manual bekerja dengan baik selama data yang diletakan kecil. Sistem file based dibangun dalam merespon kebutuhan industri untuk mengakses data dengan lebih efisien. Selain itu, dibandingkan dengan 20 menciptakan penyimpanan yang tersentralisasi untuk data operasional perusahaan, lebih baik memilih pendekatan yang bersifat desentralisasi. M enurut Indrajani (2009, p8-9) , kelebihan dari file based system adalah: 1. Biaya yang lebih murah Implementasi dari file based tidak memerlukan software pendukung yang banyak dan juga tidak memerlukan biaya tambahan hardware dan konversi. 2. Ukuran lebih kecil Hal ini dikarenakan file based tidak memerlukan banyak software pendukung. 3. Sederhana Tidak adanya pengaturan fungsi-fungsi, sehingga file based lebih sederhana. 4. Dampak yang lebih rendah terhadap kegagalan Jika terjadi kerusakan pada suatu file, maka file yang berhubungan tidak mengalami kerusakan. 2.1.6 Object Oriented Programming M enurut Anban Pillay (2007, p11), object oriented programming (OOP) merepresentasikan suatu usaha untuk membuat program lebih dekat dengan model seseorang berpikir bagaimana berususan dengan dunia. Object oriented programming adalah suatu set dari peralatan dan metode yang memperbolehkan software engineers untuk membuat software yang reliable, user friendly, maintainable, well documented, reusable. 21 Bahasa dari object oriented programming menyediakan kebutuhan untuk konsepkonsep object oriented yaitu object dan class, inheritance, dan polymorphism. 1. Object dan Class M enurut Anban Pillay (2007, p16), object adalah suatu bundel perangkat lunak yang terdiri dari variables dan methods. Variables adalah suatu data yang dinamai oleh sebuah identifier. Methods adalah suatu fungsi yang berkaitan dengan sebuah objek. Sebuah objek juga dikenal dengan sebutan instance. Sebuah instance dapat mengacu pada sebuah obyek tertentu. Class adalah sebuah blueprint yang mendefinisikan variables dan methods yang umum untuk semua objek dari jenis tertentu. Class mendeklarasikan instance dari variables yang dibutuhkan untuk menampung state dari seluruh objek. Class juga akan mendeklarasikan dan menyediakan implementasi dari instance methods yang dibutuhkan untuk beroperasi pada state dari objek. M embungkus suatu variables obyek dengan perlindungan methodnya disebut dengan encapsulation. Gambar 2.6 Object dan Encapsulation Encapsulation yang terkait dengan variables dan methods menjadi sebuah bundel perangkat lunak yang rapi adalah hal yang mudah namun merupakan ide yang bagus dan menyediakan dua keuntungan kepada pengembang software: 22 a. M odularity Source dari code untuk sebuah objek dapat ditulis dan dijaga secara terpisah dari source code untuk objek yang lain. Obyek juga dapat dengan mudah beredar melalui sistem. b. Information-hiding Sebuah obyek memiliki sebuah public interface yang objek lain dapat gunakan untuk berkomunikasi dengan objek tersebut. Obyek dapat menjaga informasi yang private dan method yang dapat diganti kapan pun tanpa mempengaruhi objek yang yang bergantung kepadanya. 2. Inheritance M enurut Anban Pillay (2007, p80), inheritance mengacu pada fakta bahwa sebuah class dapat mewarisi sebagian atau seluruh strukturnya dari class yang lain. Class yang diwarisi disebut sebagai subclass dan class yang mewaris i disebut sebagai superclass. Sebuah subclass dapat menambahkan ke dalam struktur dan aksi yang diwariskannya. Subclass juga dapat mengganti atau memodifikasi perilaku yang diwariskan. Gambar 2.7 Inheritance 23 3. Polymorphism M enurut Deitel (2002, p472-473), dengan polymorphism, memungkinkan untuk merancang dan mengimplementasikan sistem yang mudah ditambahkan (easily extensible). Class yang tidak terdapat saat pembuatan program dapat ditambahkan dengan sedikit atau tanpa modifikasi pada bagian program yang diproses secara general. Terdapat dua tipe dari polymorphism, yaitu: a. Overloading Overloading mengacu pada kemampuan untuk mendefinisikan beberapa method dengan nama yang sama dalam sebuah class selama method tersebut memiliki parameter yang berbeda. (Deitel, 2002, p288) b. Overriding Overriding terjadi ketika sebuah subclass mempunyai method yang memiliki signature yang sama dengan superclassnya. Method pada subclass akan meng-override method pada superclass. (Deitel, 2002, p455-456) 2.1.7 Bahasa Pemrograman Java M enurut James Gosling, Bill Joy, Guy Steele, dan Gilad Bracha (2005, p80), bahasa pemrograman java adalah general-purpose, concurrent, class-based, object oriented language. Bahasa pemrograman java adalah high-level language secara keseluruhan. Hal tersebut termasuk manajemen penyimpanan otomatis, yang biasanya menggunakan garbage collector untuk menghindari permasalahan keamanan dari dealokasi eksplisit. Bahasa pemrograman java umumnya di-compile menjadi set intruksi bytecode dan format binary. 24 M enurut Y. Daniel Liang (2006), karakteristik java dibagi sebagai berikut: 1. Simple Tidak ada bahasa yang mudah, namun java sedikit lebih mudah dari bahas a pemrograman C++ yang populer yang sudah menjadi bahasa pengembangan software yang dominan sebelum java. Java sebagian dimodelkan berdasarkan bahasa C++, namun secara dipermudah dan ditingkatkan. Java mengganti multiple inheritance pada C++ dengan interface dan menghilangkan pointer. Java juga menggunakan memori alokasi otomatis dan garbage collector, sedangkan C++ meminta programmer untuk mengalokasi dan mendealokas i memori. 2. Object-oriented Java sejak awal sudah dirancang sebagai bahasa pemrograman berbasis objek. 3. Distributed Distributed computing melibatkan beberapa komputer yang bekerja bersama dalam suatu jaringan. Java dirancang untuk membuat distributed computing menjadi lebih mudah. Dikarenakan kemampuan jaringan terintegrasi pada java, menulis program jaringan seperti mengirim dan menerima data ke dan dari file. 4. Interpreted Program pada java di-compile menjadi java virtual machine code yang disebut bytecode. Bytecode tidak terikat pada mesin tertentu dan dapat berjalan pada semua mesin yang memiliki java interpreter, dimana merupakan bagian dari java virtual machine (JVM ). 25 5. Robust Robust berarti dapat diandalkan. Java menekankan pada pengecekan awal untuk kesalahan yang mungkin terjadi, dikarenakan java compiler dapat mendeteksi kesalahan-kesalahan yang muncul pertama kali di waktu pengeksekusian. Java juga memiliki fitur runtime exception handling untuk membantu programmer. 6. Secure Sebagai internet programming language, java digunakan di dalam sebuah jaringan dan lingkungan terdistribusi. Saat menjalankan sebuah program java, program tersebut tidak akan merusak sistem dikarenakan java mengimplementasikan beberapa mekanisme keamananan untuk melindungi sistem dari ancaman. 7. Architecture-neutral Dikarenakan java yang interpreted, memungkinkan java untuk menjadi architecture-neutral. Dengan adanya java virtual machine (JVM ), program yang dibuat dapat dijalankan pada platform mana pun. 8. Portable Dikarenakan java yang architecture-neutral, program java juga portable. Program tersebut dapat dijalankan pada platform mana pun tanpa perlu dicompile ulang. Lingkungan java portable untuk hardware dan sistem operasi yang baru. Java compiler sendiri juga ditulis dengan java. 9. High-performance Eksekusi dari bytecode tidak secepat pada compiled language, seperti C++. Dikarenakan java yang interpreted, bytecode tidak secara langsung dieksekus i 26 oleh sistem, tapi dijalankan melalui interpreter. Namun, kecepatannya sudah lebih dari cukup untuk aplikasi yang paling interaktif. 10. Multithreaded Multithreaded adalah suatu kemampuan dari suatu program untuk menjalankan beberapa tugas secara bersama-sama. Multithreaded programming telah diintegrasikan pada java, sedangkan pada bahasa lain dimana harus memanggil prosedur yang spesifik pada sistem operasi untuk mengaktifkan multithreading. 11. Dynamic Java dirancang untuk beradaptasi pada lingkungan yang berkembang. Class yang baru dapat dimasukkan tanpa harus di-compile ulang. Dimana tidak diperlukan developer untuk membuat dan pengguna untuk meng-install versi baru dari software. 2.1.8 Artificial Intelligence M enurut Guy W. Lecky-Thompson (2008, p3-5), artificial intelligence merupakan suatu sistem penalaran. Salah satu aspek dari AI adalah, AI membuat keputusan berdasarkan informasi dari model yang telah ada. Suatu modul AI akan menerima input, menganalisis input tersebut, dan menghasilkan output. Proses menganalisis input tersebut merupakan aspek “cerdas” dari sistem tersebut. Penggunaan AI dalam sebuah game dapat dilakukan melalui prescribed pattern ataupun melalui ingame knowledge-driven decision architectures. Dalam prescribed pattern, AI akan mengambil keputusan berdasarkan pola yang telah ditentukan sebelumnya tanpa dipengaruhi keadaan lingkungannya. Sedangkan pada in-game knowledge-driven decision architectures, AI akan mengikutsertakan keadaan lingkungannya sebagai bahan 27 pertimbangan dalam pengambilan keputusan. Pendekatan tersebut mengakibatkan keputusan yang diambil terlihat lebih alami. M enurut David M . Bourg dan Glenn Seemann (2004, p2), artificial intelligence merupakan suatu perilaku cerdas yang dilakukan oleh mesin yang telah dibuat sebelumnya. AI dibagi menjadi dua kategori, strong AI dan weak AI. Strong AI dianggap harus memiliki keterkaitan dengan emosi dan kemampuan untuk belajar dan beradaptasi. Weak AI melibatkan tujuan penggunaan dan teknologi yang lebih luas untuk memberikan kecerdasan yang lebih khusus kepada mesin. Game AI termasuk dalam kategori weak AI. M enurut David M . Bourg dan Glenn Seemann (2004, p2), definisi untuk game AI sangatlah luas dan fleksibel. Semua hal yang memberikan ilusi kecerdasan ke tinggat yang sesuai sehingga membuat permainan lebih mendalam, menantang, dan menyenangkan dapat dianggap sebagai game AI. Dengan demikian dapat disimpulkan bahwa AI memberikan kecerdasan kepada mesin hingga batas tertentu untuk dapat membuat penalaran yang mendekati perilaku manusia. 2.2 Teori Khusus Teori Khusus adalah teori yang berhubungan dengan topik yang dibahas dalam skripsi ini. 2.2.1 Teori Game M enurut Jesse Schell (2008, p37), game adalah suatu kegiatan pemecahan masalah yang dilakukan dengan pendekatan yang bersifat bersifat menyenangkan. 28 M enurut Jesse Schell (2008, p41-43), terdapat empat buah elemen dasar yang membentuk sebuah game, yaitu Mechanics, Story, Aesthetics, dan Technology. Keempat elemen tersebut disebut Elemental Tetrad. Gambar 2.8 Elemental Tetrad 1. Mechanics merupakan prosedur dan peraturan yang berlaku dalam game. 2. Story merupakan urutan kejadian yang terjadi dalam game. 3. Aesthetics merupakan bagaimana penampilan sebuah game yang dapat mempengaruhi pengalaman permain. 4. Technology merupakan media yang menghubungkan mechanics, story, dan aesthetics. M enurut Lindsay Grace (2005,p1), dalam mendeskripsikan suatu gameplay, game dibedakan menjadi beberapa jenis, yaitu: 1. Action Action game adalah game yang menekankan pada intensitas dari aksi sebagai atraksi utamanya. Respon reflek adalah kemampuan utama yang diperlukan dalam memainkan game bertipe action. 29 2. Adventure Adventure game adalah game yang menyediakan eksplorasi dan pemecahan misteri sebagai atraksi utamanya. Adventure game umumnya menawarkan cerita yang mengasyikan. Pemikiran, creatifitas, dan rasa penasaran adalah kemampuan umum yang diperlukan untuk menjadi pemain adventure game. 3. Puzzle Puzzle game adalah game yang menyediakan puzzle sebagai atraksi utamanya. Game bertipe puzzle biasanya diluncurkan dalam anggaran yang rendah melalui web. 4. Role Playing Role Playing game (RPG) adalah game yang menyediakan pemain sebuah peluan g untuk menghayati situasi dari karakter game. Role playing game memiliki karakter yang tergolong banyak, memiliki durasi yang panjang, dan manajemen karakter merupakan hal teknis. 5. Simulation Elemen utama dari game bertipe simulation adalah kemampuan untuk menyamai situasi pada dunia nyata. Simulation game menyediakan kesenangan melalui pemeragaan. 6. Strategy Strategy game adalah game yang menghibur melalui pemikiran dan pemecahan misteri. 30 2.2.2 Game Design M enurut Jesse Schell (2008, pXXIV), game design adalah suatu aksi untuk menentukan seperti apakah sebuah game seharusnya. M enurut Bob Bates (2004, p3), pembuatan game dimulai dengan membuat sebuah gameplay treatment yang dasar, yaitu sebuah dokumen berisi sekitar lima sampai enam halaman. Treatment tersebut pada akhirnya akan berkembang menjadi menjadi sebuah spesifikasi penuh untuk game tersebut, tetapi menulis treatment awal akan membantu untuk mematangkan pemikiran akan game yang akan dibuat. Tujuan utama dari membuat game desain dokumen adalah untuk menarik minat pembaca dan untuk menginformasikan kepada pembacanya mengenai gambaran keseluruhan game yang akan dibuat sehingga nantinya gambaran-gambaran ini dapat dikumpulkan menjadi suatu requirement. 2.2.3 A* Path Finding M enurut David Brackeen(2003, p661), A* merupakan algoritma pencarian yang bekerja seperti algoritma breadth-first search (BFS), tetapi dengan dua faktor tambahan yaitu setiap edge memiliki cost yang berbeda satu sama lain dan cost dari setiap node ke node tujuan dapat diperkirakan sehingga dapat membantu mengurangi pencarian ke arah yang salah. Perkiraan cost antara sebuah node dengan node tujuan dapat berupa perkiraan jarak, waktu, atau faktor lainnya. Semakin baik perkiraan cost yang dihitung, maka pencarian yang dilakukan akan semakin cepat. Namun algoritma A* hanya dapat bekerja dengan baik apabila perhitungan perkiraan cost tidak melebihi cost yang sebenarnya. 31 Algoritma A* dimulai dengan menambahkan node awal ke dalam sebuah open list. Open list tersebut berfungsi untuk menyimpan node yang berikutnya akan dikunjungi oleh algoritma tersebut. Berbeda dengan open list pada BFS, open list pada A* diurutkan berdasarkan jumlah antara cost dari node awal hingga node tersebut dan perkiraan cost dari node tesebut ke node tujuan, atau dengan kata lain berupa priority queue.Algoritma dilanjutkan dengan mengunjungi setiap node pada openlist dan akan terus berlangsung selama masih ada node pada open list atau selama node tujuan belum ditemukan. Node dikunjungi mulai dari node yang memiliki total cost paling kecil. Setiap kali sebuah node dikunjungi, node lain yang bersebelahan dengan node tersebut dan belum pernah dikunjungi akan dimasukkan ke dalam open list. 2.2.4 Finite S tate Machine M enurut David M . Bourg dan Glenn Seemann (2004, p165), finite state machine (FSM ) merupakan sebuah mesin abstrak yang dapat ada pada salah satu dari beberapa state yang berbeda dan telah ditetapkan sebelumnya. Sebuah FSM juga dapat mendefinisikan sekumpulan kondisi yang menentukan kapan dan bagaimana sebuah state harus berubah. FSM cukup sering digunakan dalam game karena FSM relatif mudah dimengerti dan diimplementasikan. M enurut David Brackeen (2003, p695-696), pada implementasinya dalam game, FSM dapat digunakan untuk menggambarkan keadaan maupun behavior dari suatu obyek dalam game tersebut. Suatu FSM dapat saja memiliki berbagai macam state seperti misalnya berjalan, menghindar, menyerang, bersembunyi, dan lain-lain. FSM juga mendefinisikan bagaimana dan kapan state dari sebuah obyek dapat berubah. FSM juga dapat berupa hierarki dari state yang berarti sebuah state dapat terdiri dari beberapa 32 state lainnya, seperti contohnya state bertarung dapat terdiri dari state menyerang, menghindar, dan melarikan diri. Gambar 2.9 Contoh Finite State Machine 2.2.5 Konsep 3D M enurut David Brackeen (2003, 345-360), berbeda dengan grafik 2D yang hanya memiliki sumbu x dan y, grafik 3D memiliki sumbu z yang biasanya digunakan untuk menggambarkan kedalaman. Ketiga sumbu pada grafik 3D tersebut tidak akan dapat digambarkan secara langsung pada layar monitor yang hanya memiliki kordinat x dan y. Oleh karena itu grafik 3D harus diterjemahkan atau diproyeksikan ke bidang dua dimensi untuk dapat ditampilkan di layar. Pada umumnya terdapat dua macam sistem koordinat 3D, left-handed dan righthanded coordinate system. Jari telunjuk menunjuk pada sumbu y, jari tengah menunjuk pada sumbu z, dan jari jempol pada sumbu x. Sistem koordinat yang paling umum digunakan adalah right-handed coordinate system dimana sumbu x menunjuk ke kanan, sumbu y menunjuk ke atas, dan sumbu z menunjuk ke belakang. 33 Gambar 2.10 Right-handed coordinate system Sistem koordinat lainnya adalah left-handed coordinate system dimana sumbu x menunjuk ke kanan, sumbu y menunjuk ke atas, dan sumbu z menunjuk ke depan. Namun sistem koordinat ini jarang digunakan. Gambar 2.11 Left-handed coordinate system Dalam grafik 3D, digunakan kamera untuk melihat objek-objek yang berada di dunia 3D. Pengelihatan kamera tersebut biasanya dibatasi oleh piramida dengan ujung terpotong yang disebut dengan viewfrustum. View frustum memungkinkan hanya objekobyek yang berada di dalamnya saja yang perlu digambar oleh aplikasi. Obyek-obyek tersebut akan diproyeksikan pada view window yang biasanya berukuran sama dengan layar monitor. View window tersebut yang kemudian akan ditampilkan pada layar monitor. 34 Gambar 2.12 Camera View Frustrum Operasi pada dunia 3D melibatkan transformasi 3D yaitu translasi, rotasi dan skala. Translasi dapat dilakukan dengan menambahkan vektor translasi ke setiap titik pada objek yang akan dipindahkan. Skala dapat dilakukan dengan memindahkan objek hingga pusat skala berada pada koordinat (0, 0, 0), lalu mengalikan faktor skala ke setiap titik pada objek tersebut, dan mengembalikan objek tersebut ke posisi awal. Untuk rotasi pada ruang 3D, biasanya melibatkan operasi rotasi terhadap sumbu x, y, dan z secara terpisah. 2.2.6 Model 3D Dalam website Wikipedia, model 3D merupakan representasi dari objek 3D dengan menggunakan kumpulan titik-titik yang berada pada ruang 3D yang terhubung oleh berbagai macam bentuk geometri seperti contohnya segitiga, garis, kurva, dan lainlain (http://en.wikipedia.org/wiki/3D_modeling, 2010). Karena berupa kumpulan data, model 3D dapat dibuat dengan menggunakan tangan(dibantu dengan 3D modelling tools), algoritma, atau discan. M odel 3D banyak digunakan dalam berbagai bidang 35 seperti bidang medis, industri film dan game, sains, geologi, arsitektur, dan lain-lain. Terdapat lima cara populer untuk merepresentasikan sebuah model: 1. Polygonal modelling: titik-titik dalam ruang 3D dihubungkan dengan garis sehingga membentuk polygonal mesh. Cara ini banyak digunakan karena cukup fleksibel dan dapat dirender dengan cepat. Namun polygon tidak dapat membuat permukaan yang melengkung. 2. NURBS modelling: permukaan NURBS dihasilkan dari garis kurva yang dipengaruhi oleh control points. Tidak seperti polygon, NURBS dapat membentuk permukaan melengkung sehingga cocok untuk membuat model organik. 3. Splines modelling: seperti NURBS, spline modelling juga dipengaruhi oleh garis lengkung. 4. Primitives modelling: menggunakan objek primitif seperti contohnya bola, kubus, silinder, dan lain-lain untuk membentuk model yang kompleks. 5. Sculpt modelling: menggunakan mesh dengan resolusi tinggi dan bantuan displacement map untuk menyimpan posisi setiap titik pada mesh tersebut. Jenis lain dari sculpt modelling adalah volumetric yang berbasis pada penggunaan voxel. Untuk penggunaan dalam game, biasanya mesh dengan resolusi tinggi tersebut diubah menjadi normal map. 2.2.7 jMonkeyEngine 2.0 M enurut website jM onkeyEngine, jM onkeyEngine (jM E) dirancang untuk menjadi real-time graphics engine berkecepatan tinggi. jM E dibuat untuk mengatasi kurangnya graphics engine dengan fitur lengkap yang (http://jmonkeyengine.org/wiki/doku.php/about_jme, 2010). ditulis dalam Java. 36 jM E menggunakan scene graph untuk mengatur data yang ada pada dunia 3D. Scene graph merupakan sebuah struktur data berbentuk tree yang menyimpan informasi dan relasi antara data dalam dunia 3D. Scene graph menyimpan data dalam jumlah yang sangat besar dan kemudian dibagi menjadi kelompok-kelompok kecil yang lebih mudah diatur. Biasanya kelompok tersebut dikelompokkan berdasarkan suatu hubungan, yaitu spatial locality. Pengelompokkan tersebut memungkinan dilakukannya frustum culling secara cepat tanpa perlu memeriksa setiap objek yang ada. Frustum culling akan dilakukan dari root node pada scene graph dan dilanjutkan pada branch node hingga mencapai leaf node. Jika sebuah node ternyata tidak perlu dirender, maka semua node yang berada di dalamnya tidak perlu diperiksa. Dengan demikian, waktu proses menjadi lebih singkat.