dasar teorieprints.umm.ac.id/67860/2/bab ii.pdfpemrograman game (j2me, symbian, brew) sudah didukung...
TRANSCRIPT
8
BAB II
DASAR TEORI
2.1 Sejarah Game
Game merupakan sebuah permainan yang sangat menghibur bagi kita yang bosan atau
jenuh akan kegiatan sehari-hari. Oleh karena itu perkembangan dunia Game sekarang ini sangatlah
cepat baik itu dalam perangkat khusus buat game, komputer (PC), ataupun handphone (HP). ).
Menurut Budi Daryatmo (2007), sejarah game di perangkat bergerak berawal ketika Nintendo
memperkenalkan portable LCD game “Games & Watch” dan Gameboy, yang terkenal sebagai
mobile game console [1].
Pada tahun 1997, Nokia membuat sebuah tipe game baru yang dapat dimainkan dengan
menggunakan ponsel. Game pertama yang sangat populer adalah Snake. Pada tahun 1999, multi-
player game di perangkat bergerak mulai diperkenalkan, yang berupa game berbasis WAP dan
game berbasis SMS. Pada tahun 2001, game di perangkat bergerak lebih berkembang karena
perangkat bergerak telah ditunjang dengan layar yang berwarna dan game berbasis Java yang dapat
didownload mulai diperkenalkan ke pasar.
Pada tahun 2003, Nokia memperkenalkan platform N-Gage dan game online dengan
platform tersebut. Sekarang, perangkat bergerak telah banyak yang mendukung grafis 3D, kualitas
suara dan resolusi tampilan yang baik, dan memori yang memadai. Berbagai platform
pemrograman game (J2ME, Symbian, BREW) sudah didukung dengan pustaka yang semakin
lengkap.
9
2.2 Konsep Game Edukasi
Perkembangan game khususnya di Indonesia saat ini sudah semakin pesat contohnya
beberapa instansi pemerintahan, SMU/SMK sudah membuat content game edukasi, bahkan
beberapa perguruan tinggi sudah mulai membuka jurusan Game Tech.
Perusahaan - perusahaan IT di Indonesia sangat banyak yang mulai mengarah pada
produksi pembuatan game. Dengan semakin menggeliatnya minat masyarakat IT pada game
mendorong saya para pemerhati kemajuan pendidikan untuk membantu menyediakan sebuah
engine yang bisa dipelajari dan digunakan untuk keperluan pembuatan game sehingga lahirlah ide
untuk menciptakan engine EGFE (Engine Game For Education).
EGFE atau Engine Game For Education adalah salah suatu engine yang dibuat untuk
membantu mempermudah para developer/programmer khususnya programmer newbie dalam
proses pembuatan aplikasi game mobile secara umum. Dengan adanya engine ini diharapkan kita
dapat mempersingkat waktu dalam pembuatan interface awal contohnya pembuatan SplashScreen,
Main Menu, dst, sehingga kita lebih fokus pada masalah scenario & game play saja [2].
10
Gambar 2.01 Arsitektur Game Edukasi (Engine Game For Education, pdf)
2.3 Struktur Game Edukasi
Seperti yang kita ketahui bersama bahwa ketika membuat class turunan dari MIDLet maka
yang harus dilakukan adalah mengimport paket javax.microedition.midlet.* begitupun juga
caranya jika kita ingin mengimplementasikan engine Game Edukasi yang sedang dibuat nantinya.
Engine EGFE disimpan dalam package egfe sehingga untuk dapat mengakses fungsi-fungsi dari
engine yang nantinya kita harus mengimport package egfe.
11
Gambar 2.02 Struktur Game Edukasi (Engine Game For Education, pdf)
Seperti dilihat pada gambar diatas struktur dari engine EGFE, dapat kita lihat bahwa class
– class yang digunakan untuk pembuatan Splash Screen, Main Menu, Interface dari setiap class,
fungsi random untuk soal atau quiz nantinya, fasilitas score, fasilitas nyawa dan kerangka
pembangunan aplikasi game mobile secara umum sudah disediakan oleh package egfe. Sehingga
nanti kita tinggal fokus pada pembuatan scenario, ide, dan desain dari Game itu sendiri masing –
masing nantinya [2].
2.4 Mobile Device
Mobile device merupakan istilah yang sangat luas sekali, karena dapat mendukung semua
informasi, alat - alat informasi, Personal Digital Assistant (PDA), Mobile Phone, dan lain
sebagainya. Masing - masing Mobile device mempunyai OS (Operating System) yang dapat
12
memberikan interface dan mengendalikan sinkronisasi piranti. Salah satu OS (Operating System)
yang biasa kita kenal yaitu Symbian, yang banyak digunakan oleh berbagai Handphone sekarang
ini, misalnya saja Nokia, Motorola, SonyEricson. Dan seiring berkembangnya teknologi, maka
berkembang pula OS (Operating System) Handphone misalkan saja Apple, Palm OS, Smartphone,
Linux.
2.5 Java 2 Micro Edition (J2ME)
Java2 Micro Edition atau yang biasa disebut J2ME adalah lingkungan pengembangan yang
didesain untuk meletakkan perangkat lunak Java pada barang elektronik beserta perangkat
pendukungnya. Pada J2ME, jika perangkat lunak berfungsi baik pada sebuah perangkat maka
belum tentu juga berfungsi baik pada perangkat yang lainnya. J2ME membawa Java ke dunia
informasi, komunikasi, dan perangkat komputasi selain perangkat komputer desktop yang
biasanya lebih kecil dibandingkan perangkat komputer dekstop. J2ME biasa digunakan pada
telepon seluler, pager, Personal Digital Assistants (PDA) dan sejenisnya. [3]
J2ME adalah bagian dari J2SE, karena itu tidak semua library yang ada pada J2SE dapat
digunakan pada J2ME. Tetapi J2ME mempunyai beberapa library khusus yang tidak dimiliki
J2SE.
Java adalah bahasa yang dapat dijalankan dimanapun dan di sembarang platform apapun,
di beragam lingkungan: Internet, intranets, consumer electronic products, computer applications
dan handphone. J2ME sendiri pada dasarnya
13
terdiri dari tiga buah bagian, yaitu : konfigurasi, profil, dan paket – paket opsional, seperti
gambar di bawah ini.
Gambar 2.03 Bagian di dalam platform J2ME
2.5.1 Konfigurasi J2ME
Konfigurasi merupakan Java library minimum dan kapabilitas yang
dipunya oleh para pengembang J2ME, yang maksudnya sebuah mobile device
dengan kemampuan Java akan dioptimalkan untuk menjadi sesuai. Configuration
hanyalah mengatur hal-hal tentang kesamaan sehingga dapat dijadikan ukuran
14
kesesuaian antar device.
Konfigurasi merupakan bagian yang berisi JVM (Java Virtual Machine) dan beberapa
library kelas lainnya. Perlu kita perhatikan bahwa JVM disini bukanlah JVM tradisioanal seperti
yang terdapat pada J2SE, melainkan JVM yang sudah didesain secara khusus untuk alat. J2ME
mempunyai dua konfigurasi yaitu `Connected Limited Device Configuration (CLDC) dan
Connected Device Configuration (CDC).
2.5.1.1 CLDC
The Connected Limited Device Configuration (CLDC) menggambarkan dan menunjuk
pada area berikut ini:
● Fitur Bahasa Java dan Virtual Machine(VM)
● Library dasar(java.lang.*,java.util.*)
● Input/Output(java.io.*)
● Kemanan
● Jaringan
● Internationalization
CLDC atau Connected Limited Device Configuration adalah perangkat dasar dari J2ME,
spesifikasi dasar yang berupa library dan API yang diimplementasiakan pada J2ME, seperti yang
digunakan pada telepon seluler, pager dan PDA. Perangkat tersebut dibatasi dengan keterbatasan
memori, sumber daya dan kemampuan memproses.
CLDC tidak menggambarkan instalasi dan daur hidup sebuah aplikasi, antarmuka(UI) dan
penanganan peristiwa(event handling). Adalah merupakan tugas profile yang berada di bawah
15
CLDC untuk menggambarkan area ini. Secara khusus, spesifikasi MIDP menggambarkan daur
hidup aplikasi MIDP (MIDlet), library UI dan event handling (javax.microedition.lcdui.*) [3].
Spesifikasi CLDC pada J2ME adalah spesifikasi minimal pada package, class, dan
sebagian fungsi Java Virtual Machine yang dikurangi agar dapat diimplementasikan dengan
keterbatasan sumber daya pada alat tersebut, JVM yang digunakan adalah KVM (Kilobyte Virtual
Machine). CDC (Connected Device Configuration) merupakan superset dari CLDC, sehingga
semua kelas yang nanti kita definisikan di dalam CLDC akan ada juga dalam CDC.
2.5.1.2 CDC
CDC atau Connected Device Configuration adalah spesifikasi dari
konfigurasi J2ME. CDC merupakan komunitas proses pada Java yang
mempunyai standardisasi. CDC terdiri dari virtual machine dan kumpulan library
dasar untuk dipergunakan pada profile industri. Implementasi CDC pada J2ME
adalah source code yang menyediakan sambungan dengan macam-macam platform [3].
16
Perbedaan antara CLDC dan CDC sebagai berikut :
Tabel 2.01 Perbandingan CLDC dan CDC
CLDC CDC Mengimplementasikan subset dari J2SE Mengimplementasikan seluruh fitur
pada J2SE
JVM yang digunakan dikenal dengan
nama KVM
JVM yang digunakan dikenal dengan
nama CVM
Digunakan pada perangkat handled
dengan ukuran memori terbatas (160-
512 kilobyes)
Digunakan pada perangkat handled
dengan ukuran memori minimal 2
Mbytes
Procesor 16 bit atau 32 bit Procesor 32 bit
2.5.1.3 MIDP
MIDP atau Mobile Information Device profil adalah spesifikasi untuk sebuah profil J2ME.
MIDP memiliki lapisan di atas CLDC, API tambahan untuk daur hidup aplikasi, antarmuka,
jaringan dan penyimpanan resisten.
The Mobile Information Device Profile (MIDP) berada di atas dari CLDC. Kita tidak bisa
menulis aplikasi mobile hanya dengan menggunakan CLDC API. Kita harus tetap memanfaatkan
MIDP yang mendefinisikan UI.
Spesifikasi MIDP, kebanyakan seperti CLDC dan API lainnya sudah digambarkan melalui
Java Community Process (JCP). JCP melibatkan sebuah kelompok ahli berasal dari lebih dari 50
perusahaan, yang terdiri atas pabrik perangkat mobile, pengembang software. MIDP terus
berkembang, dengan versi-versi masa depan yang telah lulus dari proses ketat JCP [3].
17
Spesifikasi MIDP menggambarkan suatu perangkat MID yang memiliki karakteristik-
karateristik ini sebagai batas minimum:
Tampilan:
· Ukuran Layar: 96×54
· Kedalaman tampilan: 1-bit
· Ketajaman pixel: sekitar 1:1
Masukan:
·Satu atau lebih mekanisme user-input: satu keyboard, dua keyboard, atau
touch screen.
Memory:
·256 kilobytes of non-volatile memory untuk implementasi MIDP.
·8 kilobytes of non-volatile memory for application-created persistent data
·128 kilobytes of volatile memory for the Java runtime (e.g., the Java heap)
Jaringan:
·Dua jalur, wireless, bandwidth terbatas
Sound:
· Kemampuan untuk memainkan nada-nada
MIDP menggambarkan model aplikasi, UI API, penyimpanan dan jaringan yang kuat,
permainan dan media API, kebijakan keamanan, penyebaran aplikasi dan ketetapan over-theair
(Konfigurasi J2ME, 2009).
18
Pada saat ini terdapat MIDP 1.0 dan MIDP 2.0. Fitur tambahan pada MIDP 2.0
dibandingkan MIDP 1.0 adalah API untuk multimedia. Pada MIDP 2.0 terdapat dukungan
memainkan tone, tone sequence, dan file WAV walaupun tanpa adanya Mobile Media API
(MMAPI).
2.5.2 Profil
Profil adalah perluasan dari konfigurasi. Artinya selain sekumpulan kelas yang terdapat
pada konfigurasi, terdapat juga kelas-kelas spesifik yang didefinisikan lagi di dalam profil.
Dengankata lain, profil akan membantu secara fungsional yaitu dengan menyediakan kelas-kelas
yang tidak terdapat di level konfigurasi.
Berikut beberapa profil yang tersedia untuk kebutuhan spesifik lainnya :
- PDAP (Personal Digital Asistent Profile), yaitu untuk PDA yang memperluas fungsi-
fungsi pada konfigurasi CLDC dan digunakan khusus menambahkan kemampuan-
kemampuan lebih apabila dibandingkan dengan pengguna profil MIDP.
- Foundation Profile, yaitu profil yang digunakan untuk konfigurasi CDC. Disini
ditambahkan beberapa kelas dari J2SE (Java2 Standart Edition) ke dalam
konfigurasi CDC dan berperan juga sebagai pondasi untuk membentuk profil baru
lainnya.
- Personal Profile, yaitu profil yang mendefinisikan ulang Personal Java sebagai profil
yang dapat digunakan sebagai profil dalam J2ME. Profil ini merupakan hasil
perluasan dari Foundation Profile.
19
- RMI Profile, yaitu profil yang menambahkan dukungan RMI (Remote Method
Invocation) ke dalam konfigurasi CDC [3].
2.5.3 MIDlet
MIDlet adalah aplikasi yang ditulis untuk MIDP. Aplikasi MIDlet adalah bagian dari class
javax.microedition.midlet.MIDlet yang didefinisikan pada MIDP. MIDlet berupa sebuah class
abstrak yang merupakan subclass dari bentuk dasar aplikasi sehingga antarmuka antara aplikasi
J2ME dan aplikasi manajemen pada perangkat bisa terbentuk.
• Daur Hidup MIDlet
MIDlet terdiri dari beberapa method yang harus ada, yaitu contructor(), protected
void startApp() throws MIDletStateChangeException, protected void pauseApp(),
protected void destroyApp (Boolean unconditional) throws
MIDletStateChangeException.
Ketika MIDlet dijalankan maka akan diinisialisasi dengan kondisi pause dan dijalankan
pauseApp(), kondisi berikutnya adalah fungsi MIDlet dijalankan, yaitu pada startApp(). Metode
yang ada tersebut diimplementasikan sebagai protected, hal ini dimaksudkan agar MIDlet lain
tidak dapat memanggil method tersebut. Pada saat pemakai keluar dari MIDlet, maka method
destroyApp() akan dijalankan sebelum MIDlet benar-benar tidak berjalan lagi. Method
notifyDestroyed() akan dipanggil sebelum MIDlet benar-benar tidak berjalan lagi, DestroyApp()
akan memanggil notifyDestroyed(), dan notifyDestroyed() akan memberi tahu platform untuk
menterminasi MIDlet dan membersihkan semua sember daya yang mengacu pada MIDlet.
(Wartawrga, 2010)
20
2.5.4 J2ME Wireless Toolkit
J2ME Wireless Toolkit adalah sekumpulan tool yang digunakan untuk mengembangkan
aplikasi – aplikasi dalam Handphone dan wireless device lainnya [3].
Sun Java Wireless Toolkit for CLDC yang juga disebut dengan J2ME Wireless Toolkit
merupakan kumpulan dari tool yang memungkinkan pembuatan aplikasi untuk ponsel dan piranti
wireless lainnya. Walaupun berbasis Mobile Information Device Profile (MIDP) 2.0, Sun Java
Wireless Toolkit for CLDC juga mendukung banyak paket optional. Sun Java Wireless Toolkit for
CLDC mendukung pembuatan aplikasi MIDP dengan fitur utama (Sun microsystem, 2006).
2.5.5 Emulator J2ME
Sebagian pengguna perangkat mobile seperti handphone menginginkan aplikasi - aplikasi
yang biasa didapati pada sebuah komputer (PC) tersedia versi mobilenya. Saat ini berbagai aplikasi
sudah siap pakai, baik yang berbasis sistem operasi yang digunakan, berbasis web, maupun
penggunaan java yang umum didukung berbagai perangkat mobile.
Penulis berpikir bagaimana jika aplikasi - aplikasi yang kita buat nantinya untuk perangkat
mobile dapat dijalankan pada PC. Khusus untuk aplikasi berbasis java yang banyak tersedia untuk
perangkat mobile, J2ME Wireless Toolkit menyediakan empat buah emulator. Emulator itu sendiri
nantinya akan digunakan untuk menyimulasikan device di dalam komputer sehingga aplikasi atau
game ini dapat kita jalankan dan ujicoba tanpa harus di instal ke dalam device bersangkutan
terlebih dahulu [3].
21
Beberapa emulator yang disediakan J2ME Wireless Toolkit adalah sebagai berikut :
- DefaultColorPhone, dengan ukuran layar 240x320 dan ukuran canvas 240x289.
Gambar 2.04 Emulator DefaultColorPhone
- DefaultGrayPhone, dengan ukuran layar 120x208 dan ukuran canvas 180x177.
- MediaControlSkin, dengan ukuran layar 120x208 dan ukuran canvas 180x177.
2.5.6 Direktori Projek J2ME
Awal mula membuat suatu projek baru didalam J2ME maka akan secara otomatis J2ME
Wireless Toolkit akan menyimpan ke dalam direktori dan ditempatkan dalam direktori apps. Jika
instalasi software J2ME di drive C, maka direktori yang akan terbentuk adalah
C:\WTK22\apps\”nama projek”. Hal ini apabila dalam keadaan default, apabila tanpa merubah
pesan yang ditampilkan pada panel toolkit.
22
Adapun struktur direktori yang di maksud gambarannya sebagai berikut :
C:\WTK22\apps\”nama projek”.
- “nama projek”
bin
lib
res
src
Berikut adalah keterangan dari direktori yang terbentuk pada setiap objek default :
- bin, berisi file mainfest serta file hasil kompilasi (file .jar) dan file Java Application
Description (file .jad).
- lib, digunakan untuk menyimpan file-file .class maupun .jar tambahan yang dibutuhkan
oleh projek (apabila ada).
- res, digunakan untuk menyimpan file-file tambahan lain yang diperlukan oleh projek,
misal file gambar maupun teks.
- src, digunakan untuk menyimpan file kode program dan perlu kita perhatikan bahwa jika
menggunakan paket tambahan maka kita harus membuat direktori sesuai susunan paket tersebut.
Dan setelah melakukan proses Build terhadap projek, maka J2ME Wireless Toolkit akan
menambahkan tiga buah direktori lagi untuk keperluan internal yakni classes, tmpclasses, dan
tmplib. Sehingga struktur direktori akan berubah menjadi:
23
C:\WTK22\apps\”nama projek”.
- “nama projek”
bin
classes
lib
res
src
tmpclasses
tmplib
2.5.7 Siklus Aplikasi J2ME
Setiap MIDlet dapat berada dalam salah satu keadaan (state) berikut ini: Paused, Active,
maupun Destroyed. Berikut ini adalah gambar yang akan mengilustrasikan ketiga buah keadaan
tersebut pada saat kapan MIDlet akan berada dalam keadaan tertentu.
Gambar 2.05 Siklus hidup MIDlet
24
2.6 Alur Mobile Game
Berikut ini adalah cara pembuatan game J2ME 2D, J2ME adalah lingkungan yang menarik
untuk game ini nantinya. Dengan pengetahuan dasar Java, sudah diinstal NetBeans dan J2ME
Wireless Toolkit, kita sudah dapat membuat game 2D sederhana.
2.6.1 Main MIDlet
Sebagai Midlet, MainMidlet harus memperpanjang Midlet kelas abstrak yang dapat
ditemukan dalam paket javax.microedition.midlet. Midlet membutuhkan menimpa tiga metode,
yaitu:
startApp() Untuk pemanggilan memulai permainan
pauseApp() Called to temporarily stop the application, i.e., receiving a call. Application
should stop the animation and release resources that are not needed. Application can be resumed
by calling resumeMIDlet()
destroyApp() (boolean tanpa syarat) yang disebut saat keluar dari aplikasi. Untuk
mengakhiri, MIDlet dapat menghubungi notifyDestroyed ().
(Metode ini secara otomatis dibuat dengan menciptakan sebuah Midlet Visual di
NetBeans.) Namun, hanya membutuhkan untuk melaksanakan metode startApp () dengan
menciptakan sebuah instance dari canvas Game dan menambahkan CommandListener untuk
keluar dari Midlet. Sampai langkah ini, kita mungkin hanya ingin aplikasi dijalankan. Tampilan
saat ini dapat diatur ke GameCanvas di akhir atau di dalam GameCanvas oleh setCurrent metode.
Metode ini menerima setiap objek ditampilkan sebagai argumen.
25
Sebagai unsur dari mesin rendah UI, bila dikombinasikan dengan Grafis, GameCanvas
memberikan kita alat yang fleksibel untuk mengatur layar permainan kita sendiri. Dengan
Graphics, pada dasarnya anda bisa menarik hal-hal yang biasanya Anda lakukan di Java 2D,
termasuk menggambar bentuk, string atau gambar. GameCanvas adalah perluasan ke kanvas asli
dengan kontrol lebih besar atas lukisan itu, dan tingkat di mana tombol yang diserahkan ke
permainan.
Menggunakan GameCanvas, kita dapat melihat kemampuannya termasuk penyangga off-
layar. Bila kita menggambar sesuatu, kita mungkin adalah gambar dalam layar-off, dan dengan
menghubungi metode flushGraphics (), buffer dengan cepat ditulis ke layar.
GameCanvas juga menyederhanakan proses mendapatkan input dengan memungkinkan
kita untuk permintaan status kunci menggunakan getKeyState () method. Pengolahan status kunci,
bagaimanapun, adalah diserahkan kepada GameManager untuk manajemen lebih mudah.
Asal usul permainan sistem koordinat terletak di sudut kiri atas layar seperti pada gambar.
Gambar 2.06 Sistem koordinat pada canvas
26
2.6.2 GameLoops
Waktu permainan dikendalikan oleh integer bernama tick. tick timer menyederhanakan
masalah dalam permainan, seperti tingkat penembakan, atau berapa lama sesuatu akan flash,
berapa lama sprite akan melangkah ke frame berikutnya. Jika waktu dilakukan dalam GameCanvas
dengan menerapkan Runnable, centang sarana mDelay + waktu untuk menyelesaikan satu siklus
permainan (milidetik). Jika kita membuat Thread yang mengurus tick, kita mungkin akan memiliki
centang mDelay. Kita akan membutuhkan hanya 24 -30 fps, sehingga akan membatasi mDelay
yang sesuai untuk memiliki efek animasi yang diinginkan dengan konsumsi daya yang lebih kecil.
Pada setiap siklus permainan, kita sebut kemajuan metode dari GameManager, yang membentang
LayerManager untuk memeriksa input pengguna, tabrakan dan cat grafis.
2.6.3 Sprite
Sprite bertindak sebagai aktor dari permainan. Hal ini dapat kita buat dengan karakter
sakera, itik, dan senjata dalam permainan Sakera Hunter ini. Sebagai elemen visual dasar, dapat
diberikan untuk menampilkan aksi yang terus menerus dengan beberapa bingkai foto yang
tersimpan dalam suatu. File gambar harus pake semua frame dari Sprite agar dapat ditampilkan.
Semua frame harus memiliki standar yang sama dan lebar dan tinggi. Salah satu faktor yang
membuat keberhasilan game adalah grafis yang unggul. Sebagian besar objek pada sebuah game
dikategorikan sebagai grafis khusus yang disebut sprites. Sebuah sprite dapat berupa bullet,
monster, karakter utama, musuh, kekuatan spesial, kunci, pintu dan lain sebagainya.
27
Pada umumnya Sprite adalah grafis animasi. Grafis animasi dibuat dari sprite yang sama
namun berbeda penampakannya. Kumpulan sprite biasanya mengacu sebagai sebuah kumpulan
frame. Frame ini dapat dibuat secara terurut ataupun tidak terurut. Umumnya sprite ditampilkan
secara terurut untuk memudahkan pengkodean.
Gambar 2.07 Contoh Sprite frame tunggu dan 4 frame dasar lainnya.
Ada 3 konstruktor yang disediakan oleh kelas sprite :
1. Sprite (Image image), yaitu membuat frame sprite tunggal, tidak dianimasikan.
2. Sprite (Sprite sprite), yaitu membuat sprite baru dari sprite lainnya
3. Sprite (Image image, int frameWidth, int frameHeight), yaitu membuat animasi sprite
dengan lebih dari 2 frame, frameWidth adalah lebar dari sebuah sprite dan frameHeight
adalah tinggi dari sebuah sprite.
2.6.4 Layer Manager
Pada hakekatnya semua game memiliki background yang dianimasikan atau tetap, untuk
memberikan efek visual. Disinilah awal mulanya LayerManager itu kita buat nantinya, yaitu
mengelola layer grafis. Ada satu method yang menyediakan fitur yang tepat, yaitu method
setViewWindow(int x, int y, int width, int height). Fitur ini mengijinkan Anda untuk mengeset
ukuran jendela pada Handphone yang dapat dilihat oleh user dan bagian dari layer yang
ditampilkan.
28
2.6.5 Game Manager
Sebagai subclass dari LayerManager, GameManager yang mampu mengelola serangkaian
Layers, secara otomatis setiap Layer renders dalam urutan yang tepat. Metode tambahkan
dipanggil untuk menambahkan suatu Layer khusus untuk LayerManager tersebut.
2.6.6 Thread
Thread adalah unit fundamental dari eksekusi program. Setiap aplikasi minimal memiliki
sebuah thread untuk menjalankan kode. Aplikasi yang memiliki dua thread atau lebih, biasa
disebut dengan multithreaded application. Fungsi seperti ini sering kita butuhkan dalam membuat
program aplikasi/game nantinya. Misalnya, sebuah thread yang bertugas menjalankan operasi
penghitungan nilai/skor game, kemudian thread yang lainnnya menjalankan operasi pendeteksi
tabrakan antara obyek-obyek pada game. Kedua thread tersebut berjalan bersamaan dalam
melakukan tugasnya masing-masing.
Setiap thread memiliki sebuah konteks yang berhubungan dengannya. Konteks tersebut
memuat informasi tentang thread, seperti alamat dari instruksi yang sedang dieksekusi dan storage
untuk variabel-variabel lokal. Konteks tersebut akan terupdate begitu thread dieksekusi. Konteks
juga menyimpan state dari thread.
29
Thread bisa dalam state sebagai berikut:
• Running, saat dimana thread sedang menjalankan kode.
• Ready, saat dimana thread siap untuk mengeksekusi kode.
• Suspended, saat dimana thread sedang menunggu external event. Contohnya:
menunggu data yang datang dari device lain. Begitu data datang dan event terjadi
(dilakukan), maka thread kembali ke state ready.
• Terminated, saat dimana thread selesai mengeksekusi kode.
Thread yang dalam keadaan (state) running, ready atau suspended, adalah thread yang
hidup (live thread). Sedangkan thread yang berstatus terminated adalah thread mati (dead thread).
30
2.6.7 GameCanvas
Kelas GameCanvas menyediakan fungsi-fungsi penting dalam menangani antar muka
game. Merupakan turunan dari kelas Canvas (commands, input events, etc.), dengan penambahan
fitur antara lain kemampuan game yang spesifik seperti: off-screen graphic buffer dan kemampuan
untuk mengetahui status key-key input dari key-key pada HP. Kelas GameCanvas pada MIDP 2.0
telah mengusung fitur - fitur penting yang mengatasi masalah yang ada pada MIDP 1.0. Yaitu
sekarang kita cukup menggunakan sebuah (single) buffer untuk setiap obyek GameCanvas yang
dibuat. Ini sangat penting karena tidak hanya meminimalkan penggunaan heap memory yang
digunakan oleh game. Tetapi juga agar game bisa dikontrol dengan hanya menggunakan sebuah
(single) loop.
2.6.8 Mobile Media API
Mobile Media API (MMAPI) memberikan dukungan lebih dari MIDlet dalam penggunaan
media seperti audio dan video. MMAPI adalah paket yang mengizinkan kita untuk dapat
memainkan file multimedia di dalam perangkat ponsel. Paket tersebut juga dapat digunakan untuk
melakukan kontrol terhadap kamera dalam pengambilan gambar. Perangkat yang dapat digunakan
untuk melakukan pekerjaan tersebut tentunya harus mendukung infrastruktur atau prasarana yang
dibutuhkan serta dukungan terhadap tipe file media yang akan dimainkan. Teknologi J2ME juga
dapat memainkan file musik seperti file wave (.wav) dan midi (.mid), memainkan file musik pada
J2ME juga menggunakan obyek Player pada MMAPI.
MMAPI memfasilitasi sebuah kelas factory genetik yang menginstansiasi objek – objek
media player dari lokasi tertentu (URI, objek – objek InputStream, maupun objek DataSource).
Sedangkan implementasi dari perangkat ponsel yang mendukung MMAPI menyediakan kelas
31
player konkrit untuk media yang di dukung. Pada intinya untuk membuat aplikasi multimedia di
dalam ponsel, terlebih dahulu kita harus membuat instance dari objek Player berdasarkan sumber
data (DataSource) yang kita tentukan.
Manager adalah sebuah kelas yang menyediakan metode untuk menggenerasi Player dan
mengakses aturan yang mendukungnya. Manager juga menyediakan metode playTone() untuk
memainkan tone. Metode createPlayer() menggenerasi Player yang terasosiasi dengan
DataSource yang menyediakan data. Player itu sendiri adalah sebuah antarmuka (interface). Jika
player telah di generasi maka aplikasi / game juga dapat membuat sebuah obyek kontrol.
2.6.9 RMS (Record Management System)
RMS (Record Management System) yang telah MIDP sediakan sebuah mekanisme
penyimpanan data secara persisten (tetap) di memory device yang bersangkutan. Record yang telah
ditempatkan di dalam ruang penyimpanan selanjutnya dapat diambil kembali untuk digunakan
sesuai dengan kebutuhan. Ruang penyimpanan tetap adalah sebuah tempat non-volatil untuk
menyimpan data-data dalam sebuah aplikasi, yang harus kita gunakan secara efisien dikarenakan
keterbatasan memory yang terdapat dalam sebuah mobile device [3].
2.7 NetBeans IDE
Pembuatan program java dapat dilakukan dengan notepad, akan tetapi untuk meningkatkan
produktifitas dan efektifitas dalam proses pengembangan maka penggunaan IDE (Integrated
Development Environment) atau Text editor yang tepat akan sangat membantu. IDE yang ada
bersifat komersial/propietari, ada juga yang open source. Open source Text Editor Java yang
32
paling populer saat ini adalah JEdit (http://www.jedit.org) sedangkan IDE java yang murni dibuat
dengan library Java / J2SDK dari Sun adalah NetBeans yang pada penulisan ini mencapai versi
6.5.
Kemampuan NetBeans bisa ditingkatkan dan ditambahkan melalui modul-modul plugin
seperti modul untuk mobile application yang memungkinkan kita membuat aplikasi J2ME
(NetBeans Mobility Pack), modul Refactoring sehingga kita dapat mendapatkan fasilitas
refactoring di NetBeans, bahkan kita juga mendapatkan UML Designer [3].
2.7.1 Keperluan Awal
Sebelum kita memulai pembuatan sebuah aplikasi atau game untuk platform handheld
device / handphone terlebih dahulu menginstal NetBeans (dalam kasus ini, penulis menggunakan
NetBeans 6.5) serta harus mengetahui aplikasi – aplikasi yang nantinya akan kita butuhkan untuk
keperluan dalam hal ini, antara lain sebagai berikut :
33
2.7.1.1 Java Development Kit (JDK)
Untuk membangun MIDlet, karena disini disediakan paltform yang dibutuhkan
untuk dapat menjalankan J2ME Wireless Toolkit, tanpa hal ini kita tidak akan bisa
menjalankan di dalam komputer nantinya.
2.7.1.2 Wireless Toolkit (WTK)
Sekumpulan alat bantu yang digunakan untuk membangun dan mencoba jalannya aplikasi – aplikasi MIDP, agar lebih mudah dimengerti anggap saja J2ME Wireless Toolkit sebagai miniatur IDE (Integrated Development Environment. [3].