Perancangan dan Implementasi Aplikasi Mobile Game Shoot …

19
1 1. Pendahuluan Perkembangan dalam bidang teknologi informasi dan komunikasi semakin pesat, khususnya pada perkembangan teknologi mobile. Berdasarkan data statistik yang bersumber dari StatCounter Global Stats, terhitung mulai November 2011 hingga September 2012 penggunaan perangkat mobile di seluruh dunia terus mengalami peningkatan hingga mencapai 12.03% pada September 2012[1]. Penggunaan perangkat desktop memang masih mendominasi namun berdasarkan data statistik yang bersumber dari StatCounter Global Stats, terhitung mulai November 2011 hingga September 2012 penggunaan perangkat desktop di seluruh dunia terus mengalami penurunan (menjadi 87,97% pada September 2012)[1]. Berdasarkan data statistik tersebut dapat diperkirakan bahwa kedepannya ada kemungkinan besar bahwa penggunaan perangkat mobile akan terus meningkat. Terlebih lagi saat ini telah dikembangkan sistem operasi mobile dan open source yaitu Android. Dalam situs resmi pengembang Android mengatakan bahwa setiap hari lebih dari satu juta perangkat Android baru, diaktifkan di seluruh dunia. Android mendukung ratusan juta perangkat mobile di lebih dari 190 negara di seluruh dunia. Android merupakan platform mobile terbesar yang digunakan dibandingkan platform mobile lainnya dan bertumbuh dengan cepat setiap hari jutaan pengguna menyalakan perangkat Android mereka untuk pertama kalinya dan mulai mencari aplikasi, game, dan konten digital lainnya[2]. Berdasarkan riset Mobile Gaming Industry, 70% sampai 80% dari keseluruhan pengunduhan yang dilakukan dari perangkat mobile adalah mengunduh game[3]. Berdasarkan riset statistik yang dilakukan oleh eMarketer, memperkirakan bahwa tahun 2012 pada segmen game mobile akan menduduki posisi tertinggi berdasarkan jumlah penggunanya, di antara jumlah pemain dari berbagai jenis segmen game online di United States. Jumlah pemain game mobile juga akan terus berlanjut untuk bertumbuh semakin cepat dibandingkan dengan jumlah pemain game di segmen game lainnya, yaitu mencapai 141 juta pada tahun 2014. Cepatnya pertumbuhan game mobile dimotori oleh meningkatnya kepemilikan smartphone. Antara tahun 2010 dan 2012, jumlah pemain game smartphone akan meningkat dari 45,8% menjadi 75% dari jumlah seluruh pemain game mobile[4]. Berdasarkan data riset yang telah dipaparkan, menjadi latar belakang untuk mengembangkan aplikasi mobile game pada platform Android. Selain itu pengembang dari sistem operasi Android ini juga menyediakan fasilitas untuk memudahkan dalam memasarkan aplikasi yang telah dikembangkan oleh developer. Secara konvensional mengembangkan aplikasi pada platform Andoid dapat menggunakan software yang bernama Eclipse dengan membangunnya menggunakan bahasa pemrograman Java. Namun terdapat cara lain untuk mengembangkan aplikasi game pada platform Android, yaitu menggunakan software Shiva 3D yang merupakan software yang dirancang untuk mengembangkan game dengan menggunakan script Lua untuk pemrogramannya. Melalui software ini memungkinkan untuk menghasilkan game yang telah dikembangkan menjadi satu arsip Android Package (.apk) yang siap pakai. Android Package merupakan format arsip untuk instalasi aplikasi pada platform

Transcript of Perancangan dan Implementasi Aplikasi Mobile Game Shoot …

1

1. Pendahuluan

Perkembangan dalam bidang teknologi informasi dan komunikasi semakin

pesat, khususnya pada perkembangan teknologi mobile. Berdasarkan data statistik

yang bersumber dari StatCounter Global Stats, terhitung mulai November 2011

hingga September 2012 penggunaan perangkat mobile di seluruh dunia terus

mengalami peningkatan hingga mencapai 12.03% pada September 2012[1].

Penggunaan perangkat desktop memang masih mendominasi namun berdasarkan

data statistik yang bersumber dari StatCounter Global Stats, terhitung mulai

November 2011 hingga September 2012 penggunaan perangkat desktop di seluruh

dunia terus mengalami penurunan (menjadi 87,97% pada September 2012)[1].

Berdasarkan data statistik tersebut dapat diperkirakan bahwa kedepannya ada

kemungkinan besar bahwa penggunaan perangkat mobile akan terus meningkat.

Terlebih lagi saat ini telah dikembangkan sistem operasi mobile dan open

source yaitu Android. Dalam situs resmi pengembang Android mengatakan

bahwa setiap hari lebih dari satu juta perangkat Android baru, diaktifkan di

seluruh dunia. Android mendukung ratusan juta perangkat mobile di lebih dari

190 negara di seluruh dunia. Android merupakan platform mobile terbesar yang

digunakan dibandingkan platform mobile lainnya dan bertumbuh dengan cepat –

setiap hari jutaan pengguna menyalakan perangkat Android mereka untuk pertama

kalinya dan mulai mencari aplikasi, game, dan konten digital lainnya[2].

Berdasarkan riset Mobile Gaming Industry, 70% sampai 80% dari

keseluruhan pengunduhan yang dilakukan dari perangkat mobile adalah

mengunduh game[3]. Berdasarkan riset statistik yang dilakukan oleh eMarketer,

