BAB II KAJIAN PUSTAKA DAN LANDASAN TEORI
2.1.
State of the Art Penelitian tentang metode pengacakan telah beberapa kali dilakukan
sebelumnya
khususnya
penelitian
yang
menggunakan
algoritma
Linear
Congruential Generators (LCG) dan Linear Feedback Shift Register (LFSR). Jaka Maulana (2014) dalam penelitiannya yang berjudul “Perancangan Flash Game pukul Penjahat dengan Menggunakan Metode Linear Congruent Method”. Metode Linear Congruential Generators (LCG) digunakan untuk mengacak posisi lubang tempat penjahat keluar, dimana jumlah lobang yang digunakan adalah 9 buah. Hasil menggunakan metode LCG adalah bilangan acak mulai dari 1, 9, 5, 7, 1, 9, 5, 7, 1. Pengacakan nomor yang dihasilkan oleh Metode Linier Congruential dijadikan sebagai acuan urutan jalannya perpindahan objek Movie Clip ke nomor lokasi target yang dimaksud, dengan menyamakan posisi x dan y objek terhadap setiap nomor lokasi target yang diacak oleh Metode Linier Congruential. Dari hasil penelitian yang telah dilakukan Jaka metode LCG memiliki keuungulan yaitu pada kecepatan dan hanya membutuhkan sedikit operasi bit pada proses perhitungannya. Jeffry, Nyimas Artina, S.Kom., M.Si (2010) dari Jurusan Teknik Informatika STMIK GI MDP dalam jurnalnya yang berjudul “Rancang Bangun Aplikasi Game Edukasi Puzzle Pengenalan Tokoh Sejarah Berbasis Android dengan Metode Linear Congruential Generator (LCG)”. Metode Linear Congruential Generator (LCG) digunakan untuk mengacak gambar pada game puzzle 3x3 (level mudah). Metode ini sangat cocok digunakan untuk mengacak puzzle karena kecepatannya dan sangat mudah diimplementasikan. Stephandle Candra, Rika Perdana, Memen Akbar (2011) dalam penelitiannya yang berjudul “Aplikasi Acak Huruf dengan Matrik 3x3” menggunakan metode Linear Congruential Generator (LCG). Metode ini digunakan untuk mengacak posisi huruf pada matrik 3x3. Hasil yang diperoleh
4
5
dari penelitian ini bahwa algoritma Linear Congruential Generator (LCG) dapat mengacak huruf dengan baik dalam aplikasi ini. Andresta Ramadhan (2013), Program Studi Teknik Informatika ITB dengan judul penelitiannya “Perbandingan Algoritma Linear Congruential Generator,
BlumBlumShub, dan MersenneTwister untuk Membangkitkan
Bilangan Acak Semu” mengatakan 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 pembankit yang digunakan adalah komputer yang memiliki sifat deterministik. Bilangan yang benar-benar acak hanya dapat dihasilkan oleh perangkat keras (hardware). Berdasarkan semua algoritma yang dimiliki LCG memiliki kelebihan yaitu dari segi kecepatan dalam menghasilkan bilangan acak. Dody Indra Harapan (2013) dengan judul penelitiannya “Implementasi Vigenere Chiper dengan Random Key Metode Linear Feedback Shift Register (LFSR) pada Teks”. Metode LFSR digunakan sebagai pembangkit kunci untuk melakukan proses enkripsi dan deskripsi. Menurut peneliti metode LFSR dapat menghasilkan karakter kunci yang memiliki keacakan cukup tinggi. Yohanes
Andika
(2012)
dalam
penelitiannya
yang
berjudul
“Pengembangan Random number Generator dengan Video dan Suara” mengatakan sangatlah penting untuk memilih suatu metode dalam menghasilkan bilangan acak dalam kriptografi. Hal ini dilakukan guna untuk mempersulit penyerang untuk menebak kunci maupun hasil enkripsi dari suatu kriptografi. Penelitian ini membandingkan beberapa metode pengacakan seperti Intel RNG, RSA Generator, Blum-Micali(BM) Generator, dan Linear Feedback Shift Register (LFSR). Hasil yang diperoleh dari penelitian tersebut mengatakan bahwa LFSR memberikan bit stream yang cukup tinggi walaupun memiliki sedikit kekurangan yaitu adanya periode bit, yang dapat mengakibatkan suatu perulangan. Anggun
Triyogo
(2013)
dalam
penelitiannya
yang
berjudul
“Pengembangan Algoritma Enkripsi Deskripsi Berbasis LFSR menggunakan Polinomial Primitif” menyebutkan bilangan acak merupakan salah satu faktor
6
yang sangat penting dalam kriptografi. Hal ini disebabkan karena bilangan acak menjadi dasar perhitungan dalam kriptografi, yang kemudian menentukan kekuatan dari kriptografi itu sendiri. Tidak ada cara konvensional yang bisa benarbenar menghasilkan deret bilangan acak secara sempurna. Umumnya cara yang digunakan dalam membangkitkan bilangan acak adalah berdasarkan suatu algoritma atau fungsi tertentu yang deterministik, sehingga sebenarnya bilangan yang dibangkitkan tersebut bersifat pseudorandom, karena pembangkitan bilangannya dapat diulang kembali. LFSR (Linear Feedback Shift Register) adalah salah satu jenis generator yang dapat menghasilkan bit semu acak. LFSR sering digunakan karena mampu menghasilkan bit semu acak dengan periode maksimal yang panjang dan mudah diaplikasikan dalam berbagai hal. Penelitian game kartu Blok Bakar berbasis mobile dengan menggunakan metode LCG maupun metode LFSR belum pernah dilakukan. Game kartu Blok Bakar menggunakan kombinasi antara metode LCG dan LFSR dalam menghasilkan kartu yang teracak. 2.2.
Kartu Domino Menurut kamus besar Bahasa Indonesia kartu memiliki pengertian
sebagai kertas tebal, berbentuk persegi panjang (untuk berbagai keperluan, hampir sama dng karcis), sedangkan Domino merupakan kartu yg bertanda bulatanbulatan yg menunjukkan nilai angka kartu, untuk bermain Domino.
Gambar 2.1 Kartu Domino (sumber : http://www.mafiaol.com/2012/09/penerapanaplikasi-matematika-pada.html)
7
Domino merupakan kata yang sering mengacu pada sebuah persegi panjang yang terbentuk dari menggabungkan dua kotak kongruen antara tepi satu dengan tepi satunya. Budaya Tradisional Sino-Eropa satu set Domino terdiri dari 28 kartu Domino, bahasa sehari-hari yang digunakan untuk menjuluki kartu Domino adalah tulang, kartu, ubin, tiket, batu, atau pemintal. Setiap Domino adalah ubin persegi panjang dengan garis untuk membagi kartu menjadi dua ujung persegi sama besar. Setiap sisi ditandai dengan sejumlah titik (pips atau nips dobs) atau kosong. Bagian belakang domino dalam satu set biasanya didesain dengan gambar yang sama. Satu set domino adalah perangkat generik game, mirip dengan bermain kartu atau dadu dan dapat digunakan dalam berbagai jenis game. 2.3.
Blok Bakar Blok Bakar merupakan salah satu game kartu tradisional dari Bali yang
telah ada dari beberapa tahun yang lalu, game ini menggunkan kartu domino sebagai alat permainannya. Game ini dapat dimainkan oleh banyak pemain sekaligus, cara bermain game ini adalah dengan memilih salah satu kartu yang telah dibagikan pada meja (satu kartu pertama), setelah player selesai memilih (meletakan koin) selanjutnya akan dibagikan kartu kedua, kartu pertama dengan kartu kedua ini nantinya akan dijumlahkan dan dibandingkan dengan kartu yang dimiliki bandar. Ketentuan untuk menentukan kemenangan adalah jika kartu yang dipilih player lebih besar daripada kartu bandar maka player tersebut menang, dan mendapatkan poin atau koin sesuai dengan taruhan awalnya. Hasil wawancara yang dilakukan pada 21 Februari 2015, Wyn Suleman menjelaskan game Blok Bakar pada dunia nyata pertama kali dibuat karena keisengan pada sebuah acara Ngelepas (acara 4 harian bayi baru lahir). Pemikiran membuat game ini dikatakan diambil dari game Domino Spirit, game ini dibuat untuk menambah jumlah pemain yang dapat ikut dalam game. Karena jika bermain Spirit jumlah pemain yang dapat ikut dalam game berkisar Empat sampai Tujuh orang, namun dengan game Blok Bakar yang memiliki konsep yang hampir sama pemain yang dapat mengikuti game ini lebih banyak.
8
2.4.
Bandar Pengertian Bandar dalam kamus besar Bahasa Indonesia adalah pemain
yang menjadi lawan pemain-pemain lain sekaligus orang yang menyelenggarakan perjudian, orang yang mengendalikan suatu aksi dengan sembunyi-bunyi, ataupun orang yang bermodal dalam perdagangan. Bandar yang dimaksud dalam game kartu Blok Bakar ini adalah orang yang mengatur game, dimana jika pemain menang maka bandarlah yang nantinya memberikan poin atau koin kemenangan ke pemain, begitu juga kebalikannya, jika pemain kalah maka koin kepeng taruhan pemain menjadi hak milik bandar. Bandar pada permainan ini adalah salah satu pemain yang nantinya akan digilir secara bergantian dari satu pemain ke pemain selanjutnya.
2.5.
Game Game dalam kamus Bahasa Indonesia diartikan sebagai permainan,
sedangkan game dalam arti kata bahasa inggris berarti dasar permainan. Permainan dalam hal ini merujuk pada pengertian kelincahan intelektual (Intellectual Playability Game) yang juga dapat diartikan sebagai arena keputusan dan aksi pemainnya, dalam game biasanya akan ada target-target yang ingin dicapai pemainnya (Nugroho. 2011). Permainan merupakan bagian dari bermain dan bermain juga bagian dari permainan, keduanya saling berhubungan. Permainan adalah kegiatan yang kompleks yang didalamnya terdapat peraturan, play dan budaya, sebuah permainan adalah sebuah sistem dimana pemain terlibat dalam konflik buatan, disini pemain berinteraksi dengan sistem dan konflik dalam permainan merupakan rekayasa atau buatan, dalam permainan terdapat peraturan yang bertujuan untuk membatasi perilaku pemain dan menentukan permainan. Game bertujuan untuk menghibur, biasanya game banyak disukai oleh anak-anak hingga orang dewasa. Game sebenarnya penting untuk perkembangan otak, untuk meningkatkan konsentrasi dan melatih untuk memecahkan masalah dengan tepat dan cepat karena dalam game terdapat berbagai konflik atau masalah yang menuntut player untuk menyelesaikannya dengan cepat dan tepat. Game juga dapat merugikan
9
karena apabila player sudah kecanduan game, maka mereka akan lupa waktu dan akan mengganggu kegiatan atau aktifitas yang sedang lakukan. 2.5.1
Game Berdasarkan Jenis Platform Berdasarkan jenis platform game dapat dibagi menjadi beberapa
kelompok, pembagiannya adalah sebagai berikut. 2.5.1.1 PC Games PC Games yaitu video game yang dimainkan menggunakan Personal Computers. 2.5.1.2 Console games Console games yaitu video games yang dimainkan menggunakan console tertentu, seperti Playstation 2, Playstation 3, XBOX 360, dan Nintendo Wii. 2.5.1.3 Handheld games Handheld games yaitu yang dimainkan di console khusus video game yang dapat dibawa kemana-mana, contoh Nintendo DS dan Sony PSP. 2.5.1.4 Mobile games Mobile games yaitu yang dapat dimainkan atau khusus untuk mobile phone atau PDA. 2.5.2
Game Berdasarkan Genre Game Genre game dapat dibagi menjadi beberapa kelompok, pembagian game
berdasarkan genre game adalah sebagai berikut. 2.5.2.1 Action Game Action Game merupakan jenis game yang berkaitan dengan suatu aksi gerakan suatu karakter. Game jenis ini membutuhkan kelincahan pemain. Salah satu subgenre action yang popular adalah First Person Shooter (FPS). Game FPS memerlukan kecepatan berfikir. Game ini dibuat seolah-olah pemain yang berada dalam suasana tersebut. 2.5.2.2 Action Adventure Action Adventure merupakan jenis game action yang karaktenya melakukan suatu pertualangan dengan melakukan suatu aksi tertentu seperti
10
memasuki gua bawah tanah, melompati bebatuan di antara lahar, bergelayutan dari pohon satu ke pohon lain, bergulat dengan ular sambil mencari kunci untuk membuka pintu kuil legendaris, atau sekedar mencari telepon umum untuk mendapatkan misi berikutnya, itulah beberapa dari banyak hal yang karakter pemain harus lakukan dan lalui dalam game jenis ini. 2.5.2.3 Fighting (pertarungan) Fighting (pertarungan) merupakan jenis game yang memerlukan kecepatan refleks dan koordinasi mata dengan tangan, tetapi inti dari game ini adalah penguasaan jurus (hafal caranya dan lancar mengeksekusinya), pengenalan karakter dan timing sangatlah penting, combo-pun menjadi esensial untuk mengalahkan lawan secepat mungkin. Berbeda seperti action game pada umumnya yang umumnya hanya melawan Artificial Intellegence atau istilah umumnya melawan komputer saja, pemain jenis fighting game ini baru teruji kemampuan sesungguhnya dengan melawan pemain lainnya. Street Fighter, Tekken, Mortal Kombat, Soul Calibur dan King of Fighter adalah contohnya. 2.5.2.4 Simulasi, Konstruksi dan Manajemen Pemain dalam game ini diberi keleluasaan untuk membangun suatu proyek tertentu dengan bahan baku yang terbatas. 2.5.2.5 Role Playing Games (RPG) Game RPG memberi pemain pilihan untuk dapat memilih satu karakter yang dapat dimainkan. Seiring dengan bertambahnya level game, karakter tersebut dapat berubah, bertambah kemampuannya, bertambah senjatanya, atau bertambah hewan peliharaannya. 2.5.2.6 Strategi Genre strategi menitikberatkan kemampuan pemain pada kemampuan berpikir dan organisasi. Game strategi dibedakan menjadi dua, yaitu Turn Based Strategy dan Real Time Strategy. Real times trategy mengharuskan pemain membuat keputusan dan secara bersamaan pihak lawan juga beraksi hingga
11
menimbulkan serangkaian kejadian dalam waktu yang sebenarnya, sedangkan turn based strategy pemain bergantian menjalankan taktiknya, misalnya jika pihak pemain mengambil langkah maka pihak lawan harus menunggu, begitu sebaliknya. 2.5.2.7 Balapan Pemain dapat memilih kendaraan, lalu melaju di arena balap. Tujuannya yaitu mencapai garis finish tercepat. 2.5.2.8 Olahraga Genre ini membawa olahraga ke dalam sebuah komputer atau konsol. Game play ini umumnya dibuat semirip mungkin dengan kondisi olahraga yang sebenarnya. 2.5.2.9 Puzzle Genre
puzzle
menyajikan
teka-teki,
menyamakan
warna
bola,
perhitungan matematika, menyusun balok, atau mengenal huruf dan gambar. 2.5.2.10 Permainan Kata Word game sering dirancang untuk menguji kemampuan dengan bahasa atau untuk mengeksplorasi sifat-sifatnya. Word Game umumnya digunakan sebagai sumber hiburan, tetapi telah dibuktikan untuk melayani suatu tujuan pendidikan juga. Berdasarkan uraian di atas dapat disimpulkan game adalah suatu hasil dari proses multimedia berupa alat untuk bersenang-senang dan dapat digunakan sebagai media untuk pembelajaran. 2.5.3
Pengertian Multimedia Multimedia adalah penggunaan komputer untuk menyajikan dan
menggabungkan teks, grafik, video, animasi, dengan alat bantu (tools) dan koneksi (link) sehingga pengguna dapat bernavigasi, berinteraksi, berkarya dan berkomunikasi. Multimedia sering digunakan dalam dunia hiburan. Berikut ini adalah elemen-elemen yang terdapat dalam multimedia.
12
2.5.3.1 Teks Merupakan dasar penyapaian informasi, juga merupakan media paling sederhana yang direpresentasikan dengan typeface (jenis huruf) yang beragam agar harmonis dengan elemen media lainnya. 2.5.3.2 Citra diam (gambar) Merupakan representasi spesial dari objek yang disusun sebagai matriks nilai numerik yang merepresentasikan setiap titik/pixel serta diciptakan dengan program image editing. 2.5.3.3 Suara atau Audio Merupakan fenomena fisik yang dihasilkan oleh pengantar materi. Audio memiliki 3 kategori, yaitu : 1.
Ucapan (speech) merupakan suara orang berbicara
2.
Musik (music) merupakan hasil pendengaran alat musik
3.
Efek suara (sound effect) merupakan suara lainnya, seperti petir, gelas pecah, tembakan, dll.
2.5.3.4 Animasi Animasi adalah gambar begerak berbentuk dari sekumpulan objek (gambar) yang disusun secara beraturan mengikuti alur pergerakan yang telah ditentukan pada setiap pertambahan hitungan waktu yang terjadi. Gambar atau objek yang dimaksud dalam definisi di atas bisa berupa gambar manusia, hewan, maupun tulisan. 2.5.3.5 Video Video sama seperti animasi, tetapi disimpan dalam format khusus yang dapat menyimpan adegan dunia nyata atau rekaan dengan komputer. Video adalah elemen yang paling kompleks dan paling memerlukan persyaratan hardware yang tinggi.
13
2.5.4
Komponen-komponen Game Komponen game merupakan bagian yang ada pada game. Game
memiliki lima komponen penting yaitu sebagai berikut. 2.5.4.1 Fitur Fitur merupakan hal yang digunakan untuk membedakan setiap game yang ada. Fitur juga dapat menggambarkan jalan cerita game kedalam bentukbentuk yang dapat dilihat maupun dirasakan. 2.5.4.2 Game Play Game play membantu pengembang game untuk mengetahui cara kerja suatu game, dimana fitur-fitur yang ada akan membentuk suatu game play. 2.5.4.3 Interface Interface merupakan semua tampilan yang ada dalam suatu game. Sebuah interface yang baik adalah interface yang tidak membosankan dan memudahkan pemain game. 2.5.4.4 Aturan/rules Aturan merupakan kumpulan aturan-aturan dalam sebuah game. Aturan disini berfungsi untuk membatasi game play yang ada pada game dan juga bertujuan untuk membuat tantangan pada game. 2.5.4.5 Desain Level Desain level mencakup style, background, dan jalan cerita dari sebuah game. Desain yang menarik digunakan untuk menarik pemain terhadap game. 2.5.5
Game Balance Game balance merupakan salah satu yang terpenting dari sebuah game.
Game balance pada sebuah game tidak seimbang maka kemungkinan besar ada fitur game yang sangat jarang digunakan sehingga menjadi sia-sia. Terdapat 3 jenis game balance, yaitu sebagai berikut.
14
2.5.5.1 Player-Player balance Kategori ini kebanyakan adalah multiplayer game karena masing-masing player mempunyai keuntungan yang sama, kecuali keahlian masing-masing pemain. 2.5.5.2 Player-Gameplay balance Keberhasilan pemain dalam setiap levelnya akan mendapatkan imbalan sesuai dengan keberhasilan yang telah dicapainya dalam kategori ini. 2.5.5.3 Gameplay-Gameplay balance Kategori ini, setiap fitur yang terdapat dalam sebuah game harus seimbang secara keseluruhan, contohnya apabila terdapat senjata yang lebih kuat daripada senjata lainnya, maka senjata tersebut harus berada di level game yang lebih tinggi dari senjata lainnya yang kurang kuat. 2.5.6
Dimensi Dimensi menjadi bagian yang sangat penting yang harus dipahami pada
sebuah game. Berikut ini merupakan pengertian dimensi dan 2 dimensi. 2.5.6.1 Pengertian Dimensi Dimensi dapat diartikan sebagai banyak cara untuk menentukan posisi sebuah benda yang didasarkan terhadap acuan tertentu. Sebuah benda dikatakan berdimensi satu bila posisinya bisa ditentukan dengan sebuah angka. Benda berdimensi 2 memiliki posisi yang bisa ditentukan oleh 2 angka, misalnya suatu permukaan bola dapat diukur dengan angka derajat lintang dan angka derajat bujur. 2.5.6.2 Pengertian 2 Dimensi Objek 2 dimensi direpresentasikan dalam sebuah bidang yang terdiri dari sumbu x dan y, sering juga disebut bidang cartesian. Objek yang bisa dibentuk dalam bidang ini dapat berupa titik, garis, maupun poligon. Sebuah objek titik terbentuk dari 2 koordinat (x,y) yang spesifik, dimana koordinat x menandakan
15
suatu posisi yang terletak pada sumbu mendatar/horizontal dan koordinat y menandakan suatu posisi yang terletak pada sumbu tegak/vertikal. Objek titik dalam bidang 2 dimensi dapat membentuk kumpulan objek garis yang saling terhubung, yang dapat membentuk suatu objek segi banyak tertutup (poligon) ataupun objek segi banyak terbuka. Masing-masing titik dari sebuah poligon disebut vertex. 2.5.7
Game Engine Game engine merupakan sebuah software (perangkat lunak) yang
dirancang untuk dapat menciptakan atau mengembangkan game. Fungsi utama yang disediakan oleh game engine biasanya mencakup renderer engine (mesin render) yang berguna untuk merender 2D atau 3D grafis, physics engine untuk membuat objek 3D berlaku layaknya sebagai benda nyata (terpengaruh gravitasi, bertabrakan), sound (suara), script, animasi, kecerdasan buatan (AI), jaringan, streaming, manajemen memory, threading, dan grafik animasi. Game engine kebanyakan dirancang untuk membuat game dalam berbagai platform seperti konsol game dan sistem desktop seperti Microsoft Windows, Linux, dan Mac OS (Yulianto. 2012). Game engine biasanya terdiri dari berbagai macam jenis dan ditujukan untuk berbagai kemampuan pemrograman. Ada 3 tipe game engine yang ada saat ini, diantaranya sebagai berikut. 2.5.7.1 Roll-your-own game engine Banyak perusahaan game kecil seperti publisher indie biasanya menggunakan engine-nya sendiri. Mereka menggunakan API seperti mXNA, DirectX atau OpenGL untuk membuat game engine mereka sendiri. Sisi lainnya, mereka kadang menggunakan library komersil atau yang open source. Terkadang mereka juga membuat semuanya mulai dari nol. Tipe game engine biasanya lebih disukai karena selain kemungkinan besar diberikan secara gratis, juga memperbolehkan mereka (para developer) lebih fleksibel dalam mengintegrasikan komponen yang diinginkan untuk dibentuk sebagai game engine mereka sendiri. Kelemahannya banyak engine yang dibuat dengan cara semacam ini malah
16
menyerang balik pengembangnya. Tower Games Studio membutuhkan satu tahun penuh untuk menyempurnakan game engine-nya, hanya untuk ditulis ulang semuanya dalam beberapa hari sebelum penggunaannya karena adanya bug kecil yang sangat mengganggu. 2.5.7.2 Mostly-read game engine Engine ini biasanya sudah menyediakan semuanya begitu diberikan pada developer/programmer, semuanya termasuk contoh GUI, physiscs, libraries model, texture dan lain-lain. Banyak dari mereka yang sudah benar-benar matang, sehingga dapat langsung digunakan untuk scripting sejak hari pertama. Game engine semacam ini memiliki beberapa batasan, terutama jika dibandingkan dengan game engine sebelumnya yang benar-benar terbuka lebar. Hal ini ditujukan agar tidak terjadi banyak error yang mungkin terjadi setelah sebuah game yang menggunakan engine ini dirilis dan masih memungkinkan game engine-nya tersebut untuk mengoptimalkan kinerja game-nya. Contoh tipe game engine seperti ini adalah Unreal Engine, Source Engine, id Tech Engine dan sebagainya yang sudah sangat optimal dibandingkan jika harus membuat dari awal. Hal ini dapat menyingkat menghemat waktu dan biaya dari para developer game. 2.5.7.3
Point-and-click engine Engine ini merupakan engine yang sangat dibatasi, tapi dibuat dengan
sangat player friendly. Player bahkan dapat mulai membuat game sendiri menggunakan engine seperti GameMaker, Torque Game Builder dan Unity3D. Pemanfaatkan coding yang kurang, sehingga player juga dapat merilis game point-and-click. Kekurangannya terletak pada terbatasnya jenis interaksi yang dapat dilakukan dan biasanya hal ini mencakup semuanya, mulai dari grafis hingga tata suara. Game jenis ini bukan berarti game engine yang tidak berguna, bagi developer cerdas dan memiliki kreativitas tinggi, game engine seperti ini dapat dirubah menjadi sebuah game menyenangkan, seperti Flow. Game engine ini memang ditujukan
bagi developer yang ingin menyingkat
pemrogramman dan merilis game-game mereka secepatnya.
waktu
17
2.6.
Android Android adalah sistem operasi untuk telepon seluler berbasis Linux
sebagai kernelnya. Android bisa disebut raja dari Smartphone sekarang ini. Android begitu pesat perkembangan di era saat ini, dikarenakan Android menyediakan platform terbuka (Open Source) bagi para pengembang untuk menciptakan aplikasi mereka sendiri. Perusahaan search engine terbesar saat ini, yaitu Google Inc. membeli Android Inc, pendatang baru yang membuat peranti lunak untuk ponsel. Android Inc didirikan oleh Andy Rubin, Rich Milner, Nick Sears dan Chris White pada tahun 2003. Agustus 2005 Google membeli Android Inc. Pengembangan Android lebih lanjut, maka dibentuklah Open Handset Alliance konsorsium dari 34 perusahaan hardware, software dan telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualqomm, T-Mobile dan Nvidia. Android juga merupakan aplikasi untuk telepon seluler (handphone) yang bersifat open source atau dapat dikatakan gratisan karena basisnya dari Linux, karena sifatnya open source, maka banyak orang dapat membuat dan mengubah aplikasi tertentu dalam Android. Android sekarang ini dikembangkan oleh OHA (Open Handset Alliance) yang terdiri dari 34 perusahaan peranti keras, peranti lunak, dan telekomunikasi yang diantaranya adalah Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, Nvidia dan lainnya. Memilih smartphone Android sama halnya memilih sebuah komputer, selain tampilan yang menarik, pastinya performa dari smartphone itu menjadi pertimbangan dalam memilih produk. Performa ini dipengaruhi oleh hardware yang tersemat di dalam smartphone ini. Android memiliki dua jenis distributor resmi Android di seluruh dunia, yang pertama adalah GMS (Google Mail Service) dan yang kedua adalah OHD (Open Handset Distributor). Perbedaan dari keduanya adalah hanya dari dukungan dari Google saja, kalau GMS itu mendapat dukungan secara langsung, sedangkan OHD tidak secara langsung.
18
Gambar 2.2 Logo Android (sumber : www.android.com)
2.6.1
Perkembangan Android Perkembangan Android Android begitu sudah dimulai dari tahun 2007, untuk
lebih jelasnya tabel 2.1 memperlihatkan perkembangan android. Tabel 2 1 Perkembangan Android
Versi Android
Diluncurkan
Nama Kode
Beta
5 November 2007
1.0
23 September 2008
1.1
9 Februari 2009
1.5
30 April 2009
Cupcake
1.6
15 September 2009
Donut
2.0/2.1
26 Oktober 2009
Éclair
2.2
20 Mei 2010
Froyo
2.3-2.3.2
6 Desember 2010
Gingerbread
2.3.3-2.3.7
9 Februari 2011
Gingerbread
3.0
22 Februari 2011
Honeycomb
3.1
10 Mei 2011
Honeycomb
3.2
15 Juli 2011
Honeycomb
4.0.1
19 Oktober 2011
Ice Cream Sandwich
4.0.3-4.0.4
16 Desember 2011
Ice Cream Sandwich
4.1.x
9 Juli 2012
Jelly Bean
19
4.2.x
13 November 2012
Jelly Bean
4.3.x
24 Juli 2012
Jelly Bean
4.4.x
31 Oktober 2013
Kitkat
5.0
15 Oktober 2014
Lollipop
(sumber : www.gomuda.com)
Beberapa fitur utama dari Android antara lain WiFi hotspot, Multi-touch, Multitasking, GPS, support Java, mendukung banyak jaringan (GSM/EDGE, IDEN, CDMA, EV-DO, UMTS, Bluetooth, Wi-Fi, LTE, and WiMAX) dan juga kemampuan dasar handphone pada umumnya. 2.6.2
Smartphone Smartphone adalah sebuah device yang memungkinkan untuk melakukan
komunikasi juga di dalamnya terdapat fungsi PDA (Personal Digital Assistant) dan berkemampuan seperti layaknya komputer. Perkembangan awal, dikenal adanya Handphone dan PDA. Handphone pada umumnya digunakan untuk melakukan komunikasi seperti nelepon sedangkan PDA digunakan sebagai asisten pribadi dan organizer. Perkembangan selanjutnya PDA mendapatkan kemampuan lain yaitu fitur koneksi wireless sehingga mampu menerima maupun mengirim email, pada saat yang bersamaan juga Handphone mendapatkan penambahan fitur yakni kemampuan untuk mengirim pesan. Pada akhirnya PDA menambahkan fungsi Handphone pada device-nya, begitupun juga Handphone diberikan fitur PDA (yang lebih banyak) di dalamnya, sehingga hasilnya adalah sebuah Smartphone. Smartphone memiliki ciri utama yaitu memiliki sistem operasi di dalamnya yang memungkinkan dijalankan berbagai aplikasi, misalnya Windows Mobile, Android, Symbian, ataupun Sistem Operasi Blackberry. Sebuah Smartphone selalu dilengkapi berbagai aplikasi/software yang ditujukan untuk meningkatkan produktivitas dan mendukung kegiatan sehari-hari. Misalnya Doc To Go, untuk membuat dan mengedit dokumen word di Smartphone. Kemampuan lain yang dimiliki oleh sebuah Smartphone adalah dapat digunakan mengakses
20
web/internet dan konten yang disajikan di browser-nya, sudah hampir mendekati seperti layaknya mengakses web lewat komputer. Opera Mobile, SkyFire Mobile, IE Mobile adalah contoh beberapa browser di sebuah Smartphone. Smartphone juga memiliki ciri khas yaitu QWERTY Keyboard, untuk mempermudah pengguna Smartphone untuk mengetik dokumen atau mengirim pesan. 2.6.3
Arsitektur Android Diagram berikut menunjukkan komponen utama dari sistem operasi
Android. Komponen-komponen tersebut dibagi menjadi 5 bagian, yaitu Linux Kernel, Android Run Time, Libraries, Applications Framework dan Applications.
Gambar 2. 3 Android Framework (sumber: www.dmxzone.com)
2.6.3.1 Linux Kernel Tumpukan paling bawah pada arsitektur Android ini adalah kernel. Google menggunakan kernel Linux Versi 2.6 untuk membangun sistem Android, yang mencakup memory management, security setting, power management, dan beberapa driver hardware. Kernel berperan sebagai abstraction layer antara hardware dan keseluruhan software. HTC G1 sebagai contohnya, ia dilengkapi
21
dengan kamera. Kernel Android terdapat driver kamera yang memungkinkan pengguna mengirimkan perintah kepada hardware kamera. Android dibangun di atas kernel Linux 2.6. Secara keseluruhan Android bukanlah linux, karena dalam Android tidak terdapat paket standar yang dimiliki oleh linux lainnya. Linux merupakan sistem operasi terbuka yang handal dalam manajemen memori dan proses. Terkait perihal tersebut maka pada Android hanya terdapat beberapa servis yang diperlukan seperti keamanan, manajemen memori, manajemen proses, jaringan dan driver. Kernel linux menyediakan driver layar, kamera, keypad, WiFi, Flash Memory, audio, dan IPC (Interprocess Communication) untuk mengatur aplikasi dan lubang keamanan. 2.6.3.2 Android RunTime Lapisan setelah Kernel Linux adalah Android Runtime. Android Runtime ini berisi Core Libraries dan Dalvik Virtual Machine (VM). Core Libraries mencakup serangkaian inti library Java, artinya Android menyertakan satu set library-library dasar yang menyediakan sebagian besar fungsi-fungsi yang ada pada library-library dasar bahasa pemrograman Java. Dalvik adalah Java Virtual Machine yang memberi kekuatan pada sistem Android. Dalvik VM ini di optimalkan untuk telepon seluler. Aplikasi yang berjalan pada Android, berjalan pada prosesnya sendiri, dengan instance dari Dalvik Virtual Machine. Dalvik telah dibuat sehingga sebuah piranti yang memakainya dapat menjalankan multi Virtual Machine dengan efisien. Dalvik VM dapat mengeksekusi file dengan format Dalvik Executable(.dex) yang telah dioptimasi untuk menggunakan minimal memoryfootprint. Virtual Machine ini register-based, dan menjalankan class-class yang di-compile menggunakan compiler Java yang kemudian ditransformasi menjadi format dex menggunakan dx tool yang telah disertakan. Dalvik VM menggunakan kernel Linux untuk menjalankan fungsi-fungsi seperti threading dan low-level memory management.
22
2.6.3.3 Libraries Libralies terletak di level yang sama dengan Android Runtime. Android menyertakan satu set library dalam bahasa C/C++ yang digunakan oleh berbagai komponen yang ada pada sistem Android. Kemampuan ini dapat diakses oleh programmer melewati Android application framework. Sebagai contoh Android mendukung pemutaran format audio, video, dan gambar. Berikut ini beberapa corelibrary tersebut. 1.
System C library Turun dari implementasi standar C system library (libc) milik BSD, dioptimasi untuk piranti embedded berbasis Linux.
2.
Media Libraries Media Libraries berdasarkan Packet Video’s OpenCORE; library ini mendukung play back dan recording dari berbadai format audio and video populer, meliputi MPEG4, H.264, MP3, AAC, AMR, JPG, and PNG.
3.
Surface Manager, mengatur akses pada display dan lapisan composites 2D and 3D graphic dari berbagai aplikasi.
4.
Lib Web Core, web browser engine modern yang mendukung Android browser maupun embedable web view.
5.
SGL, yang mendasari mesin grafis 2D.
6.
3D libraries, implementasi berdasarkan OpenGL ES 1.0 APIs. Library ini menggunakan akselerasi hardware 3D atau disertakan, rasterizer software 3D yang sangat optimal.
7.
Free Type, penerjemah bitmap dan vector font.
8.
SQLite, relational database engine yang powerful dan ringan tersedia untuk semua aplikasi. Library-library tersebut bukanlah aplikasi yang berjalan sendiri, namun
hanya dapat digunakan oleh program yang berada di level atasnya. Sejak Versi Android 1.5, pengembang dapat membuat dan menggunakan pustaka sendiri menggunakan Native Development Toolkit (NDK).
23
2.6.3.4 Applications Framework Lapisan selanjutnya adalah application framework, yang mencakup program untuk mengatur fungsi-fungsi dasar Smartphone. Application Framework merupakan serangkaian tool dasar seperti alokasi resource Smartphone, aplikasi telepon, pergantian antar proses atau program, dan pelacakan lokasi fisik telepon. Pengembang aplikasi memiliki aplikasi penuh kepada tool-tool dasar tersebut, dan memanfaatkannya
untuk
menciptakan
aplikasi
yang
lebih
kompleks.
Programmer mendapatkan akses penuh untuk memanfaatkan API yang juga digunakan core applications. Arsitektur aplikasi didesain untuk menyederhanakan pemakaian kembali komponen-komponen, setiap aplikasi dapat menunjukkan kemampuannya dan aplikasi lain dapat memakai kemampuan tersebut. Mekanisme yang sama memungkinkan pengguna mengganti komponenkomponen yang dikehendaki. Semua aplikasi didalamnya terdapat servis dan sistem yang meliputi : 1)
Satu set views yang dapat digunakan untuk membangun aplikasi meliputi lists, grids, textboxes, buttons, dan embeddable web browser;
2)
Content Providers yang memungkinkan aplikasi untuk mengakses data dari aplikasi lain (misalnya Contacts), atau untuk membagi data yang dimilikinya.
3)
Resource Manager, menyediakan akses ke non-code resources misalnya localizedstrings, graphics, dan layoutfiles;
4)
Notification Manager yang memungkinkan semua aplikasi untuk menampilkan customalerts pada statusbar;
5)
Activity Manager yang mengatur life cycle dari aplikasi dan menyediakan common navigation back stack;
2.6.3.5 Applications Lapisan teratas terdapat aplikasi itu sendiri. Lapisan inilah ditemukan fungsi-fungsi dasar Smartphone seperti menelepon dan mengirim pesan singkat, menjalankan web browser, mengakses daftar kontak, dan lain-lain. Lapisan ini
24
juga yang paling sering akses oleh para pengembang. Mereka mengakses fungsifungsi dasar tersebut melalui user interface. 2.6.4
Android Versi 4.1 (Android Jelly Bean) Android Jelly Bean yang diluncurkan pada acara Google I/O tahun 2012
dan membawa sejumlah keunggulan serta fitur baru. Penambahan fitur baru diantaranya meningkatkan input keyboard, desain baru fitur pencarian, UI yang baru dan pencarian Voice Search yang lebih cepat. Google Now juga menjadi bagian yang diperbarui. Google Now memberikan informasi yang tepat pada waktu yang tepat pula. Salah satu kemampuannya adalah dapat mengetahui informasi cuaca, lalu-lintas, ataupun hasil pertandingan olahraga. OS Android Jelly Bean 4.1 muncul pertama kali dalam produk tablet Asus, yakni Google Nexus 7. Android Jelly Bean memiliki Maps offline, tanpa menggunkan koneksi internet pengguna Android Jelly Bean bisa menelusuri suatu daerah dengan syarat mendownload daerah yang ingin ditelusuri terlebih dahulu.
Gambar 2. 4 Logo Android Jelly Bean 4.1 (Sumber: tech.firstpost.com)
2.7.
Android SDK (Software Development Kit) Android Software Development Kit (SDK) termasuk seperangkat alat
pengembangan. Ini termasuk debugger, libraries, sebuah handset emulator berdasarkan QEMU, dokumentasi, kode contoh, dan tutorial. Platform ini dapat berjalan di sistem operasi Linux (setiap desktop modern Linux distribusi), Mac OS X 10.5.8 atau yang lebih baru, Windows XP atau yang lebih baru. Eclipse menggunakan Android Development Tools (ADT) Plugin, meskipun IDE sepenuhnya mendukung pengembangan Android dan NetBeans IDE juga
25
mendukung pengembangan Android melalui Plugin. Selain itu, developer dapat menggunakan editor teks apapun untuk mengedit file XML Java dan, kemudian menggunakan alat baris perintah (Java Development Kit dan Apache Ant jika diperlukan) untuk menciptakan, membangun dan debug aplikasi Android serta pengendalian terpasang perangkat Android (misalnya memicu reboot, menginstall paket perangkat lunak jarak jauh). 2.8.
Android Development Tools (ADT) Android Development Tools (ADT) adalah plug-in untuk Eclipse IDE
yang dirancang untuk memberikan environment yang terintegrasi dan kuat dalam membangun aplikasi Android. ADT memperluas kemampuan Eclipse untuk membiarkan programmer cepat membuat proyek baru Android, membuat aplikasi dengan user interface, menambahkan komponen berdasaran Android Framework API, melakukan debug aplikasi menggunakan Android SDK tools, dan bahkan mengekspor file.apk dalam rangka mendistribusikan aplikasi yang dibuat developer. 2.9.
Corona SDK (Software Development Kit) Corona SDK (Software Development Kit) adalah sebuah aplikasi yang
digunakan untuk membuat aplikasi mobile, khususnya pada platform iOS dan Android. Corona SDK menggunakan bahasa pemrograman Lua yang dapat kita manfaatkan untuk menghasilkan aplikasi yang komplit dengan memanfaatkan API (Application Programming Interface) yang dimiliki oleh Corona. Corona dibuat oleh Ansca (http://www.anscamobile.com), sebuah perusahaan kecil di Palo Alto, California. Corona Labs diciptakan pada tahun 2008 sebagai usaha yang didukung perusahaan di Palo Alto, California. Sebelum Corona, tim Labs Corona bertanggung jawab untuk menciptakan banyak alat-alat standar yang sering dijumpai player. (Burton. 2013) Corona SDK berbeda dari bahasa pemrograman lainnya, di dalam Corona SDK sendiri telah tertanam worksheet dan sistem debugging. Corona SDK menggunakan editor texts dasar untuk menulis kode, dan editor grafis untuk
26
membuat gambar. Corona sendiri hanya bertugas menyusun dan running program. Untuk memulainya, player akan membutuhkan API Corona dan editor teks yang layak (Domenech. 2013). Corona merupakan suatu software engine yang cocok untuk pengembangan aplikasi berbasis game. Corona memiliki ekstensi data berbasis Lua. Lua merupakan ekstensi data yang cocok untuk game karena ringan dan mudah untuk dioprasikan. Keuntungan
dalam
penggunaan
software
engine
ini
dalam
pengembangan aplikasi game, salah satunya yang paling menakjubkan adalah Cross Platform Development. Cross Platform Development berarti Corona mendukung pengembangan aplikasi pada operation system iOS & Android, jadi dengan sekali kerja dapat menghasilkan sebuah software yang dapat berjalan di dalam dua platform. Aplikasi pada dasarnya terdapat beberapa kelebihan dan juga kekurangan yang terdapat didalam aplikasi tersebut, begitu juga dengan Corona SDK. Berikut ini adalah kelebihan dan kekurangan pada Corona SDK : 2.9.1
Kelebihan Menggunakan Corona SDK Corona SDK merupakan complier yang cocok digunakan oleh
programming Android pemula, hal itu dikarenakan memiliki beberapa kelebihan. Berikut ini merupakan beberapa kelebihan dari Corona SDK: a)
Cepat dan ringan jika dibandingkan dengan framework lainnya
b)
Trial program tanpa batas waktu & fitur
c)
Optimasi yang bagus terhadap hardware
d)
Terintegrasi dengan baik dengan sistem Android & iOS
e)
Tidak perlu menulis kode pemrograman yang terlalu mendasar (Native code)
2.9.2
Kekurangan Menggunakan Corona SDK Semua software pada umumnya selain memiliki kelebihan juga terdapat
beberapa kekurangannya. Berikut ini merupakan beberapa kekurangan dari Corona SDK: a)
Bahasa pemrograman bersifat struktural bukan berbasis OOP.
27
b)
Bahasa API (Aplication Programing Interface) masih dalam proses pengembangan. (Membingungkan proses belajar).
c)
Proses debugging yang tidak akurat.
d)
Tidak memiliki GUI untuk proses layouting (semua proses layout dengan code)
Gambar 2. 5 Logo Corona SDK (Sumber : www.coronalabs.com, 2013)
2.10.
Lua Lua merupakan bahasa pemrograman multi paradigma yang dirancang
sebagai scripting language dengan extendsible semantic sebagai tujuan utama. Lua diciptakan pada 1993 oleh Roberto Ierusalimschy, Luiz Henrique de Figueiredo, dan Waldemar Celes, anggota Kelompok Teknologi Komputer Grafis (Tecgraf) di Universitas Katolik Kepausan Rio de Janeiro, di Brasil . Lua merupakan turunan dari data description atau configuration language yaitu SOL (Simple Object Language) dan DEL (Data Entry Language). SOL dan DEL telah dikembangkan secara independen oleh Tecgraf untuk menambahkan fleksibilitas 2 projek yang berbeda (keduanya merupakan interactive graphical programs untuk Graphical Engineering di perusahaan Petrobas.
Gambar 2. 6 Logo lua (sumber: www.lua.org)
28
Lua dirancang, diimplementasikan, dan dipelihara oleh tim di PUC-Rio, Universitas Katolik Kepausan Rio de Janeiro di Brasil. Lua dibuat dan dikembangkan di Tecgraf, Komputer Grafis Technology Group dari PUC-Rio, dan sekarang bertempat di Lablua. Kedua Tecgraf dan Lablua adalah laboratorium Departemen Ilmu Komputer PUC-Rio (Burton. 2013). Bahasa pemrograman Lua merupakan bahasa pemprograman cepat dan ringan dalam menjalankan bahasa scripting. Lua menggabungkan sintak prosedural sederhana dengan deskripsi data,yang di dasari oleh array asosiatif dan
semantik
extensible.
Lua
dinamis
diketik,
berjalan
dengan
menginterpretasikan byte code untuk mesin virtual berbasis mendaftar, dan memiliki manajemen memori otomatis dengan pengumpulan sampah tambahan, sehingga ideal untuk konfigurasi, scripting, dan prototyping cepat (Ierusalimschy. 2012). 2.10.1
Keunggulan Bahasa Pemrograman Lua Lua merupakan bahasa pemprograman cepat dan ringan dalam
menjalankan bahasa scripting. Keunggulan Bahasa Pemrograman Lua adalah sebagai berikut. 2.10.1.1 Lua bahasa pemrograman yang kuat Lua merupakan bahasa pemrograman yang kuat, karena Lua telah digunakan dalam banyak aplikasi industri seperti, Adobe Photoshop Lightroom, dengan penekanan pada embedded system (misalnya, Ginga middleware untuk TV digital di Brasil) dan permainan (misalnya, World of Warcraft dan Angry Birds). Lua merupakan bahasa scripting terkemuka dalam bidang game. Lua mempunyai manual referensi yang solid dan ada beberapa buku tentang itu. Beberapa Versi Lua telah dirilis dan digunakan dalam aplikasi nyata sejak pembentukannya pada tahun 1993. Lua ditampilkan dalam HOPL III, Ketiga ACM SIGPLAN Sejarah Bahasa Pemrograman Konferensi, pada bulan Juni 2007. 2.10.1.2 Lua bahasa pemrograman yang cepat Lua memiliki reputasi untuk kinerja yang cepat. Beberapa benchmark menunjukkan Lua sebagai bahasa tercepat dalam ranah bahasa scripting.
29
2.10.1.3 Lua bahasa pemrograman yang portable Lua didistribusikan dalam paket kecil dan membangun out-of-the-box di semua platform yang memiliki kompiler C standar. Lua berjalan pada semua jenis Unix dan Windows, pada perangkat mobile (Android, iOS, BREW, Symbian, Windows Phone). 2.10.1.4 Lua bahasa pemrograman yang embeddable Lua adalah bahasa mesin cepat dengan ukuran kecil yang dapat ditanam dengan mudah ke dalam aplikasi. Lua mempunyai API sederhana dan terdokumentasi, yang memungkinkan integrasi yang kuat dengan kode yang ditulis dalam bahasa lain. Sangat mudah untuk memperpanjang Lua dengan perpustakaan yang ditulis dalam bahasa lain,hal ini juga mudah untuk memperpanjang program yang ditulis dalam bahasa lain dengan Lua. Lua telah digunakan untuk memperluas program yang ditulis tidak hanya di C dan C++, tetapi juga di Java, C#, Smalltalk, Fortran, Ada, Erlang, dan bahkan dalam bahasa script lainnya, seperti Perl dan Ruby. 2.10.1.5 Lua bahasa pemrograman yang kuat dan sederhana Konsep dasar dalam desain Lua adalah untuk menyediakan metamekanisme untuk mengimplementasikan fitur, alih-alih memberikan sejumlah fitur langsung dalam bahasa. Contoh, meskipun Lua bukan bahasa berorientasi objek murni, itu tidak memberikan meta-mekanisme untuk menerapkan kelas dan warisan. Lua meta-mekanisme membawa ekonomi konsep dan menjaga bahasa kecil, sementara memungkinkan semantik akan diperpanjang dengan cara yang tidak konvensional. 2.10.1.6 Lua gratis Lua adalah perangkat lunak open-source, didistribusikan dibawah lisensi yang sangat liberal (lisensi MIT). Ini dapat digunakan untuk tujuan apapun, termasuk tujuan komersial, sama sekali tanpa biaya. Cukupmen-download dan menggunakannya (Ierusalimschy. 2012).
30
2.10.2
Kekurangan Bahasa Pemrograman Lua Kekurangan dari bahasa pemrograman Lua adalah sebagai berikut :
1.
Bahasa pemrograman bersifat struktural bukan berbasis OOP.
2.
Bahasa API (Aplication Programing Interface) masih dalam proses pengembangan.
3.
Tutorial masih tergolong sedikit.
2.11.
Notepad++ Notepad++ adalah sebuah penyunting teks dan penyunting kode sumber
yang berjalan di sistem operasi Windows. Notepad++ menggunakan komponen Scintilla
untuk
dapat
menampilkan
dan
menyunting
teks.
Notepad++
didistribusikan sebagai perangkat lunak bebas. Notepad++ juga mendukung beberapa bahasa pemrograman, didukung dalam hal ini adalah dimengerti dan diterjemahkan menjadi teks oleh Notepad++. Pada C++, fungsi-fungsinya akan dimasukkan kedalam daftar fungsi dan katakatanya akan berubah warna sesuai dengan makna kata tersebut di C++. Berikut ini adalah bahasa pemrograman yang didukung oleh Notepad++ . 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
ActionScript, Ada, ASP, Assembler, autoIt; Batch; C, C++, C#, Caml, Cmake, COBOL, CSS; D, Diff; Flash ActionScript, Fortran; Gui4CLI; Haskell, HTML; Berkas INI, InnoSetup; Java, Javascript, JSP; KiXtart; LISP, Lua; Makefile, Matlab, MS-DOS; NSIS Objective-C; Pascal, Perl, PHP, Postscript, PowerShell, Properties file, Python;
16.
R, Resource file, Ruby;
31
17. 18. 19. 20. 21.
Shell, Scheme, Smalltalk, SQL; TCL, TeX; Visual Basic, VHDL, Verilog; XML; YAML;
2.12.
SQLite SQLite adalah sebuah database yang terkenal karena menggabungkan
antarmuka SQL dengan penggunaan memori yang sangat kecil dan kecepatan yang baik. SQLite merupakan open source database yang stabil dan sering digunakan pada perangkat kecil, termasuk Android. Android menyediakan database relasional yang ringan untuk setiap aplikasi menggunakan SQLite. Aplikasi dapat memperoleh keuntungan yaitu untuk menyimpan data secara amam dan efisien. (Nugroho, 2011) Sistem kerja SQLite pada Android, SQLite dijadikan satu dalam Android runtime, sehingga setiap aplikasi Android dapat membuat basis data SQLite. Terdapat beberapa alasan mengapa SQLite cocok untuk pengembangan aplikasi Android, yaitu sebagai berikut. 1.
Open source, hal ini membuat developer mudah dalam pengembangan aplikasi.
2.
Single-file database, membuat keamanan databse terjaga secara langsung.
3. 2.13.
Tidak memakai server, sehingga kecepatan akan terjamin. Adobe Illustrator CS6 Animasi adalah proses penciptaan objek gerak atau efek perubahan
bentuk yang terjadi selama beberapa waktu. Melihat dari penjelasan diatas mengenai animasi, jadi animasi adalah suatu paparan visual yang berbentuk dinamik. (Sudirman, 2008). Animasi berperan besar dalam membuat suatu projek menjadi lebih menarik. Corona yang merupakan software enginnering yang sangat baik untuk membuat game, memerlukan adanya tampilan animasi ini. Pengaplikasian animasi
32
ini sendiri dalam corona memerlukan beberapa software bantuan, seperti Adobe Illustrator CS6. Adobe Illustrator adalah editor grafis vektor yang dikembangkan dan dipasarkan oleh Adobe Inc. Grafik vector merupakan grafik yang tidak akan mengalami penurunan kualitas bila dimensi gambarnya diperbesar karena tidak bergantung dengan resolusi. Sebagai program ilustrasi vector, Adobe Illustrator adalah perangkat lunak yang handal dalam mewujudkan kreatifitas dan imajinasi sang designer ke dalam bentuk gambar. Terdapat banyak tools yang dimiliki Adobe Illustrator sehingga memudahkan pengguna agar lebih mudah dalam menghasilkan suatu gambar yang menarik. 2.14.
Kecerdasan Buatan atau Artificial Intelligence(AI) Berbagai definisi diungkapkan oleh para ahli untuk dapat memberi
gambaran mengenai kecerdasan buatan beberapa diantaranya adalah sebagai berikut. a.
Kecerdasan
Buatan
(Artificial
Intelligence)
merupakan
kawasan
penelitian, aplikasi dan instruksi yang terkait dengan pemrograman komputer untuk melakukan sesuatu hal yang dalam pandangan manusia adalah cerdas (H. A. Simon.1987). b.
Kecerdasan Buatan merupakan sebuah studi tentang bagaimana membuat komputer melakukan hal-hal yang pada saat ini dapat dilakukan lebih baik oleh manusia (Rich and Knight.1991).
c.
Kecerdasan Buatan merupakan cabang dari ilmu komputer yang dalam merepresentasi pengetahuan lebih banyak menggunakan bentuk simbolsimbol daripada bilangan, dan memproses informasi berdasarkan metode heuristic atau dengan berdasarkan sejumlah aturan (Encyclopedia Britannica).
2.13.1
Jenis-Jenis Kecerdasan Buatan Dalam perkembangannya kecerdasan buatan dapat dikelompokkan
sebagai berikut.
33
1.
Sistem Pakar (Expert System), komputer sebagai sarana untuk menyimpan pengetahuan para pakar sehingga komputer memiliki keahlian menyelesaikan permasalahan dengan meniru keahlian yang dimiliki pakar.
2.
Pengolahan Bahasa Alami (Natural Language Processing), player dapat berkomunikasi dengan komputer menggunakan bahasa sehari-hari, misal bahasa inggris, bahasa indonesia, dan sebagainya.
3.
Pengenalan Ucapan (Speech Recognition), manusia dapat berkomunikasi dengan komputer menggunakan suara.
4.
Robotika & Sistem Sensor.
5.
Computer Vision, menginterpretasikan gambar atau objek-objek tampak melalui komputer.
6.
Intelligent Computer-Aided Instruction, komputer dapat digunakan sebagai pengajar yang dapat melatih & mengajar.
7.
Soft Computing Soft computing merupakan sistem yang memiliki keahlian seperti manusia pada domain tertentu, mampu beradaptasi dan belajar agar dapat bekerja lebih baik jika terjadi perubahan lingkungan. Soft computing mengeksploitasi
adanya
toleransi
terhadap
ketidaktepatan,
ketidakpastian, dan kebenaran parsial untuk dapat diselesaikan dan dikendalikan dengan mudah agar sesuai dengan realita (Prof. Lotfi A Zadeh, 1992). Metodologi-metodologi yang digunakan dalam soft computing adalah sebagai berikut.
2.15.
a.
Logika Fuzzy/Fuzzy Logic (mengakomodasi ketidaktepatan).
b.
Jaringan Syaraf Tiruan/Neurall Network.
c.
Probabilistic Reasoning (mengakomodasi ketidakpastian).
d.
Algoritma Genetika/Evolutionary Computing (optimasi).
Linear Congruential Generator (LCG) Linear Congruential Generator atau jika diubah kedalam bahasa
Indonesia menjadi Pembangkit Bilangan Acak Kongruen-Lanjar merupakan
34
pembangkit bilangan acak yang sederhana, mudah dimengerti teorinya, dan juga mudah untuk di implementasikan. LCG didefinisikan dalam relasi berulang berikut: Xn = (aXn-1 + b) mod m Keterangan: Xn
= bilangan acak ke-n dari deretnya
Xn-1
= bilangan acak sebelumnya
a
= factor pengali
b
= increment
m
= modulud
X0 adalah kunci pembangkit atau disebut juga umpan (seed). LCG mempunyai periode tidak lebih besar dari m, dan pada kebanyakan kasus periodenya kurang dari itu. LCG mempunyai periode penuh (m – 1) jika memenuhi syarat berikut: 1.
b relatif prima terhadap m.
2.
a – 1 dapat dibagi dengan semua faktor prima darim
3.
a – 1 adalah kelipatan 4 jika m adalah kelipatan 4
4.
m > maks (a, b, X0)
5.
a > 0, b > 0 Periode LCG paling besar adalah M bahkan pada kebanyakan kasus
periodenya kurang dari M. Maksudnya adalah deret bilangan acak yang dihasilkan tidak lebih banyak dari modulonya. Perhatikan contoh berikut. Misalkan: a=3, b=13, m=29 Xn = (3Xn-1 + 13) mod 29 Untuk X0 = 0 X1 = (3X0 + 13) mod 29 X1 = (3*0 + 13) mod 29 X1 = 13 mod 29 X1 = 13 X2 = (3X1 + 13) mod 29
35
X2 = (3*13 + 13) mod 29 X2 = 52 mod 29 X2 = 23 X3 = (3X2 + 13) mod 29 X3 = (3*23 + 13) mod 29 X3 = 52 mod 29 X3 = 24
Begitu seterusnya sampai perulangan yang diinginkan, dimana pada pembahasan ini dilakukan sebanyak 28 kali perulangan. Hasil untuk perulangan dari X4 sampai X28 dapat dilihat pada Tabel 2.2 Tabel 2 2 Hasil Perhitungan Algoritma LCG
n
Xn
n
Xn
1
13
15
3
2
23
16
22
3
24
17
21
4
27
18
18
5
7
19
9
6
5
20
11
7
28
21
17
8
10
22
6
9
14
23
2
10
26
24
19
11
4
25
12
12
25
26
20
13
1
27
15
14
16
28
0
2.16.
Linear Feedback Shift Register (LFSR) Menurut Stephen Herlambang (2011) menyatakan bahwa Linear
Feedback Shift Register(LFSR) adalah shift register yang bit masukannya
36
merupakan fungsi linear dari state sebelumnya. Satu-satunya fungsi linear pada bit satuan xor, oleh karena itu LFSR adalah shift register yang bit masukannya dibangkitkan exclusive-or dari bit dari keseluruhan nilai shift registrasi. Inisial value dari LFSR dikenal dengan seed, dan karena operasi dari register bersifat deterministik, aliran nilai yang dihasilkan register akan sepenuhnya ditentukan state sekarang atau sebelumnya. Dengan begitu karena register memiliki jumlah state yang terbatas pasti akan terbentuk siklus yang berulang, akan tetapi LFSR yang memiliki fungsi umpan balik yang baik dapat memproduksi sekuens bit yang tampak acak dan memiliki siklus yang sangat penting. Adapun proses sebuah LFSR 4 bit dengan output pada bit ke 1, seperti terlihat dibawah ini : Tabel 2 3 Skema Proses LFSR
S4
S3
S2
S1
Output
XOR Dari gambar di atas menjelaskan konsep dasar dari LFSR yang artinya adalah "Register geser dengan umpan balik linier". Prosesnya adalah : 4.
S1 sampai S4 diisi oleh bit-bit yang sudah ditentukan;
5.
Tahap pertama, S1 dan S4 akan di XOR-kan;
6.
S1-S4 digeser ke kanan sepanjang satu bit;
7.
Bit pertama akan dijadikan output;
8.
Bit hasil XOR antar S1 dan S4 (sebelum digeser) akan dimasukkan ke S4; Contoh metode LFSR adalah seperti contoh, misalnya terdapat urutan 4
bit 0 0 0 0 1 akan dilakukan pengacakan dengan metode LFSR dimana prosesnya dapat dilihat sebagai berikut :
37
Gambar 2. 7 Register 4 bit LFSR
WAKTU KE 0
S4 S3 S2 S1 1 1 1 1 (S4 xor S1) S4 S3 S2 1 0 1 1 1 Hasil secara keseluruhan dapat dilihat pada Tabel 2.4. Tabel 2 4 Hasil Metode LFSR
Waktu ke
S4 S3 S2 S1
Waktu ke
S4 S3 S2 S1
0
1 1
1 1
11
0 0
0 1
1
0 1
1 1
12
1 0
0 0
2
1 0
1 1
13
1 1
0 0
3
0 1
0 1
14
1 1
1 0
4
1 0
1 0
15
1 1
1 1
5
1 1
0 1
16
0 1
1 1
6
0 1
1 0
17
1 0
1 1
7
0 0
1 1
18
0 1
0 1
8
1 0
0 1
19
1 0
1 0
9
0 1
0 0
20
1 1
0 1
10
0 0
1 0
21
0 1
1 0
38
2.17.
Sequential/Linier Search Pencarian (searching) merupakan suatu pekerjaan yang sering dikerjakan
dalam kehidupan sehari- hari. Ada kalanya pencarian dilakukan dengan tujuan hanya untuk mengetahui apakah data tersebut adadalam sekumpulan data atau tidak. Pencarian Linier dapat dilakukan pada barisan bilangan yang terurut secara menaik (ascending) atau menurun (descending) ataupun tidak terurut. Pencarian Linier dilakukan dengan cara membandingkan data yang dicari (X) dengan data dalam barisan A[1] sampai A[n] dengan dimulai dari data elemen pertama pada barisan A. Jika perbandingan bernilai sama, maka pencarian dihentikan dan dinyatakan sukses. Sedangkan apabila perbandingan tidak bernilai sama maka, 1.
Jika data tidak terurut (data acak), maka pencarian akan dilanjutkan ke data selanjutnya.
2.
Jika data terurut secara menaik (ascending), maka pencarian hanya akan dilanjutkan ke data selanjutnya yang berada di sebelah kanan data yang sedang dibandingkan apabila data yang dicari (X) lebih besar daripada data yang sedang dibandingkan sekarang.
3.
Jika data terurut secara menurun (descending), maka pencarian hanya akan dilanjutkan ke data selanjutnya yang berada di sebelah kanan data yang sedang dibandingkan apabila data yang dicari (X) lebih kecil daripada data yang sedang dibandingkan sekarang. Jika syarat-syarat di atas dipenuhi, maka pencarian data akan dilakukan
sampai data yang dicari (X) ditemukan sehingga pencarian dinyatakan sukses atau sampai elemen terakhir dari barisan A dan tidak ada elemen A yang sama dengan data yang dicari (X) sehingga pencarian dinyatakan gagal. Untuk lebih jelasnya dapat dilihat pada Gambar 2.8.
39
Gambar 2. 8 Flowchart Sequential Search