BAB II LANDASAN TEORI 2.1.
State of The Art Berikut ini adalah penelitian yang telah dilakukan dan memiliki korelasi
yang searah dengan penelitian yang dibahas, antara lain: Latius Hermawan, R Kristofus Jawa Bendi (2013), tentang “Penerapan Algoritma A* pada Aplikasi Puzzle”. Aplikasi ini mengimplementasikan Algoritma A-Star untuk membantu pemain dalam memainkan permainan secara cepat dan tanpa menghabiskan waktu yang lama. Beny Hakim Halimsah, Eggy Margiso (2014), tentang “Problem Solving Permainan Puzzle 8 Menggunakan Algoritma A*”. Aplikasi game ini menerapkan hasil pencarian tujuan dengan menggunakan algoritma A-Star dengan program Visual Basic 6. Pemrograman menggunakan struktur data Linked List dan Tree maka tujuan dari game puzzle 8 akan ditemukan dan proses pencarian angka yang tersusun dengan baik. Riki Wahyudi, Hendra Handoko (2015), tentang “Perancangan Aplikasi Quiz Menggunakan Metode Pengacakan Linear Congruential Generator (LCG) Berbasis Android”. Pada aplikasi ini memiliki kesamaan yaitu menggunakan metode pengacakan Linear Congruential Generator sebagai algoritma pengacak soal kuis. Perbedaan penggunaan algoritma terletak pada jumlah soal yang digunakan karena akan berpengaruh pada penentuan pemilihan nilai-nilai pada rumus algoritma. I Made D Biantara, I Made Sudana, Alfa F Suni, Suryono, Arimaz Hangga (2015), tentang “Modifikasi Metode Linear Congruential Generator untuk
10
11
Optimasi Hasil Acak”. Pada aplikasi ini memiliki kesamaan yaitu menggunakan metode pengacakan Linear Congruential Generator sebagai algoritma pengacak. Namun pengacakan soal dibuat dengan memodifikasi Linear Congruential Generator (LCG) menjadi Coupled Linear Congruential Generator (CLCG). Pengacakan menggunakan CLCG memiliki tahapan yang berbeda dengan LCG. Model matematis untuk hasil bilangan acak dengan CLCG menggunakan matriks baru dengan persamaan yang berbeda dengan LCG. Sehingga perbedaan penggunaan algoritma terletak pada penggunaan rumus persamaan LCG. Pada penelitian ini dibuat game puzzle dan kuis dengan mengangkat tema tokoh ilmuwan muslim sehingga selain sebagai sarana hiburan juga sebagai media menambah wawasan dan informasi mengenai tokoh ilmuwan muslim. Pada game ini terdapat 2 algoritma yang digunakan yaitu algoritma A*(A-Star) dan algoritma Linear Congruential Generator (LCG). Algoritma A* digunakan untuk membantu pemain dalam menyelesaikan puzzle jika merasa kesulitan untuk menyelesaikan, sehingga akan mempersingkat waktu untuk menyelesaikan permainan. Algoritma LCG digunakan untuk melakukan pengacakan soal-soal yang terdapat pada kuis sehingga soal yang muncul lebih sulit untuk diprediksi kemunculan nya. Penyusun akan melakukan modifikasi pada Algoritma LCG yang bertujuan untuk mengurangi risiko terjadinya perulangan bilangan acak pada periode tertentu.
12
Tabel 2.1 State of The Art Deskripsi Penelitian
Hermawan,
Halimsah,
Wahyudi,
I Made Biantara,
JawaBendi
Margiso
Handoko
I Made Sudana,
(2013)
(2014)
(2015)
Dkk (2015)
Posisi Penelitian
Algoritma yang Digunakan
A-Star
LCG
Objek Penelitian 8 puzzle 3x3
Soal Ilmu
Pengetahuan Umum
Ilmuwan Muslim
Pengacakan Soal
Basis Aplikasi
Android
Dekstop
2.2.
Game
2.2.1 Sejarah Game Dalam buku yang berjudul “Optimalkan Potensi Anak Dengan Game” yang ditulis oleh Al. Tridhonanto (2011) dijelaskan bahwa game sebenarnya sudah ditemukan sejak tiga dasawarsa lalu, kemunculan nya pertama kali atas prakarsa Steven Russel dalam proyeknya yang bernama Computer Games pada tahun 1962 dengan produk andalannya bernama Star Wars.
13
Delapan tahun kemudian, sekitar tahun 1970-an muncul game yang cukup terkenal dikalangan gamers saat itu, namanya game Pong dengan sistem disket atau cartridge. Setelah itu pada tahun 1980- an muncul game yang cukup populer dengan basis teknologi IBM PC yakni game Pacman. Hingga sekarang game ini juga masih populer dikalangan gamers dimana Pacman ini memakan semua item, dimana diantara item tersebut terdapat item penambah tenaga yang dapat digunakan untuk memakan hantu yang selalu menghalanginya. Pada tahun 1993 tercipta yang juga tidak kalah populer dengan Pacman yaitu game Mortal Combat. Game ini mengusung genre aksi dimana dua karakter akan saling beradu jurus dan ilmu untuk saling menjatuhkan. Lima tahun kemudian muncul game Doom dengan desain yang lebih canggih karena teknologinya telah menggunakan basis 3d tetapi sederhana dan sistem suara yang masih terbatas. Dalam hal lain belum lagi ditambah tampilan gambar game dengan tekstur dan model yang bervariasi, lebih berwarna, nyata, dan menarik. Jika game yang dimiliki dilengkapi dengan fasilitas 3d maka hasilnya akan sangat mirip dengan kondisi nyata. Hal itu karena didukung dengan teknologi CG (Computer Graphics). Di lihat dari segi komoditas game dari tahun 1990-an sampai tahun 2000an sangatlah berbeda. Pada tahun 1990-an game dianggap sebagai komoditas bagi anak-anak sedangkan pada era tahun 2000-an game sudah melampaui berbagai bidang seperti hiburan bagi semua kalangan, bisnis, simulasi, edukasi, dan juga pembelajaran virtual. Perputaran uang dalam industri game juga sangat besar dan pertumbuhannya sangat pesat.
14
2.2.2 Definisi Game Dalam bahasa Indonesia game diartikan sebagai permainan. Permainan adalah kegiatan kompleks yang di dalamnya terdapat peraturan, play dan budaya. Sebuah permainan adalah sistem dimana pemain terlibat konflik buatan, di sini pemain berinteraksi dengan sistem dan konflik dalam permainan merupakan rekayasa atau buatan [12]. Berikut definisi game menurut beberapa ahli: 1. Agustinus Nilwan dalam bukunya Pemrograman Animasi dan Game Profesional terbitan Elex Media Komputindo, game merupakan permainan komputer yang dibuat dengan teknik dan metode animasi. Jika ingin mendalami penggunaan animasi haruslah memahami pembuatan game. Atau jika ingin membuat game, maka haruslah memahami teknik dan metode animasi, sebab keduanya saling berkaitan. 2. David Parlett, Game adalah sesuatu yang memiliki "akhir dan cara mencapainya": artinya ada tujuan, hasil dan serangkaian peraturan untuk mencapai keduanya. 3. Greg Costikyan, Game adalah sebentuk karya seni di mana peserta nya yang disebut pemain, membuat keputusan untuk mengelola sumber daya yang dimilikinya melalui benda di dalam game demi mencapai tujuan. Game sendiri mempunyai dampak positif dan negatif pada kehidupan yang memainkannya. Contoh dampak positif, misalnya sebagai penghilang stress, karena lelah bekerja seharian, mungkin bermain game tepat untuk menghilangkan penat tersebut. Lalu bagi anak-anak sebagai media untuk menambah kecerdasan otak, daya tanggap dan masih banyak lagi dampak positif yang lainnya. Contoh dampak negatif, misalnya karena terlalu sering bermain game lupa untuk
15
melakukan pekerjaan yang lainnya, sehingga membuat pekerjaan lain menjadi tertunda. 2.2.3 Jenis-Jenis Game Beberapa jenis game berdasarkan cara pembuatannya, cara pemasarannya, mesin yang menjalankannya, jenis game diantaranya sebagai berikut: 1.
Game Personal Computer (PC) Game personal computer adalah game yang dibuat untuk komputer baik
berbasis Windows, Mac, ataupun Linux. PC menyediakan kekuatan grafis dan pemrosesan yang kuat yang memungkinkan pengembang untuk membuat game yang mutakhir. Tetapi kelemahan game PC adalah harga yang cukup mahal karena harus menggunakan hardware yang up-to-date untuk memainkan game. Selain itu, kelemahan game PC bagi pengembang adalah banyaknya varian dari konfigurasi Game. 2.
Game Console Console adalah hardware yang dibuat oleh pihak ketiga seperti Sony,
Microsoft, dan Nintendo. Console terhubung ke televisi dan tujuan utamanya adalah untuk bermain game. Game Console sangat menarik bagi pengembang game karena mereka hanya perlu memikirkan satu konfigurasi hardware ketika membuat software untuk konsol. Sangat kontras dengan PC yang memiliki opsi konfigurasi yang tak terbatas. 3.
Game Arcade Game yang dijalankan pada mesin dengan input dan output audio visual yang
terintegrasi dan tersedia ditempat umum, seperti mall, bandara dan sebagainya.
16
4.
Game Mobile Mobile platform terdiri atas sesuatu yang portable dan bisa digenggam,
termasuk ponsel, PDA, iPods, dan handheld. Game seperti Nintendo DSi atau Sony PSP. Game mobile memiliki kontrol yang sederhana (terutama jika dibandingkan dengan PC). 2.2.4 Genre Game Chris Crawford mencatat bahwa "keadaan desain komputer game berubah dengan cepat karena itu kita akan mengharapkan taksonomi disajikan di sini untuk menjadi usang atau tidak memadai dalam waktu singkat. Hampir semua jenis klasifikasi genre, soal genre tertentu setiap video game individu terbuka untuk interpretasi pribadi. Selain itu, penting untuk dapat memikirkan setiap permainan individu sebagai milik beberapa genre sekaligus, Game dibagi menjadi beberapa genre, berikut ini adalah macam-macam genre game: 1. Action Shooting (Tembak – Menembak) Menembak, memukul, bisa juga menebas, tergantung cerita dan tokoh di dalamnya. Video game jenis ini sangat memerlukan kecepatan refleks, koordinasi mata-tangan, juga timing, inti dari game jenis ini adalah tembak menembak. Contoh: GTA dan Crysis. 2. Action Fighting (Pertarungan) Ada yang mengelompokkan Video game fighting di bagian Aksi, namun sebenarnya berbeda, jenis ini memang memerlukan kecepatan refleks dan koordinasi mata-tangan, tetapi inti dari game ini adalah penguasaan jurus (hafal caranya dan lancar mengeksekusi nya), pengenalan karakter dan timing sangatlah
17
penting untuk mengalahkan lawan secepat mungkin. Contoh: Mortal Kombat dan Tekken. 3. Adventure (Petualangan) Game murni petualangan lebih menekankan pada jalan cerita dan kemampuan berpikir pemain dalam menganalisa tempat secara visual, memecahkan teka-teki maupun menyimpulkan rangkaian peristiwa dan percakapan karakter hingga penggunaan benda-benda tepat pada tempat yang benar. Contoh: Kings Quest, dan Space Quest. 4. Strategy (Strategi) Video game strategi biasanya memberikan pemain atas kendali tidak hanya satu orang tapi minimal sekelompok orang dengan berbagai jenis tipe kemampuan, sampai kendaraan, bahkan hingga pembangunan berbagai bangunan, pabrik dan pusat pelatihan tempur, tergantung dari tema ceritanya. Kebanyakan game strategi adalah game perang. Contoh: Warcraft. 5. Simulation (Simulasi) Video game jenis ini seringkali menggambarkan dunia di dalamnya sedekat mungkin dengan dunia nyata dan memperhatikan dengan detail berbagai faktor. Dari mencari jodoh dan pekerjaan, membangun rumah, gedung hingga kota, mengatur pajak dan dana kota hingga keputusan memecat atau menambah karyawan.
Dunia
kehidupan rumah
tangga
sampai bisnis membangun
konglomerasi, dari berjualan limun pinggir jalan hingga membangun laboratorium cloning. Video game jenis ini membuat pemain harus berpikir untuk mendirikan, membangun dan mengatasi masalah dengan menggunakan dana yang terbatas.
18
6.
Puzzle (Menyusun) Video game jenis ini sesuai namanya berintikan mengenai pemecahan teka-
teki, baik itu menyusun balok, menyamakan warna bola, memecahkan perhitungan matematika, melewati labirin, sampai mendorong-dorong kota masuk ke tempat yang seharusnya, itu semua termasuk dalam jenis ini. Sering pula game jenis ini adalah juga unsur game dalam Video game petualangan maupun game edukasi. 7. Sport game (Olahraga) Game ini merupakan adaptasi dari kenyataan, membutuhkan kelincahan dan juga strategi dalam memainkannya. Game berupa kompetisi antara dua pemain atau lebih, di mana pemain dapat berupa individual atau tim. Contoh game tipe ini antara lain sepak bola, bola basket, tenis, dan billiard. 8. RPG (Role Playing Game) Video game jenis ini sesuai dengan terjemahannya, bermain peran, memiliki penekanan pada tokoh/peran perwakilan pemain di dalam game, yang biasanya adalah tokoh utamanya, dimana seiring permainannya, karakter tersebut dapat berubah dan berkembang ke arah yang diinginkan pemain dalam berbagai parameter yang biasanya ditentukan dengan naiknya level, baik dari status kepintaran, kecepatan dan kekuatan karakter, senjata yang semakin sakti, ataupun jumlah teman maupun mahluk peliharaan. 9. Education (Edukasi) Game edukasi merupakan paket software yang menciptakan kemampuan pada lingkungan game yang diberikan sebagai alat bantu untuk memotivasi atau membantu
siswa
untuk
melalui
prosedur
game
secara
teliti
untuk
19
mengembangkan
kemampuannya.
Developer
yang
membuatnya,
harus
memperhitungkan berbagai hal agar game ini benar-benar dapat mendidik menambah pengetahuan dan meningkatkan keterampilan yang memainkannya. Target segmentasi pemain harus pula disesuaikan dengan tingkat kesulitan dan design visual ataupun animasi nya. 2.3.
Ilmuwan Muslim Salah satu ciri yang membedakan Islam dengan yang lainnya adalah
penekanannya terhadap ilmu (sains). Al-Qur’an dan Al-Sunnah mengajak kaum muslimin untuk mencari dan mendapatkan ilmu dan kearifan, serta menempatkan orang-orang yang berpengalaman pada derajat yang tinggi. Empat belas abad yang lalu atau abad keenam masehi, Allah SWT. Melalui ayat yang pertama turun, surah Al-Alaq ayat 1-5, memerintahkan kepada umat manusia agar manusia menguasai ilmu pengetahuan dan teknologi, dan mengajukan berbagai penemuan dalam berbagai bidang disiplin ilmu. Nama-nama seperti Ibnu Hayyan, alKhawarizmi, al-Kindi, al-Farabi, Ibnu Sina, Ibn al- Khaitam, al-Biruni, al-Ghazali dan lainnya adalah ilmuwan yang pernah dicetak oleh zaman keemasan Islam [8]. Para ilmuwan dan penemu muslim Arab, Persia dan Turki telah berhasil membuat beberapa penemuan yang luar biasa ratusan tahun lebih dulu dibanding rekan-rekan mereka di eropa. Mereka menarik pengaruh dari filsafat Aristoteles dan Neo-Platonis, termasuk Euclid, Archimedes, Ptolemy dan lain-lain. Kaum muslimin pada saat itu telah berhasil membuat berbagai penemuan di bidang kedokteran, bedah, matematika, fisika, kimia, filsafat, astrologi, geometri dan bidang lainnya, yang tak terhitung jumlahnya dan menuliskan karya-karyanya dalam berbagai buku.
20
2.4.
Algoritma Algoritma adalah kumpulan instruksi yang dibuat secara jelas untuk
menunjukkan langkah-langkah penyelesaian suatu masalah. Algoritma berusaha melakukan
langkah-langkah
seefisien
mungkin
untuk
mencapai
tujuan
semaksimal mungkin. Algoritma sebenarnya implementasi dari kehidupan seharihari misalnya algoritma stack dan algoritma queue yang merupakan implementasi dari antrean dan tumpukan yang terjadi dalam aktivitas sehari-hari. Algoritma merupakan prosedur komputasi yang mengambil beberapa nilai atau kumpulan nilai sebagai input kemudian di proses sebagai output sehingga algoritma merupakan urutan langkah komputasi yang mengubah input menjadi output. 2.4.1 Algoritma A-Star (A*) Algoritma A* merupakan algoritma yang dikemukakan oleh Hart, Nilsson, dan Raphael pada tahun 1968. Algoritma A* merupakan salah satu algoritma Branch & Bound atau disebut juga sebagai sebuah algoritma untuk melakukan pencarian solusi dengan menggunakan informasi tambahan (heuristik) dalam menghasilkan solusi yang optimal [2]. Beberapa terminologi dasar yang terdapat pada algoritma ini adalah starting point, current node, simpul, neighbor node, open set, closed set, came from, harga (cost), walkability, target point. Starting point adalah sebuah terminologi untuk posisi awal sebuah benda. Current node adalah simpul yang sedang dijalankan dalam algoritma pencarian jalan terpendek. Simpul adalah petak-petak kecil sebagai representasi dari area pathfinding. Bentuknya dapat berupa persegi, lingkaran, maupun segitiga. Neighbor node adalah simpul-simpul
21
yang bertetangga dengan current node. Open set adalah tempat menyimpan data simpul yang mungkin diakses dari starting point maupun simpul yang sedang dijalankan. Closed set adalah tempat menyimpan data simpul sebelum current node yang juga merupakan bagian dari jalur terpendek yang telah berhasil didapatkan. Came from adalah tempat menyimpan data ketetanggaan dari suatu simpul, misalnya y came from x artinya neighbor node y dari current node x. Harga (F) adalah nilai yang diperoleh dari penjumlahan nilai G, jumlah nilai tiap simpul dalam jalur terpendek dari starting point ke current node, dan H, jumlah nilai perkiraan dari sebuah simpul ke target point. Target point yaitu simpul yang dituju. Walkability adalah sebuah atribut yang menyatakan apakah sebuah simpul dapat atau tidak dapat dilalui oleh current node [3]. Algoritma A* menerapkan teknik heuristik dalam membantu penyelesaian persoalan. Heuristik adalah nilai yang memberi harga pada tiap simpul yang memandu A* mendapatkan solusi yang diinginkan. Dengan heuristik yang benar, maka A* pasti akan mendapatkan solusi (jika memang ada solusinya) yang dicari. Dengan kata lain, heuristik adalah fungsi optimasi yang menjadikan algoritma A* lebih baik dari pada algoritma lainnya. Namun heuristik masih merupakan estimasi / perkiraan biasa saja, sama sekali tidak ada rumus khususnya. Artinya, setiap kasus memiliki fungsi heuristik yang berbeda-beda. Algoritma A* ini bisa dikatakan mirip dengan algoritma Dijkstra, namun pada algoritma Dijkstra, nilai fungsi heuristik selalu 0 (nol) sehingga tidak ada fungsi yang mempermudah pencarian solusinya [3]. Nilai ongkos pada setiap simpul n menyatakan taksiran ongkos termurah lintasan dari simpul n ke simpul target (target node), yaitu:
22
F (n) = nilai taksiran lintasan termurah dari simpul status n ke status tujuan Dengan kata lain, F (n) menyatakan batas bawah (lower bound) dari ongkos pencarian solusi dari status n. Fungsi heuristik yang terdapat pada algoritma A* untuk menghitung taksiran nilai dari suatu simpul dengan simpul yang telah dilalui adalah: ( ) = ( )+
( )
Dimana: ( ) = ongkos untuk simpul ( ) = ongkos mencapai simpul
dari akar
( ) = ongkos mencapai simpul tujuan dari simpul 2.4.2 Linear Congruential Generator Pseudorandom Number Generator (PNRG) atau dalam Bahasa Indonesia pembangkit bilangan acak semu adalah sebuah algoritma yang membangkitkan sebuah deret bilangan yang tidak benar-benar acak. Keluaran dari pembangkit bilangan acak semu hanya mendekati beberapa dari sifat-sifat yang dimiliki bilangan acak. Walaupun bilangan yang benar-benar acak hanya dapat dibangkitkan oleh perangkat keras pembangkit bilangan acak, bukannya oleh perangkat lunak komputer, akan tetapi bilangan acak semu banyak digunakan dalam beberapa hal seperti simulasi dalam ilmu fisika, matematika, biologi dan sebagainya, dan juga merupakan hal yang sangat penting dalam dunia kriptografi. Beberapa algoritma enkripsi baik yang simetris maupun nirsimetris memerlukan bilangan acak sebagai parameter masukannya seperti parameter kunci pada algoritma kunci publik dan pembangkitan initialization vector (IV) pada algoritma kunci simetri. Walaupun terlihat sederhana untuk mendapatkan bilangan acak,
23
tetapi diperlukan analisis matematika yang teliti untuk membangkitkan bilangan seacak mungkin. Salah satu metodenya adalah Linear Congruential Generator atau LCG [5]. Linear Congruential Generator (LCG) merupakan jenis pseudorandom number generator (PRNG) yang banyak dipergunakan dalam aplikasi komputer modern. Linear Congruential Generator (LCG) ditemukan oleh D.H Lehmer. Tak lama sesudah itu, banyak programmer yang menggunakan metode Linear Congruential Generator tersebut untuk menghasilkan bilangan yang tampak random (pseudorandom number) dalam jumlah besar dan waktu yang cepat [5]. Linear Congruential Generator atau jika diubah kedalam Bahasa Indonesia menjadi Pembangkit Bilangan Acak Kongruen-Lanjar merupakan pembangkit bilangan acak yang sederhana, mudah dimengerti teorinya, dan juga mudah untuk diimplementasikan. LCG didefinisikan dalam relasi berulang berikut: ( )=(
+ ) mod
Dimana: ( ) = bilangan acak ke- dari deret nya = bilangan acak sebelumnya = faktor pengali = increment = modulus adalah kunci pembangkit atau disebut juga umpan (seed). LCG mempunyai periode tidak lebih besar dari
, dan pada kebanyakan kasus
24
periodenya kurang dari itu. LCG mempunyai periode penuh ( memenuhi syarat berikut: a.
relatif prima terhadap
b.
– 1 dapat dibagi dengan semua faktor prima dari
c.
– 1 adalah kelipatan 4 jika
d.
> maks ( , ,
e.
> 0,
.
adalah kelipatan 4
)
>0
Berikut flowchart dari algoritma LCG
Gambar 2.1 Flowchart Algoritma LCG.[6]
– 1) jika
25
Ciri khas dari algoritma LCG adalah terjadi pengulangan pada periode waktu tertentu atau setelah sekian kali pembangkitan, hal ini adalah salah satu sifat dari metode ini dan pseudorandom generator pada umumnya. Penentuan konstanta algoritma ( ,
dan
) sangat menentukan baik tidaknya bilangan acak
yang diperoleh dalam arti memperoleh bilangan acak yang seakan-akan tidak terjadi perulangan. Keunggulan LCG terletak pada kecepatannya dan hanya membutuhkan sedikit operasi bit. Sayangnya, LCG tidak dapat digunakan untuk kriptografi karena bilangan acak nya dapat diprediksi urutan kemunculan nya. Oleh karena itu LCG tidak aman digunakan untuk kriptografi. Namun demikian, LCG tetap berguna
untuk
aplikasi
non-kriptografi
seperti
simulasi,
sebab
LCG
memperlihatkan sifat statistik yang bagus dan sangat tepat untuk uji-uji empirik (Putranto, 2010). Semua dari beberapa algoritma untuk membangkitkan bilangan acak semu, tidak ada yang benar-benar dapat menghasilkan bilangan acak secara sempurna dalam arti benar-benar acak dan tanpa ada perulangan selama pembangkit yang digunakan adalah komputer yang memiliki sifat deterministik. Bilangan yang benar-benar acak hanya dapat dihasilkan oleh perangkat keras (hardware). [4] 2.5
Metode Pengembangan Struktur yang diterapkan pada pengembangan suatu produk perangkat
lunak yang bertujuan untuk mengembangkan sistem dan memberikan panduan yang bertujuan untuk menyukseskan proyek pengembangan sistem melalui tahap demi tahap. Proses ini memiliki beberapa model yang masing-masing
26
menjelaskan pendekatan terhadap berbagai tugas atau aktivitas yang terjadi selama proses. Contoh model proses pengembangan perangkat lunak antara lain adalah proses iteratif, Extreme Programming, serta proses air terjun (waterfall). Untuk game sendiri digunakan metode pengembangan Game Development Life Cycle. 2.5.1 Software Development Life Cycle Software development life cycle (SDLC), juga dikenal dengan software process model, adalah strategi pengembangan perangkat lunak yang mencakup proses, metode dan alat yang digunakan untuk melakukan pengembangan perangkat lunak. Berikut fase SDLC pada gambar 2.3.
Gambar 2.2 Fase Software Development Life Cycle.[10] Tahap analisis terkait dengan pengumpulan dan menganalisis kebutuhan user untuk membuat spesifikasi kebutuhan perangkat lunak. Pada tahap desain, analisis kebutuhan yang telah dibuat akan diterjemahkan ke dalam model yang lebih rinci dan software modules representation. Pada tahap code, model akan diimplementasikan kedalam source code dan menjadi executable application. Pada tahap akhir, pengujian akan dilakukan untuk memastikan bahwa semua elemen bekerja dengan baik dan sesuai dengan spesifikasi analisis model yang sudah dibuat. Menurut Pressman, Game adalah jenis perangkat lunak dengan tujuan untuk memberikan hiburan. Namun dalam praktik pengembangan game, hanya dengan mengadopsi software development life cycle (SDLC) tidaklah cukup. Sebagai pengembang perangkat lunak menghadapi beberapa tantangan selama
27
menggunakan siklus SDLC. Sedangkan SDLC merupakan proses sistematis dari rekayasa perangkat lunak. game bukanlah produk murni dari pure engineering. Game juga bukan hanya tentang seni, sebuah penciptaan kreativitas dan pemikiran yang imajinatif. Namun game lebih dari itu, seperti kerajinan, dibuat dengan kombinasi dari interleaving, aspek multi disiplin dari seni, musik, pemrograman, akting dan manajemen dan integrasi aspek-aspek tersebut. Untuk mengatasi masalah tersebut, pengembangan game membutuhkan jenis pendekatan tertentu guna mengintegrasikan aspek-aspek dalam game. Oleh karena itu, pengembangan game membutuhkan pedoman spesifik yang mengatur proses pengembangannya, yaitu game development life cycle (GDLC). 2.5.2 Game Development Life Cycle Metode pengembangan game yang digunakan yaitu pengembangan game development life cycle yang terdiri dari enam tahap, yaitu Initiation, preproduction, production, testing (Uji coba internal), Beta (Uji Coba System user), Release (Peluncuran) seperti pada gambar 2.2
Gambar 2.3 Game Development Life Cycle [10]
28
a. Initiation Tahapan pertama untuk membuat sebuah game adalah membuat garis besar konsep mengenai game seperti apa yang akan dibuat. Tahapan ini akan menghasilkan konsep dari game dan deskripsi game yang sederhana. b. Pre-Production Pre-Production adalah salah satu tahapan awal dan terpenting dalam siklus produksi. Tahap pre-production meliputi pembuatan dan revisi dari desain game dan pembuatan prototype game. Desain game focus pada genre game, gameplay, mekanisme, storyline, characters, challenges, fun factors, technical aspect, dan itu
merupakan
bagian
dari
elemen
dokumentasi
pada
game
design
document(GDD). Setelah GDD selesai dibuat, selanjutnya membuat form prototype untuk mengevaluasi desain game dan keseluruhan ide pembuatan game. Pada tahap pertama, prototype yang dibuat berupa Foundation dan Structure game. Sedangkan pada tahap selanjutnya, prototype akan disempurnakan dengan mengalami beberapa perbaikan dalam Formal Details. c. Production Proses inti dari siklus pembuatan adalah produksi. Ini merupakan jantung dari proses pengembangan game, Produksi berkaitan erat dengan penciptaan asset permainan, source code, dan integrasi dari kedua elemen. Penjelasan ini hanya sesederhana itu, tetapi realitas kegiatan tidak sesederhana itu. Kita harus mengelola tonggak, penyampaian, dan memastikan bahwa ketika kedua elemen yang terintegrasi akan bekerja dengan baik. Hasil produksi adalah permainan yang siap untuk dimainkan. Dalam bentuk Detail Formal prototipe atau Perbaikan
29
prototipe. Permainan dimainkan tidak hanya mencakup gameplay dan mekanisme, tetapi juga aturan menang-kalah, hubungan antara fitur, dan yang paling penting berjalan dengan baik. d. Testing Testing berkisar pada evaluasi dari membangun permainan. Pengujian ini dilakukan untuk menguji fitur permainan, konsep, desain. Pengujian dilakukan oleh anggota tim internal untuk menilai fitur permainan, modul, dan lain-lain Mendekati akhir, tes ini digunakan untuk menilai permainan secara keseluruhan permainan. Setelah pengujian dilakukan, akan dihasilkan laporan pengujian yang mencakup semua kesalahan yang ada. Hasil tes akan berakhir dalam dua keputusan yang berbeda yaitu mengulangi siklus produksi dari Pra-produksi baru kemudian memperbaiki game, atau maju ke langkah berikutnya, dalam konteks ini: Pengujian Beta. e. Beta Beta dilakukan oleh pihak ketiga, seperti penerbit, pembeli potensial, user dan lain-lain. Tujuan dari Pengujian Beta adalah untuk menemukan bug tersembunyi dalam permainan dan feed-back user terhadap permainan. Hasilnya adalah sama, yaitu laporan pengujian. Laporan ini digunakan untuk memutuskan apakah akan memperbaiki lagi permainan (ulangi dari pra-produksi) atau permainan tersebut sudah baik-baik saja dan siap untuk release. f. Release Tahap ini berhubungan dengan peluncuran game, dan diluncurkan ke pasar yang tepat, dan menutup proyek. Membuat buku pengetahuan, porto folio proyek
30
dan berbagi pengetahuan penting untuk mempersiapkan diri untuk sebuah proyek yang lebih baik ke depan. [10] 2.6
Game Design Document Game Design adalah penciptaan sebuah konten atau aturan dalam sebuah
permainan. fase ini tidak melibatkan pemrograman, seni, animasi atau pemasaran, atau salah satu tugas lain yang diperlukan dalam pembuatan sebuah game. semua tugas ini dapat secara kolektif disebut pengembangan game dan desain game merupakan salah satu bagian dari pembuatan sebuah game [13]. Berikut adalah beberapa definisi game design dari beberapa ahli: 1. Menurut Andrew Rolling’s dan Ernest Adams (2003, p.4), Game Design adalah suatu proses dari: a. Mengimajinasikan suatu ide game. b. Mendefinisikan bagaimana suatu game bekerja. c. Mendeskripsikan elemen – elemen yang membangun game tersebut (dari segi konsep, fungsi, artistik dan segi – segi lainnya). d. Mengantarkan informasi tentang ide game tersebut kepada tim yang akan membangun game. 2. Menurut Jesse Schell (2008), game desain adalah aksi yang menentukan bagaimana seharusnya sebuah game. 3. Menurut Eko Nugroho (2013), game design adalah sebuah proses di mana kita benar-benar belajar untuk mewujudkan mimpi, merealisasikan berbagai imajinasi, dan menghadirkan segala ide/pemikiran kita dalam bentuk yang kemudian dapat dirasakan oleh banyak orang.
31
2.6.1 Pengertian Game Design Document Berikut adalah beberapa definisi game design document dari beberapa ahli: 1. Menurut Adams, Ernest (2010, p54), game design document adalah kumpulan dokumen-dokumen yang digunakan game designer untuk menginformasikan mengenai game yang didesain, proses ini mengubah ide yang tadinya abstrak menjadi rencana tertulis. 2. Menurut Gates, Bob (2004), pembuatan game akan dimulai dari pembuatan game design document. game design document digunakan untuk menjadi landasan pengembangan game tersebut, dan untuk menarik minat pembaca serta menginformasikan gambaran keseluruhan game yang akan dibuat kepada tim pengembang. 3. Menurut Oxland, Kevin (2004), Game design document adalah dokumen yang menjadi acuan dalam pengembangan game. Dokumen ini mendeskripsikan konsep game dan gambaran umum gameplay secara detail. Dokumen ini adalah dokumen hidup dan selalu mengalami perubahan sepanjang pengembangan game. 2.6.2 Komponen Game Design Document Berikut ini komponen – komponen utama dalam penyusunan Game Design Document. 1.
Game Overview, berisi informasi singkat tentang game concept Feature Set, Genre, Gameplay dan Target Audience.
2.
Level Design, mendesain setiap level nya, termasuk fitur, tingkat kesulitan, dan tema dari setiap level.
32
3.
World Design, merancang dunia dalam game, setting kejadian, dan tema keseluruhan dari game dibahas di dalamnya.
4.
User Interface Design, merancang Screen Flow, Screen Description dan mendesain interaksi user.
5.
Content Design, merancang karakter, dan lain-lain.
6.
System Design, merancang peraturan dalam permainan.
2.7
Unity 3D Unity 3D adalah sebuah game engine yang berbasis cross-platform. Unity
dapat digunakan untuk membuat sebuah game yang bisa digunakan pada perangkat komputer, ponsel pintar android, iPhone, PS3, dan bahkan X-BOX. Unity adalah sebuah tool yang terintegrasi untuk membuat game, arsitektur bangunan dan simulasi. Unity bisa untuk games PC dan games Online. Unity tidak dirancang untuk proses desain atau modelling, dikarenakan unity bukan tool untuk mendesain. Jika ingin mendesain, pergunakan 3D editor lain seperti 3dsmax atau Blender. Banyak hal yang bisa dilakukan dengan unity, ada fitur audio reverb zone, particle effect, dan Sky Box untuk menambahkan langit. Fitur scripting yang disediakan, mendukung 3 bahasa pemrograman, JavaScript, C#, dan Boo. Flexible dan Easy Moving, rotating, dan scaling objects hanya perlu sebaris kode. Begitu juga dengan duplicating, removing, dan changing properties. Visual Properties Variables yang di definisikan dengan scripts ditampilkan pada Editor. Bisa digeser, di drag and drop, bisa memilih warna dengan color picker.
33
Gambar 2.4 Lembar Kerja Unity [14]. Gambar di atas menampilkan lembar kerja dari unity versi gratis. Pada setiap project Unity terdapat sebuah Assets folder. Isi dari Assets folder ditampilkan dalam bentuk panel project dalam editor unity. Assets folder
adalah
tempat untuk menyimpan semua komponen dari game seperti tingkatan game (level scenes), scripts, 3D models, texture, dan file audio. Untuk menambahkan assets ke dalam project, cukup dengan menarik (drag) file yang ingin ditambahkan ke dalam panel project. Atau dengan memilih menu Assets->Import New Asset. Untuk membuat scene baru, gunakan tombol Control-N (pada keyboard). Untuk menyimpan scene yang sedang aktif, gunakan Control-S (pada keyboard). Panel Hierarchy menampung semua Game Object yang terdapat di scene yang sedang aktif. Beberapa dari Game Object tersebut berhubungan langsung ke asset seperti objek 3D. Objek yang terdapat pada hierarchy dapat di seleksi dan dihapus. Jika objek dihapus atau ditambahkan pada scene, maka objek tersebut juga akan hilang atau muncul pada hierarchy.
34
Unity menggunakan sebuah konsep yang disebut parenting. Ini digunakan untuk membuat sebuah game object menjadi anak dari game object yang lain. Tarik sebuah game object dan pindahkan tepat diatas tulisan game object yang akan dijadikan parent dalam hierarchy. game object yang terdapat dalam sebuah game object lainnya akan mengikuti perpindahan dan perputaran ketika game object parent mengalami perubahan posisi. [14] 2.8
Android Android adalah sebuah sistem operasi untuk perangkat mobile berbasis
linux yang mencakup sistem operasi, middleware dan aplikasi [15]. Android menyediakan platform terbuka bagi para pengembang untuk menciptakan aplikasi. 2.9
Arsitektur Android Secara garis besar Arsitektur Android dapat dijelaskan dan digambarkan
sebagai berikut: 1. Applications dan Widgets Applications dan Widgets ini adalah layer di mana kita berhubungan dengan aplikasi saja, di mana biasanya kita download aplikasi kemudian kita lakukan instalasi dan jalankan aplikasi tersebut. Di layer terdapat aplikasi inti termasuk klien email, program SMS, kalender, peta, browser, kontak, dan lain-lain. Semua aplikasi ditulis menggunakan bahasa pemrograman Java. 2. Applications Frameworks Android adalah “Open Development Platform” yaitu Android menawarkan kepada pengembang atau memberi kemampuan kepada pengembang untuk membangun aplikasi yang bagus dan inovatif. Pengembang bebas untuk
35
mengakses perangkat keras, akses informasi resources, menjalankan service background, mengatur alarm, dan menambahkan status notifications, dan sebagainya. Pengembang memiliki akses penuh menuju API framework seperti yang dilakukan oleh aplikasi yang kategori inti. Arsitektur aplikasi dirancang supaya kita dengan mudah dapat menggunakan kembali komponen yang sudah digunakan (reuse). Sehingga bisa kita simpulkan Applications Frameworks ini adalah layer di mana para pembuat aplikasi melakukan pengembangan/pembuatan aplikasi yang akan dijalankan di sistem operasi Android, karena pada layer inilah aplikasi dapat dirancang dan dibuat, seperti content-providers yang berupa sms dan panggilan telepon. Komponen-komponen yang termasuk di dalam Applications Frameworks adalah sebagai berikut: a. Views b. Content Provider c. Resource Manager d. Notification Manager e. Activity Manager 3. Libraries Libraries ini adalah layer di mana fitur-fitur Android berada, biasanya para pembuat aplikasi mengakses libraries untuk menjalankan aplikasinya. Berjalan di atas kernel, Layer ini meliputi berbagai library C/C++ inti seperti Libc dan SSL, serta: a. Libraries media untuk pemutaran media audio dan video b. Libraries untuk manajemen tampilan
36
c. Libraries Graphics mencakup SGL dan OpenGL untuk grafis 2D dan 3D d. Libraries SQLite untuk dukungan database e. Libraries SSL dan WebKit terintegrasi dengan web browser dan security f. Libraries LiveWebcore mencakup modern web browser dengan engine embeded web view g. Libraries 3D yang mencakup implementasi OpenGL ES 1.0 API’s 4. Android Run Time Layer yang membuat aplikasi Android dapat dijalankan di mana dalam prosesnya menggunakan Implementasi Linux. Dalvik Virtual Machine (DVM) merupakan mesin yang membentuk dasar kerangka aplikasi Android. Di dalam Android Run Time dibagi menjadi dua bagian yaitu: a. Core Libraries: Aplikasi Android dibangun dalam bahasa java, sementara Dalvik sebagai virtual mesinnya bukan Virtual Machine Java, sehingga diperlukan sebuah libraries yang berfungsi untuk menerjemahkan bahasa java/c yang ditangani oleh Core Libraries. b. Dalvik Virtual Machine: Virtual mesin berbasis register yang dioptimalkan untuk menjalankan fungsi-fungsi secara efisien, di mana merupakan pengembangan yang mampu membuat linux kernel untuk melakukan threading dan manajemen tingkat rendah. 5. Linux Kernel Linux kernel adalah layer di mana inti dari operating sistem dari Android itu berada. Berisi file-file system yang mengatur sistem processing, memory, resource, drivers, dan sistem-sistem operasi android lainnya. Linux kernel yang digunakan android adalah linux kernel release 2.6.
37
Gambar 2.5 Arsitektur Android