memperkirakan bahwa tahun 2012 pada segmen game mobile akan menduduki

posisi tertinggi berdasarkan jumlah penggunanya, di antara jumlah pemain dari

berbagai jenis segmen game online di United States. Jumlah pemain game mobile

juga akan terus berlanjut untuk bertumbuh semakin cepat dibandingkan dengan

jumlah pemain game di segmen game lainnya, yaitu mencapai 141 juta pada tahun

2014. Cepatnya pertumbuhan game mobile dimotori oleh meningkatnya

kepemilikan smartphone. Antara tahun 2010 dan 2012, jumlah pemain game

smartphone akan meningkat dari 45,8% menjadi 75% dari jumlah seluruh pemain

game mobile[4]. Berdasarkan data riset yang telah dipaparkan, menjadi latar

belakang untuk mengembangkan aplikasi mobile game pada platform Android.

Selain itu pengembang dari sistem operasi Android ini juga menyediakan fasilitas

untuk memudahkan dalam memasarkan aplikasi yang telah dikembangkan oleh

developer.

Secara konvensional mengembangkan aplikasi pada platform Andoid dapat

menggunakan software yang bernama Eclipse dengan membangunnya

menggunakan bahasa pemrograman Java. Namun terdapat cara lain untuk

mengembangkan aplikasi game pada platform Android, yaitu menggunakan

software Shiva 3D yang merupakan software yang dirancang untuk

mengembangkan game dengan menggunakan script Lua untuk pemrogramannya.

Melalui software ini memungkinkan untuk menghasilkan game yang telah

dikembangkan menjadi satu arsip Android Package (.apk) yang siap pakai.

Android Package merupakan format arsip untuk instalasi aplikasi pada platform

2

Android. Dalam software Shiva 3D sudah tersedia game engine yang

menyederhanakan dalam proses pengembangan game. Developer dapat lebih

fokus kepada implementasi dari logika game yang akan dikembangkan. Adanya

script Lua yang sederhana dan dapat dengan mudah dipelajari dapat dijadikan

pertimbangan untuk mengembangkan game dengan menggunakan software ini.

Berdasarkan latar belakang yang telah disampaikan, maka akan dikembangkan

sebuah game yang bergenre shoot em up pada platform Android dengan

menggunakan script Lua pada software Shiva 3D.

2. Kajian Pustaka

Game adalah sebuah aplikasi atau software yang dibuat dengan tujuan untuk

menghibur penggunanya. Meskipun game ini pada dasarnya sama dengan dengan

aplikasi atau software yang lain, dimana dalam pembuatanya menggunakan

bahasa pemrograman yang kemudian di konversi menjadi sebuah file executable

yang kemudian dikemas ke dalam file installer dan kemudian didstribusikan

kepada pengguna. Akan tetapi dalam melakukan perancangan akan sangat

berbeda bila dibandingkan dengan aplikasi atau software yang lain. Hal ini

dikarenakan, di dalam game ada unsur seni dan hiburan yang dimasukkan, seperti

halnya membuat sebuah karya seni seperti, lagu, novel, drama atau sebuah film.

[5]. Lua merupakan bahasa scripting yang handal, cepat, ringan, dan dapat

diintegrasikan. Lua menggabungkan sintaks prosedur yang sederhana dengan

susunan-susunan deskripsi data yang handal yang berdasarkan pada larik-larik

(array) asosiatif dan extensible semantics. Lua merupakan tipe yang dinamis,

berjalan dengan menterjemahkan bytecode untuk mesin virtual yang berbasiskan

register, dan memiliki manajemen memori secara otomatis dengan incremental

garbage collection, membuat Lua ideal untuk mengatur, scripting, dan

prototyping secara cepat[6]. Lua tidak mencoba menolong untuk menulis

program-program dengan ribuan baris. Sebaliknya, Lua mencoba menolong untuk

menyelesaikan masalah dengan hanya ratusan baris, atau bahkan kurang. Untuk

mencapai tujuan ini, Lua bersandar pada extensibilitasnya, seperti kebanyakan

bahasa lainnya. Tidak seperti bahasa yang lain, bagaimanapun juga, proses

extended dalam Lua mudah, bukan hanya dengan perangkat lunak yang ditulis

dalam bahasa Lua itu sendiri, tapi juga dengan perangkat lunak yang ditulis dalam

bahasa yang lain, seperti C dan C++[7].

Tentu saja bukan hanya Lua yang merupakan bahasa scripting yang

tersedia. Terdapat bahasa yang lain yang dapat digunakan yang kurang lebih

memiliki tujuan yang sama, seperti Perl, Tcl, Ruby, Forth, dan Python. Fitur

berikut menjadikan Lua jauh berbeda dari bahasa-bahasa lain; meskipun bahasa-

bahasa lain memiliki sebagian fasilitas yang sama dengan Lua, tidak ada bahasa

lain yang menawarkan profil yang serupa[7]: Extensibility: ekstensibilitas Lua

sangat menarik perhatian sehingga banyak orang menganggap Lua bukan sebagai

suatu bahasa, tetapi sebagai suatu perangkat untuk membangun domain-specific

language. Lua telah dirancang dari awal untuk diperluas/ diaplikasikan, baik

melaui kode Lua dan kode eksternal C. Lua menerapkan sebagian fungsi dasarnya

3

melalui library eksternal. Sangat mudah untuk menghubungkan Lua dengan C/

C++ dan bahasa lainnya, seperti Fortran, Java, Smalltalk, Ada, dan bahkan dengan

