Perancangan dan Implementasi Aplikasi Mobile Game Shoot …
Post on 19-Nov-2021
3 Views
Preview:
Transcript
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.
top related