bahasa scripting yang lain. Simplicity: Lua merupakan bahasa yang sederhana dan

kecil. Lua memiliki sedikit (tapi andal) konsep. Kesederhanaan ini membuat Lua

mudah untuk dipelajari dan berkontribusi untuk penerapan yang sederhana.

Keseluruhan paket Lua (kode sumber, referensi, ditambah arsip biner untuk

beberapa platform) dapat dimuat dalam sebuah disket. Efficiency: Lua memiliki

implementasi yang cukup efisien. Benchmark independen menunjukan Lua

sebagai salah satu bahasa tercepat dalam hal bahasa scripting (interpreted).

Portability: ketika membicarakan mengenai portabilitas, tidak hanya berbicara

mengenai menjalankan Lua baik pada Windows maupun pada platform Unix.

Portabilitasnya berbicara mengenai menjalankan Lua pada banyak platform yang

pernah didengar: NextStep, OS/2, PlayStation II (Sony), Mac OS-9 and OS X,

BeOS, MS-DOS, IBM mainframes, EPOC, PalmOS, MCF5206eLITE Evaluation

Board, RISC OS, tentu saja ditambah dengan semua yang berbau Unix dan

Windows. Kode sumber untuk setiap platform adalah hampir sama. Lua tidak

menggunakan kompilasi kondisional untuk menyesuaikan kodenya pada mesin

yang berbeda; malah, Lua bersandar pada ANSI standar (ISO) C. Dengan begitu,

tidak perlu menyesuaikannya lagi terhadap environment yang baru. Jika memiliki

compiler ANSI C, hanya perlu meng-compile Lua.

Android adalah sebuah sistem operasi untuk perangkat mobile berbasis

Linux yang mencakup sistem operasi, middleware, dan aplikasi. Android

menyediakan platform yang terbuka bagi para pengembang untuk menciptakan

aplikasi mereka[8]. Karena sistem operasi Android merupakan sistem operasi

open source, saat ini berbagai vendor smartphone telah menggunakan sistem

operasi Android untuk smartphone yang diproduksinya. Dari sekian banyak

vendor yang memproduksi smartphone Android diantaranya adalah Samsung, LG,

HTC, Motorola, Sony, Nexian, T-Mobile, Nexus, dan Huawei. Karena bersifat

open source ini pula perkembangan Android menjadi cepat. Tidak hanya Google

saja yang mengembangkannya namun dari pihak vendor smartphone dan berbagai

komunitas juga ikut berperan serta untuk semakin meningkatkan kemampuan

sistem operasi Android. The Dalvik Virtual Machine (DVM) adalah salah satu

elemen kunci dari Android. Android berjalan di dalam Dalvik Virtual Machine

(DVM), bukan di Java Virtual Machine (JVM). Android menggunakan virtual

machine sendiri yang dikustomisasi dan dirancang untuk memastikan bahwa

beberapa fitur berjalan lebih efisien pada perangkat mobile[8]. Shoot Em Up

adalah genre dari game, biasanya bergaya arcade, dimana pemain mengendalikan

satu objek, biasanya berupa kendaraan angkasa, dan harus bertahan terhadap

sekumpulan musuh yang secara terus menerus menyerang. Scrolling Shooter

adalah sub-genre dari Shoot Em Up dimana tampilannya secara terus menerus

bergerak, biasanya secara horizontal atau vertikal[9].

4

Gambar 1 Arsitektur Android[8]

3. Perancangan Sistem

Pada perancangan game ini metode yang digunakan adalah metode

prototipe. Secara ideal prototipe berfungsi sebagai sebuah mekanisme untuk

mengidentifikasi kebutuhan perangkat lunak. Bila prototipe yang sedang bekerja

dibangun, pengembang harus mempergunakan fragmen-fragmen program yang

ada atau mengaplikasikan alat-alat bantu (contohnya report generator, window

manager, dan lain-lain) yang memungkinkan program yang bekerja untuk

dimunculkan secara cepat[10].

Gambar 2 Metode Prototipe [10]

5

Proses dari pengembangan sistem dalam game yang dikembangkan, dapat

dijelaskan sebagai berikut:

1. Mengumpulkan Kebutuhan

Pada tahap ini menentukan akan seperti apa gameplay (rule/ aturan main)

dari game yang akan dikembangkan nantinya dan menentukan sistem kontrol dari

game. Selain itu juga melihat gameplay dari berbagai judul game yang telah

suskes, yang memiliki gameplay yang mirip dengan gameplay dari game yang

akan dikembangkan sebagai referansi, inspirasi, dan motivasi dalam

pengembangan game. Selanjutnya mencari penelitian sebelumnya yang memiliki

keterkaitan dengan game Shoot Em Up yang dapat dijadikan sebagai referensi.

2. Membangun Prototype

Setelah tahap pertama selesai maka semua kebutuhan yang telah

didefinisikan dipakai sebagai dasar dalam pembuatan prototype dari game. Semua

resource yang dibutuhkan untuk pengembangan game digabungkan dan diatur

oleh kode program sehingga terbentuklah prototype dari game yang telah

dirancang.

3. Evaluasi Prototype

Pada tahap ini dilakukan black-box testing untuk menguji prototype secara

keseluruhan. Jika masih ada kekurangan maka prototype akan diperbaiki. Melalui

proses ini akan mendapatkan gambaran yang digunakan sebagai acuan untuk

menyempurnakan dan memperjelas rancangan game.

Peninjauan game: game ini berjudul “Sofra Strike.” Genre dari game ini

adalah vertical scrolling shooter, dimana pemain seolah-olah melihat area tempat

game berlangsung dari sisi atas lingkungan gameplay dan pemain mengendalikan

sebuah pesawat tempur untuk menghindari peluru, menghadapi dan

menghancurkan musuh-musuh yang telah menghadang, serta berusaha untuk terus

mempertahankan kondisi life meter-nya agar tidak menjadi kosong, hingga pada

akhirnya menghadapi boss dari setiap stage yang berbeda. Pemain juga

berkesempatan untuk meningkatkan performa senjatanya. Game ini hanya dapat

dimainkan oleh satu pemain. Game ini dijalankan pada smartphone yang

berteknologi layar sentuh dengan sistem operasi Android (minimal versi 2.1).

Perancangan gameplay: ketika game dijalankan akan menuju ke tampilan

menu utama/ title screen dari game. Menu utama terdiri dari menu Start Game

untuk mulai memainkan game, menu Stage Select untuk memilih stage yang ingin

dimainkan, menu How To Play yang berisi informasi mengenai game, menu

Credit untuk menampilkan informasi pihak-pihak yang terkait dalam

pengembangan game, dan menu Quit untuk keluar dari aplikasi game.

Gameplay: ketika memilih menu New Game maka dengan otomatis akan

memulai stage satu. Stage satu sebagaimana stage yang lainnya akan

menempatkan pemain pada lingkungan stage, dimana background lingkungannya

bergerak secara vertikal dengan kecepatan yang telah ditentukan, dengan musuh-

musuh yang datang dari sisi atas layar dan dari sisi kiri maupun kanan (atau dari

keduanya dalam waktu yang bersamaan). Pemain harus dapat bertahan kira-kira

selama satu atau dua menit dari serangan musuh-musuh, sebisa mungkin

menghancurkan musuh-musuh yang datang dengan senjatanya, sebelum semua

musuh disingkirkan untuk mendatangkan boss yang akan mengambil alih untuk

6

menyerang. Menghancurkan boss pada suatu stage akan mengakhiri stage itu dan

akan berpindah ke stage selanjutnya.

Gambar 3 Game Flowchart

Antarmuka: game akan dikendalikan melalui layar sentuh, dan untuk

navigasi pesawat menggunakan virtual direction pad. Pemain juga dapat

menyentuh tombol Wave Out, yaitu tombol yang ditampilkan di atas tombol untuk

menebak ketika Wave Out gauge telah penuh. Jika disentuh maka akan

mengaktifkan serangan Wave Out dan tombol ini akan hilang hingga Wave Out

gauge penuh kembali. Untuk tombol menembak, jika disentuh sekali akan

mengaktifkan menembak secara otomatis, dan jika disentuh lagi maka menembak

secara otomatis akan dinonaktifkan sehingga akan menghentikan tembakan.

7

Objek: objek disini adalah mencakup objek-objek yang ditampilkan di layar

yang dapat berinteraksi dengan pemain disepanjang gameplay berlangsung,

diantaranya meliputi pesawat pemain, pesawat musuh, boss, senjata utama, Wave

Out, benda-benda yang dapat di ambil, dan peluru musuh. Suara: suara yang

dimainkan dalam keseluruhan game ini dibagi menjadi dua kategori: “Musik” dan

“SFX.” Musik adalah lantunan suara musik yang dimainkan disepanjang

gameplay dari setiap stage. SFX adalah efek suara yang dimainkan pada saat

memilih menu atau ketika terjadi event-event tertentu pada gameplay misalnya

ketika musuh meledak dan ketika pemain mendapatkan item.

Leveling: dalam aplikasi game ini terdapat enam level permainan. Semakin

bertambah level-nya maka tingkat ketahanan musuh terhadap peluru yang

ditembakkan oleh pemain juga akan semakin meningkat. Semakin bertambah

level-nya maka intensitas kedatangan musuh akan semakin bertambah. Semakin

bertambah level-nya maka pola tembakkan dan pergerakkan musuh akan semakin

bervariasi. Begitu pula dengan boss yang ada di setiap level-nya, semakin

bertambah level-nya maka ketahanannya akan semakin bertambah juga tingkat

kerumitan pola tembakkannya akan semakin bertambah.

Story: cerita akan ditampilkan sebelum stage dimulai dalam bentuk

percakapan antar tokohnya.

Controlling: untuk melakukan navigasi pesawat adalah menggunakan

virtual directional pad yang tertampil pada layar permainan saat stage dimulai.

Pertama virtual directional pad disentuh terlebih dahulu, kemudian geser

sentuhan ke arah yang diinginkan. Untuk melakukan tembakan dengan menyentuh

tombol „A‟ (Attack) yang ada pada layar permainan. Prinsip penembakan seperti

penggunaan saklar, yaitu hidup atau mati. Jika tombol ini disentuh untuk pertama

kalinya maka pesawat akan secara otomatis menembakan peluru. Jika disentuh

lagi maka pesawat akan berhenti menembakan peluru, begitu seterusnya. Tombol

„W‟ (Waveout) untuk menembakan senjata khusus (Waveout). Rancangan

tampilan gameplay dapat dilihat pada Gambar 4

Mekanisme gameplay: setiap sebelum stage dimulai, akan mucul tampilan

dialog cerita dari game. Saat stage telah dimulai level tembakan pemain berada

pada level satu, life meter terisi penuh, dan Waveout gauge dalam keadaan belum

terisi. Level tembakan, life meter, dan Waveout gauge pada saat memasuki stage

berikutnya akan sesuai dengan kondisi terakhir pada stage sebelumnya, setelah

mengalahkan boss. Untuk dapat memenangkan setiap stage yang ada, pemain

harus dapat mempertahankan kondisi life meter agar tidak menjadi habis dan

harus mengalahkan boss pada setiap stage. Jika pemain tidak dapat

mempertahankan kondisi life meter atau dengan kata lain life meter habis saat

stage berlangsung, maka pemain dinyatakan kalah dan permainan akan berakhir.

Setiap pemain telah berhasil mengalahkan boss yang ada di setiap stage akan di

tampilkan tampilan perhitungan score dari stage yang telah dimainkan.

Tahap Evaluasi (Pengujian Sistem): Pengujian prototype dilakukan

dengan menggunakan metode black-box testing. Pengujian black-box adalah

pengujian aspek fundamental sistem tanpa memperhatikan struktur logika internal

perangkat lunak. Metode ini digunakan untuk mengetahui apakah perangkat lunak

8

berfungsi dengan benar. Pengujian black box merupakan metode perancangan

data uji yang didasarkan pada spesifikasi perangkat lunak yang dibuat[10].

Gambar 4 Rancangan Tampilan Gameplay

4. Hasil dan Pembahasan

Gambar 5 menunjukkan antarmuka aplikasi game Sofra Strike yang terdiri

dari Start Game, Continue, Stage Select, How To Play, Credits, dan Quit.

Gambar 5 Antarmuka Aplikasi Gambar 6 Tampilan Dialog Cerita

9

Sebelum stage dimulai akan ada dialog cerita. Cerita dapat dilewati dengan

menyentuh tombol „Skip.‟ Setelah dialog selesai maka akan memasuki tampilan

gameplay.

Selanjutnya adalah tahap pengujian yang dilakukan untuk memeriksa

keseluruhan dari aplikasi, memeriksa apakah aplikasi berjalan dengan baik (tidak

ada error), dan memeriksa apakah telah sesuai dengan kebutuhan yang telah

ditentukan. Berikut merupakan gambaran dari proses pengujian prototype secara

keseluruhan

Gambar 7 Langkah-Langkah Pengujian

Black-box testing memungkinkan pengembang untuk membuat himpunan

kondisi input yang akan melatih seluruh syarat-syarat fungsional suatu program.

Walau didesain untuk menemukan kesalahan, uji coba black-box ini digunakan

untuk mendemonstrasikan fungsi aplikasi yang dioperasikan. Tujuan dari

pengujian ini adalah membuktikan bahwa hasil output sesuai seperti yang

diharapkan [11].

Berikut hasil pegujian prototype yang telah dilakukan dengan menggunakan

black-box testing pada game prototype-1 untuk mengetahui apakah gameplay

(objek-objek, stage background), game controller, game menu, sound effect,

background music sudah berjalan dengan semestinya.

Tabel 1 Black-box testing game prototype-1

Pengujian Valid Tidak Valid

Gameplay -

3D background scrolling -

Score counter -

Object sensor -

Enemy/ boss AI -

Pause/ Resume/ Quit Gameplay -

Game menu -

Game controller -

Sound effect -

Background music -

10

Pada testing prototype yang pertama, seluruh elemen yang diujikan berjalan

dengan baik. Namun karena stage background menggunakan model tiga dimensi,

membuat performa gameplay menurun, serta hanya terdapat satu stage dan belum

ada game story. Oleh karena itu, pada prototype selanjutnya, stage background

diubah menjadi dua dimensi (menggunakan gambar), game stage ditambah

menjadi enam stage dan ditambahkan game story dalam bentuk percakapan antar

tokoh yang terlibat.

Tabel 2 Black-box testing game prototype-2

Pengujian Valid Tidak Valid

Gameplay -

2D background scrolling -

Score counter -

Object sensor -

Enemy/ boss AI -

Pause/ Resume/ Quit gameplay -

Game menu -

Game controller -

Sound effect -

Background music -

Game leveling -

Game story -

Seluruh bagian yang diujikan pada pengujian prototype yang kedua telah

berjalan dengan baik dan stage background yang telah diganti menjadi dua

dimensi meningkatkan performa gameplay.

11

Selanjutnya akan membahas hasil implementasi dari pola peluru yang

ditembakan oleh musuh. Pada dasarnya semua pola tembakan musuh yang

dihasilkan berdasarkan pada function yang ada pada Kode Program 1.

Kode Program 1 Fungsi untuk Menembakkan Peluru

Pada potongan Kode Program 1, menentukan berapa banyak cabang dari

peluru yang ditembakkan, berapa besar sudut tembakkan, arah tembakkan, posisi

awal peluru dan kecepatan peluru. Untuk derajat arah tembakkan diterangkan

seperti pada Gambar 8.

function EnemyAI.spreadMultiRowAtk ( nBranch, arc, bulletRow, nBulletSpd, x, y,

z, sBulletType, bIsLockedTarget, nTargetAngle )

local scn = object.getScene ( this.getObject ( ) )

local hHelper = scene.getTaggedObject ( scn, "HelperParticle" )

object.resetRotation ( hHelper, object.kGlobalSpace )

object.setTranslation ( hHelper, x,y,z, object.kGlobalSpace )

if(bIsLockedTarget) then --jika true menembak bersdasarkan posisi player

local nXTarget, nYTarget, nZTarget = object.getTranslation (

scene.getTaggedObject ( scn, "PlaneFighter" ), object.kGlobalSpace )

object.lookAt ( hHelper, nXTarget, nYTarget, nZTarget,

object.kGlobalSpace, 1 )

else

object.rotate ( hHelper, 0,nTargetAngle,0,object.kGlobalSpace )

end

local nOriginX, nOriginY, nOriginZ = object.getTranslation (hHelper,

object.kGlobalSpace)

local nNumBullet = nBranch

local nArc = arc

local nBulletRow = bulletRow

local nArcStart = 1

local s, nShootDir, d = object.getRotation ( hHelper, object.kGlobalSpace )

local nBulletSpeed = nBulletSpd

local hBullet

if(nNumBullet>1) then

nArcStart = nShootDir - (nArc/2)

else

nArcStart = nShootDir

end

for h=1, nBulletRow do

for i=0, nNumBullet-1 do

local hEnvHelper = scene.getTaggedObject ( scn, "HelperManager" )

object.sendEventImmediate ( hEnvHelper, "EnemyLevelingAI",

"onEnemyBulletSetting", sBulletType, nOriginX, 0.1, nOriginZ,

nArcStart, nBulletSpeed+(h*20) )

if(nNumBullet>1) then

nArcStart = nArcStart + (nArc / (nNumBullet-1))

end

end

if(nNumBullet>1) then

nArcStart = nShootDir - (nArc/2)

else

nArcStart = nShootDir

end

end

end

12

Gambar 8 Derajat Arah Peluru

Dari gambar tersebut dapat dilihat, jika ingin menembakkan peluru ke arah

kiri maka derajat arah tembakan adalah nol derajat, jika ingin menembakan peluru

ke arah kanan maka derajat arah tembakan adalah 180°, jika ingin menembakan

peluru ke arah atas maka derajat arah tembakan adalah 270°, dan jika ingin

menembakan peluru ke arah bawah maka derajat arah tembakan adalah 90°.

Posisi/ koordinat objek peluru ditentukan terlebih dahulu (dalam hal ini adalah

menyesuaikan dengan posisi pesawat boss). Langkah selanjutnya adalah

menentukan ke arah mana peluru akan ditembakkan yaitu dengan melakukan

rotasi pada objek peluru. Setelah itu menentukan berapa besar gaya dorong yang

akan diterapkan ke objek peluru (dalam hal ini, besarnya gaya dorong akan

menentukan kecepatan gerak peluru yang ditembakkan). Setelah diberikan gaya

dorong (dari sisi bagian belakang objek peluru), maka peluru akan berjalan lurus

ke depan sesuai dengan arah yang telah ditentukan. Jika menembakkan peluru

lebih dari satu peluru/ cabang (banyaknya peluru sama dengan banyaknya cabang)

maka interval sudut antar cabang akan dikalkulasi berdasarkan parameter/ variabel

“besar derajat tembak” (interval sudut cabang = besar derajat tembak /

(banyaknya cabang - 1)). Misalkan ingin menembakkan peluru sebanyak tiga

cabang ke arah 90° (ke arah bawah) dengan besar sudut tembakan 90°, maka akan

didapat interval sudut antar cabang sebesar 45° sehingga dihasilkan tembakkan

peluru seperti yang terlihat pada Gambar 9.

13

Gambar 9 Contoh Hasil Penerapan Kode Program 1

Inilah prinsip dasar dari penerapan pola tembakan musuh. Pada bagian

selanjutnya akan dibahas mengenai pengembangan/ penerapan lebih lanjut dari

prinsip dasar yang telah dibahas.

Kode Program 2 Salah Satu Pola Tembakkan Boss Stage Satu

Pada potongan Kode Program 2, pertama-tama arah target ditentukan

terlebih dahulu, yaitu mengunci posisi pesawat pemain terlebih dahulu. Setelah itu

menembakkan tiga cabang, satu baris, dengan besar sudut tembakan 60° sebanyak

sembilan kali. Diselingi pula dengan tembakan satu cabang, dengan arah derajat

tembakan secara acak dari kisaran 90° sampai 100° untuk titik pinggir sebelah kiri

dan arah derajat tembakan secara acak dari kisaran 80° sampai 90° untuk titik

elseif(this.nAtkType ( )==2) then

if(nState==1) then

this.sendEvent ( "onAttack", nCount, 2, this.getArcTarget ( ) )

elseif(nState==2) then

if(nCount<120) then

if(math.mod ( nCount, 10 )~=0) then

local x, y, z = object.getTranslation ( this.getObject ( ),

object.kGlobalSpace )

this.spreadMultiRowAtk ( 3, 60, 1, -500, x-1, y+0.5, z,

"Enemy_Bullet_OrangeMedSize", false, math.random (

nArcTarget-2, nArcTarget+2 ) )

this.spreadMultiRowAtk ( 1, 0, 1, -800, x-2, y+0.5, z+3.5,

"Enemy_Bullet_OrangeMedSize", false, math.random ( 90,

100 ) )

this.spreadMultiRowAtk ( 1, 0, 1, -800, x-2, y+0.5, z-3.5,

"Enemy_Bullet_OrangeMedSize", false, math.random ( 80,90

) )

this.postEvent ( 0.1, "onAttack", nCount+1, 2, nArcTarget )

else

this.postEvent ( 0.7, "onAttack", nCount+1, 1, nArcTarget )

end

else

this.nAtkType ( 1 ) --1

this.postEvent ( 3, "onAttack", 1, 1, 1 )

end

end

14

pinggir sebelah kanan pesawat boss. Pada tiap hitungan kelipatan sepuluh, akan

ada sedikit jeda sekaligus kembali melakukan penguncian arah target, begitu

seterusnya.

Gambar 10 Salah Satu Pola Tembakkan Boss Stage Satu

Gambar 11 Implementasi Salah Satu Pola Tembakkan Boss Stage Satu

15

Kode Program 3 Salah Satu Pola Tembak Boss Stage Tiga

Pada potongan Kode Program 3, akan menembakkan satu cabang, tiga baris

peluru, muncul dari empat titik pada pesawat boss. Arah derajat tembak pada titik

pertama merupakkan patokan bagi titik tembak yang lain (yang pada awal

sebelum perulangan ditentukan dengan mengacak derajat arah tembakan dari

range 0° hingga 360°). Pada titik kedua memiliki interval 90° dari derajat arah

tembak titik pertama. Pada titik ketiga memiliki interval dua kali 90° dari derajat

arah tembak titik pertama. Pada titik keempat memiliki interval tiga kali 90° dari

derajat arah tembak titik pertama. Derajat arah tembak akan dikurangi 15° disetiap

pengulangannya.

Gambar 12 Pola Ketiga Tembakkan Boss Stage Tiga

elseif(this.nAtkType ( )==3) then

if(nCount<100) then

local x, y, z = object.getTranslation ( this.getObject ( ),

object.kGlobalSpace )

this.spreadMultiRowAtk ( 1, 0, 3, -600, x+1, 0.1, z,

"Enemy_Bullet_OrangeMedSize", false, angle1 )

this.spreadMultiRowAtk ( 1, 0, 3, -600, x, 0.1, z+1,

"Enemy_Bullet_OrangeMedSize", false, angle1-90 )

this.spreadMultiRowAtk ( 1, 0, 3, -600, x, 0.1, z-1,

"Enemy_Bullet_OrangeMedSize", false, angle1-(90*3) )

this.spreadMultiRowAtk ( 1, 0, 3, -600, x-1, 0.1, z,

"Enemy_Bullet_OrangeMedSize", false, angle1-(90*2) )

this.postEvent ( 0.1, "onAttack", nCount+1, angle1-15 )

else

this.nAtkType ( 1 )

this.postEvent ( 3,"onAttack", 1,math.random( 0,360 ))

end

16

Gambar 13 Implementasi Pola Ketiga Tembakkan Boss Stage Tiga

Kode Program 4 Salah Satu Pola Tembakkan Boss Stage Enam

Pada potongan Kode Program 4, akan menembakkan sepuluh cabang, satu

baris peluru, muncul dari titik tengah pesawat boss disetiap perulangannya,

dengan derajat arah tembakan ditentukan secara acak sebelumnya, dengan besar

derajat tembakan 360°. Disetiap perulangannya akan ditambah dengan satu

variabel penentu derajat arah tembakan yang bernilai tiga derajat. Disetiap

elseif(nState==2) then

dynamics.enableDynamics ( this.getObject ( ), true )

local x, y, z = object.getTranslation ( this.getObject ( ),

object.kGlobalSpace )

this.spreadMultiRowAtk ( 10, 360, 1, -500, x, 0.2, z,

"Enemy_Bullet_OrangeMedSize", false, angle1 )

if(nCount<180) then

if(math.mod ( nCount, 20 )~=0) then

this.postEvent ( 0.07, "onAttack", nCount+1, 2,

angle1+angle2, angle2 )

else

if(angle2<0) then

angle2 = 3

else

angle2 = -3

end

this.postEvent ( 0.07, "onAttack", nCount+1, 2,

angle1,angle2 )

end

else

this.postEvent ( 1, "onAttack", 1, 3 )

end

17

hitungan kelipatan 20, variabel ini akan secara bergantian bernilai positif dan

kemudian bernilai negatif pada hitungan kelipatan 20 selanjutnya.

Gambar 14 Salah Satu Pola Tembakkan Boss Stage Enam

Gambar 15 Implementasi Salah Satu Pola Tembakkan Boss Stage Enam

Karena game berjalan pada smartphone yang kemampuannya berada di

bawah kemampuan personal komputer pada umumnya, maka perlu dilakukan

optimisasi resorce game dan optimisasi pemrogrammannya, sehingga engine

game dapat berjalan dengan lancar pada saat dimainkan. Engine game pada

dasarnya mampu menggunakan background stage berformat model tiga dimensi,

18

namun mengingat keterbatasan kemampuan grafis pada smartphone, maka

background yang dipakai adalah background berupa gambar.

Dalam penanganan sensor untuk collision detection juga perlu diperhatikan

untuk semakin meningkatkan performa gameplay. Collision detection dapat

dijelaskan sebagai proses deteksi ketika dua atau lebih objek di dalam suatu

lingkungan virtual saling berkontak/ bersentuhan antara satu dengan yang

lainnya[12]. Dalam Shiva 3D, collision detection dari suatu objek dapat diaktifkan

dengan menambahkan atribut Sensor pada objek yang bersangkutan. Dalam game

yang dikembangkan ini, objek-objek yang telah ditentukan untuk dapat saling

berinteraksi dalam gameplay, dipasang dengan atribut sensor, sehingga ketika

nantinya pasangan objek tertentu (yang telah dipasang dengan atribut sensor)

saling bertabrakan akan memanggil/ mengaktifkan suatu proses tertentu. Sensor

yang ada pada musuh, boss, dan peluru musuh perlu diatur untuk memiliki jenis

sensor yang sama, agar ketika ketiga objek ini saling bertabrakan tidak perlu

dilakukan pemeriksaan. Begitu pula sensor yang ada pada pesawat pemain dan

pelurunya perlu diatur untuk memiliki jenis sensor yang sama. Jadi sensor hanya

akan bekerja jika terjadi tabrakan antara sensor yang jenisnya berbeda. Hal ini

akan membuat jalannya program menjadi efisien, mengingat banyaknya objek

peluru musuh yang saling bersentuhan pada saat pola tembakkan sedang

dilancarkan.

Dalam game ini juga menerapkan sistem pakai ulang, yaitu menyimpan

objek peluru yang sudah tidak terpakai (karena posisinya telah berada di luar area

permainan atau karena telah bertabrakan) sebagai objek yang tidak aktif, untuk

kemudian dipakai kembali pada saat dibutuhkan. Saran yang diberikan dari

pengembang software Shiva 3D pun merekomendasikan untuk menggunakan

metode ini dibandingkan menggunakan sistem “create – destroy.” Shiva 3D

memberikan kemudahan bagi pengembangan game ini. Melalui Lua script yang

diintegrasikan pada software ini, menjadi memudahkan dalam pemrogramannya.

Struktur bahasanya sederhana dan tidak banyak keyword atau perintah yang harus

dihafalkan, ditambah pula dengan adanya dukungan referensi manual script Lua

yang disertakan dalam software Shiva 3D, juga adanya dukungan referensi online

berupa forum dan tutorial.

5. Simpulan

Berdasarkan perancangan, implementasi, pembahasan, dan analisis yang

telah dilakukan maka dapat diambil kesimpulan bahwa perancangan dan

implementasi game shoot em up pada smartphone berbasis sistem operasi Android

dengan menggunakkan script Lua dapat diterapkan dengan menggunakan dua

fitur utama. Fitur yang pertama yaitu menggunakan impuls untuk pergerakkan

objek-objek dalam game. Fitur yang kedua yaitu menggunakan Sensor pada

objek-objek dalam game untuk menentukan interaksi/ event yang akan terjadi

ketika terjadi collision/ tubrukkan. Dua fitur ini merupakan fondasi utama dalam

melakukan implementasi game ini.

19

6. Saran

Untuk pengembangan kedepannya, game ini dapat diperlengkapi dengan

low-poly 3D background, jenis senjata yang lebih bervariasi, pergerakan musuh

yang lebih dinamis/ bervariasi, pola tembakan yang lebih kompleks/ rumit, dan

dapat melakukan replay dari stage yang telah dimainkan oleh user.

7. Daftar Pustaka

[1] StatCounter Global Stats, 2012, Mobile vs. Desktop from Sept 2011 to Sept

2012, http://gs.statcounter.com/#mobile_vs_desktop-ww-monthly-201109-

201209, Diakses tanggal 15 Oktober 2012.

[2] Android Developer, 2012, Android, the world's most popular mobile

platform, http://developer.android.com/about/index.html, Diakses tanggal

15 Oktober 2012.

[3] Touchstone Research, 2011, Tech Savvy Researcher Feature: Mobile

Gaming by the Numbers (Infographic),

http://touchstoneresearch.com/blog/tech-savvy-researcher-feature-mobile-

gaming-by-the-numbers-infographic/, Diakses tanggal 15 Oktober 2012.

[4] eMarketer, 2012, Mobile, Social Boost Online Gaming Populations,

http://www.emarketer.com/Article.aspx?R=1009100&ecid=a6506033675d4

7f881651943c21c5ed4, Diakses tanggal 15 Oktober 2012.

[5] Maharani, Rizky Sari Mei, 2011, Teknik Merancang Aplikasi Game, Mawas

Juni 2011 : 2,

http://jurnal.umk.ac.id/mawas/2011/juni/TEKNIK%20MERANCANG%20A

PLIKASI%20GAME.pdf. Diakses tanggal 6 September 2012.

[6] Lua Team, 2012, What Is Lua?, http://www.lua.org/about.html, Diakses

tanggal 5 September 2012.

[7] Ierusalimschy, Roberto, 2003, Programming in Lua (first edition) – Preface,

http://www.lua.org/pil/p1.html, Diakses tanggal 6 September 2012.

[8] Safaat, Nazruddin, 2011, Pemrograman Aplikasi Mobile Smartphone dan

Tablet PC Berbasis Android, Bandung: Informatika.

[9] Dixon, D., 2009, Nietzsche contra Caillois: Beyond play and games,

Philosophy of Computer Games 2009 : 7,

http://eprints.uwe.ac.uk/12726/1/Dixon%2DPGC2009.pdf. Diakses tanggal

5 September 2012.

[10] Harnaningrum, CN, 2002, Rekayasa Perangkat Lunak Pedekatan Praktisi

(Buku I), Yogyakarta: Andi.

[11] Nandiwardhana, Indrayasa. 2012. Pengembangan Physics Game ‘Fix and

Fit’ Berbasis Android Smartphone Menggunakan Actionscript 3.0 dan

QuickBox2D. Salatiga. FTI-UKSW.

[12] Maurina, E.F., 2006, The game programmer's guide to Torque: under the

hood of the Torque Game Engine, Wellesley, MA: A K Peters Ltd.