bab ii dasar teori - · pdf filediharuskan membuat keputusan-keputusan dengan tujuan untuk...
TRANSCRIPT
II-1
BAB II
DASAR TEORI
2.1 Game
Video game merupakan salah satu media hiburan yang paling populer untuk semua
kalangan umur. Sejak pertama kali ditemukan, teknologi game telah mengalami
kemajuan yang sangat pesat. Ini ditandai dengan jenis, produk, alat, dan jenis
interaksinya dengan pengguna yang semakin beraneka ragam bentuknya.
2.1.1 Pengertian Game
Game adalah sebuah bentuk seni di mana penggunanya, disebut sebagai pemain,
diharuskan membuat keputusan-keputusan dengan tujuan untuk mengelola sumber daya
yang diperoleh dari kesempatan bermain (token) miliknya, untuk mencapai suatu tujuan
tertentu [CRA03]. Video game adalah bentuk game yang interaksi utamanya melibatkan
media video (dan biasanya melibatkan audio).
Berdasarkan representasi visualnya, game dapat dibedakan menjadi 2 jenis, yaitu game
2 dimensi (2D) dan 3 dimensi (3D). Game 2D adalah game, yang secara matematis,
hanya melibatkan 2 elemen kordinat kartesius, yaitu x dan y, sehingga konsep kamera
pada game 2D hanya menentukan “gambar” mana pada game yang dapat dilihat oleh
pemain. Sedangkan game 3D adalah game yang selain melibatkan elemen x dan y, juga
melibatkan elemen z pada perhitungannya, sehingga konsep kamera pada game 3D
benar-benar menyerupai konsep kamera pada kehidupan nyata, yaitu selain digeser
(seperti pada game 2D), juga dapat diputar dengan poros tertentu. Untuk lebih
memperjelas perbedaan tampilan game 2D dan 3D, contoh tampilan game 2D dan 3D
dapat dilihat pada Gambar II-1 dan Gambar II-2.
II-2
Gambar II-1 Contoh Game 2D
Gambar II-2 Contoh Game 3D
2.1.2 Sejarah Singkat Game
Sejak pertama kali ditemukan sampai saat ini, game telah melewati beberapa fase
evolusi penting yang berperan besar terhadap perkembangan game yang sudah sangat
pesat sekarang ini [ADA03].
II-3
Pada jaman komputer digital modern pertama dikembangkan, yaitu pada masa Perang
Dunia II dan pada akhirnya baru tersedia secara komersil pada tahun 1950-an, komputer
berjalan dalam “batch mode”. Istilah ini untuk menggambarkan bagaimana komputer
digital tersebut bekerja, pengguna menulis programnya pada punch card lalu komputer
menjalankannya dan menampilkan hasilnya pada suatu alat pencetak. Pada masa ini,
untuk bermain game pada komputer digital ini, setiap pemain mengetikkan sesuatu pada
suatu kartu data lalu memasukkannya pada komputer dan para pemain melihat siapa
pemenangnya pada alat pencetak tersebut. Pada masa setelahnya, tahun 1960-an, saat
sistem operasi yang mendukung timesharing telah diciptakan, pengguna komputer
sudah dapat menggunakan komputer secara interaktif pada terminal. Namun karena
komputer masih merupakan barang mahal bernilai jutaan dollar, saat itu belum ada
pasar game, sehingga para game programmer membuat game hanya demi kepuasan
pribadi saja. Adapun game pada jaman tersebut ditulis menggunakan bahasa
pemrograman FORTRAN dan BASIC.
Pada tahun 1971, saat Intel telah menciptakan microprocessor, muncullah game Pong,
sebuah game arcade yang dioperasikan dengan memasukkan koin ke dalam mesinnya.
Ada pula versi console Pong, yang bernama Magnavox Odyssey. Sejak saat itu, game
mencetak sukses pertamanya dengan menemukan pasarnya sendiri. Mesin game console
yang paling populer saat itu, Atari’s 2600 dan Mattel’s Intellivision, memungkinkan
siapapun bisa membuat ROM cartridge yang berisi game tertentu pada mesin ini. Game
pada jaman itu harus dapat dimainkan dengan menggunakan memori 4K, sehingga
pemrograman yang dilakukan tidaklah semudah pemrograman berorientasi objek seperti
yang kita kenal sekarang ini. Biasanya untuk sebuah game, sumber daya manusia yang
dibutuhkan adalah hanya programmer saja. Namun akibat proses produksi yang
semakin cepat dan semakin tidak menghiraukan kualitas, game menjadi banyak
mengandung bug, terlalu mirip satu sama lainnya, dan tidak begitu menarik lagi. Pada
tahun 1983, pasar sudah mulai kehilangan minatnya terhadap game dan perusahaan
game mulai bangkrut. Setelah masa awal perkembangan game ini, dunia game telah
melalui beberapa fase, yaitu fase game PC (Personal Computer), fase terlahirnya
kembali game console, dan fase game online. Sekarang ketiga fase game tersebut sudah
semakin banyak variannya dan masing-masing memiliki kelompok penggemarnya
tersendiri.
II-4
2.1.3 Jenis Game
Berikut ini akan dijabarkan beberapa jenis game berdasarkan cara pembuatannya, cara
pemasarannya, mesin yang menjalankannya, harganya, dan siapa pembelinya [ADA03].
1. Game PC
Game PC memiliki beberapa kelebihan dibandingkan dengan game jenis
lainnya, yaitu dapat memiliki banyak antarmuka baik untuk input maupun
output, dapat melibatkan penggunaan modem, output visual kualitas tinggi
karena layar komputer biasanya memiliki resolusi yang jauh lebih tinggi
dibandingkan layar televisi biasa, dan kualitas game yang lebih baik karena
spesifikasi prosesor dan RAM komputer yang umumnya lebih tinggi
dibandingkan dengan mesin game console. Sedangkan kekurangannya adalah
spesifikasi komputer yang sangat bervariasi antara satu komputer dan komputer
lainnya, baik yang menyangkut perangkat keras maupun perangkat lunak,
menyebabkan suatu game komputer dapat berjalan dengan sangat baik pada satu
komputer tetapi tidak bisa berjalan sama sekali pada komputer yang lain. Ini
biasanya disebabkan adanya inkompatibilitas perangkat keras atau perangkat
lunak antara komputer yang satu dengan yang lainnya.
2. Game Console
Game console adalah game yang dijalankan pada suatu mesin game spesifik
yang biasanya tersedia di rumah pribadi, seperti Microsoft Xbox 360, Nintendo
Wii, dan sebagainya. Output audio dan visual mesin game console biasanya
menggunakan televisi, sehingga untuk memainkan game console, mesin tersebut
harus disambungkan dengan televisi terlebih dahulu. Pengembangan game
console biasanya tetap dilakukan pada komputer biasa, karena mesin game
console bukanlah komputer multifungsi yang bisa digunakan untuk menulis
kode program. Namun komputer yang digunakan untuk menulis kode program
tersebut harus dilengkapi dengan kemampuan untuk berkomunikasi dengan
mesin game console, sehingga ketika game telah ditulis di komputer, mesin
mengunduh file game tersebut dan kemudian menjalankannya.
II-5
3. Game Arcade
Game arcade adalah game yang dijalankan pada mesin dengan input dan output
audio visual yang telah terintegrasi dan tersedia di tempat-tempat umum, seperti
mal, bandara, dan sebagainya.
4. Game Online
Game online adalah game yang hanya dapat dimainkan secara online melalui
LAN atau internet. Pemain game online dapat berkomunikasi, bertarung, atau
bekerja sama dengan pemain lainnya di tempat lain. Fitur inilah yang
menyebabkan game online sangat digemari, karena banyak orang lebih senang
bermain bersama pemain “nyata” daripada dengan pemain “maya” yang
dikendalikan oleh intelegensia buatan.
5. Game Handheld Devices
Game handheld devices adalah game yang dijalankan pada mesin komputer mini
yang dapat dibawa ke manapun dengan mudah dan praktis, seperti Game Boy,
PDA, Nintendo DS, dan sebagainya.
2.1.4 Genre Game
Berikut ini akan dijabarkan beberapa genre game berdasarkan cara atau aturan
permainannya [ADA03].
1. Game Action
Genre game ini biasanya membutuhkan kemampuan refleks yang baik dan
koordinasi tangan dan mata yang baik pula. Genre game ini dapat dibedakan
menjadi beberapa sub-kategori:
e. First-person shooters (FPSs): game tembak-menembak yang menggunakan
alat output visual sebagai “kamera” sudut pandang si pemain, contoh:
Quake, Half-Life, dan Unreal Tournament
f. Third-person games: game action di mana pemain dapat melihat avatar
pemain di layar, biasanya dilihat dari belakang, contoh: Tomb Raider, Mario
Sunshine, dan Banjo-Kazooie
g. Fighting games: pada game ini pemain mengendalikan karakter game yang
sedang berkelahi
h. Dance simulations: game ini mensimulasikan tarian dan menuntut pemain
untuk mempunyai kemampuan mengikuti ritme yang baik
II-6
i. Action-adventures: game ini membutuhkan banyak aksi dan memberikan
tantangan bagi pemain untuk menyelesaikan petualangan yang ditawarkan
j. Platform games: game ini merupakan game petualangan klasik di mana
pemain mengendalikan karakter game dilihat dari samping, contoh: Super
Mario, Sonic the Hedgehog, dan sebagainya
2. Game Strategi dan Perang
Pada genre ini, pemain mengendalikan karakter game yang sedang berperang
dengan misi tertentu. Pada awalnya, genre ini kurang populer karena pemain
harus menunggu gilirannya untuk dapat melakukan suatu aksi (turn-based).
Namun dengan ditemukannya tipe real-time strategy (RTS), seperti Warcraft
dan Command & Conquer, genre ini menjadi sangat digemari oleh banyak
orang. Karena kompleksitas antarmukanya, game dengan genre ini biasanya
dimainkan di komputer.
3. Game Olahraga
Game ini mensimulasikan olahraga di kehidupan nyata. Game ini mencetak
sukses yang luar biasa pada kategori game console. Beban kerja perancang game
olahraga biasanya relatif kecil, karena aturan permainannya sudah sedemikian
rupa sehingga tidak perlu membutuhkan usaha yang besar untuk membuatnya
menarik. Namun, beban kerja programmer dan artist game olahraga relatif lebih
berat dibandingkan dengan genre game lainnya, karena game ini harus semirip
mungkin dengan yang terjadi di kehidupan nyata agar dapat menjadi game yang
disukai.
4. Game Simulasi Kendaraan
Game ini mensimulasikan kendaraan, baik darat, air, maupun udara. Game ini
membutuhkan fitur efek fisika yang baik, karena karakter yang dikendalikan
berupa kendaraan, yaitu benda mekanik, yang memiliki bermacam-macam sifat
fisika. Oleh karena itu, game harus dapat mensimulasikannya dengan baik, agar
game menjadi menarik.
II-7
5. Game Simulasi Konstruksi dan Manajemen
Pada genre game ini, pemain diminta untuk membangun sebuah dunia dan
membuatnya sedemikian rupa sehingga dunia tersebut dapat berjalan dengan
baik. Contoh game yang termasuk ke dalam genre ini adalah Sim City, The Sims,
School Tycoon, dan sebagainya.
6. Game Petualangan
Pada game dengan genre ini, pemain diminta untuk menyelesaikan misi utama
dan misi sampingan untuk berkelana di dunia game tersebut.
7. Game RPG Fantasi
RPG (Role-playing Games) Fantasi adalah game yang mengharuskan pemainnya
mengendalikan karakter game untuk mengeksplorasi dunia game tersebut sambil
mengumpulkan pengalaman sehingga karakter game tersebut bisa menjadi lebih
kuat. Game genre ini biasanya menekankan pada alur cerita yang menarik
sehingga membuat pemain tidak bosan untuk memainkannya terus-menerus.
Contoh game dengan genre RPG fantasi adalah Final Fantasy, Chrono Cross,
dan sebagainya.
8. Game RPG Online
Genre ini mirip dengan RPG fantasi, namun dimainkan secara online. Karena
online, game dengan genre ini pasti dimainkan oleh banyak pemain dari
berbagai tempat. Genre ini biasa disebut juga Massively-multiplayer online
role-playing games (MMORPG).
9. Game Puzzle
Game dengan genre ini menyediakan suatu teka-teki yang harus dipecahkan
dengan berbagai keterbatasan pemain, seperti keterbatasan waktu. Teka-teki ini
bisa berupa jigsaw puzzle yang harus disusun dengan benar, menyusun balok
agar tidak melebihi garis tertentu (Tetris), dan sebagainya.
2.2 Teori Grafika 2D
Untuk mengembangkan game engine 2D, diperlukan pengetahuan mengenai grafika 2D.
Oleh karena itu, pada subbab ini akan dijabarkan secara singkat beberapa hal berkaitan
dengan teori dasar grafika 2D.
II-8
2.2.1 Representasi Gambar
Ada dua jenis format grafik sebagai representasi gambar, yaitu raster dan vector.
Format gambar raster adalah format yang menyimpan informasi nilai warna pada setiap
kordinat piksel pada gambar, contoh: GIF (Graphics Interchange Format) dan PNG
(Portable Network Graphics). Sedangkan format gambar vector adalah format gambar
yang menggunakan geometri primitif seperti titik, garis, kurva, dan poligon sebagai
representasi gambar pada grafika komputer, contoh: SVG (Scalable Vector Graphics)
[BAK08].
Secara umum, pada sebuah gambar dengan format PNG, setiap piksel terdiri dari 4 nilai
warna, yaitu komponen merah/red (R), hijau/green (G), biru/blue (B), dan alpha(A)
[W3C03]. Nilai R, G, dan B masing-masing menyatakan intensitas warna merah, hijau,
dan biru yang terkandung pada suatu piksel tertentu. Sedangkan nilai A menyatakan
tingkat transparansi suatu piksel. Jangkauan nilai R, G, B, dan A adalah 0-255, dengan 0
berarti intensitas paling rendah dan 255 berarti intensitas paling tinggi. Dengan
demikian jika nilai A pada suatu piksel sama dengan 0, maka piksel tersebut benar-
benar transparan. Sedangkan jika nilai A pada suatu piksel sama dengan 255, maka
piksel tersebut sama sekali tidak transparan. Format BMP hampir sama dengan PNG,
namun berbeda dalam hal kompresi. Hampir semua format BMP tidak dikompresi,
walaupun sebenarnya ada BMP yang mendukung kompresi, sehingga ukuran gambar
yang sama dalam format BMP lebih besar daripada format PNG. Format JPEG juga
hampir sama dengan PNG, namun berbeda dalam hal algoritma kompresi dan tidak
tersedianya fitur transparansi pada JPEG. Format JPEG dapat mendukung sampai 16.7
juta warna, sehingga biasa digunakan untuk menyimpan foto [PNG06].
2.2.2 Sprite
Dalam dunia pengembangan game dan grafika komputer, terdapat istilah sprite. Sprite
adalah gambar atau image [CAR08]. Beberapa properti sprite yang penting untuk
diketahui adalah:
1. Data Warna
Properti ini merupakan informasi mengenai data warna per piksel yang
membentuk sprite. Data warna ini didapatkan dari file gambar atau data warna
yang dibangkitkan secara programatik.
II-9
2. Titik Origin
Properti ini menyatakan titik pusat sprite. Umumnya letak titik ini pada kiri atas
sprite (0, 0).
3. Posisi
Properti ini menyatakan letak penggambaran sprite pada media penggambaran,
misalnya layar monitor atau sprite lainnya. Umumnya dinyatakan dalam bentuk
titik dan relatif terhadap titik origin sprite.
4. Rotasi
Properti ini menyatakan besarnya perputaran sprite relatif terhadap gambar
asalnya. Titik poros rotasi adalah titik origin sprite.
5. Skala
Properti ini menyatakan pengecilan atau perbesaran ukuran sprite relatif
terhadap gambar asalnya.
6. Pencerminan
Properti ini menyatakan pencerminan sprite. Sumbu pencerminan dapat berupa
garis horizontal maupun vertikal dan letaknya dipengaruhi oleh titik origin
sprite.
7. Kedalaman
Properti ini menyatakan kedalaman sprite pada media penggambaran pada arah
sumbu Z pada kordinat kartesius.
8. Blending Mode
Properti ini menyatakan mode pencampuran/penggabungan elemen data warna
sprite dengan elemen data warna pada media penggambaran. Ada 3 blending
mode yang paling umum digunakan:
a. Alpha Blend: nilai alpha sprite digabungkan dengan nilai alpha media
penggambaran
b. Additive: nilai R, G, B, dan A sprite digabungkan dengan nilai R, G, B, dan
A media penggambaran
c. None: tidak ada nilai warna yang digabungkan
II-10
2.3 Game Engine
Game engine adalah suatu sistem perangkat lunak yang menyediakan abstraksi dari
kegiatan yang sering dilakukan dalam pengembangan game, seperti rendering, efek
fisika, input, dan sebagainya [WAR08]. Berdasarkan jenis objek yang digambar di
media output visual, game engine dibedakan menjadi 2 macam: game engine 2D dan
3D. Game engine 2D adalah yang digunakan untuk membuat game 2 dimensi, yaitu
game yang objek-objeknya hanya mempunyai 2 elemen untuk menyatakan posisi
penggambarannya di media output visual dengan titik kordinat kartesius, yaitu x dan y.
Sedangkan game engine 3D adalah yang digunakan untuk membuat game 3 dimensi,
yaitu game yang objek-objeknya mempunyai 3 elemen untuk menyatakan posisi
penggambarannya di media output visual dengan titik kordinat kartesius, yaitu x, y, dan
z. Ada beberapa game engine yang meliputi baik grafis 2D maupun 3D.
Berikut adalah beberapa contoh game engine yang populer saat ini:
1. Cry Engine
Game engine berbayar produksi Crytek ini adalah game engine yang menangani
baik grafis 2D maupun 3D. Engine ini ditulis dalam bahasa C/C++ dan dibangun
di atas Microsoft DirectX9 dan Microsoft DirectX10.
2. TorqueX 2D
Game engine berbayar produksi Garage Games ini adalah game engine yang
menangani grafis 2D. Engine ini ditulis dalam bahasa C# dan dibangun di atas
framework XNA.
3. Playground SDK
Game engine gratis produksi Playfirst ini adalah game engine yang menangani
grafis 2D. Engine ini ditulis dalam bahasa C++. Engine ini merupakan engine
yang multiplatform, karena dapat digunakan baik pada OpenGL maupun pada
Microsoft DirectX.
Pada bagian-bagian berikutnya akan dijabarkan fitur-fitur yang mungkin terdapat pada
game engine 2D, yaitu input handler, animasi, graphical user interface, collision
detection, physics, particle system, tiling engine, scripting, isometric scene manager,
particle editor, level editor, dan audio.
2.3.1 Input Handler
Input handler adalah elemen pada game
dari input device, seperti keyboard
input handler pada game
sedang dalam keadaan ditekan atau tidak [WIH06].
bagian penting dalam suatu game
dari pengguna, adalah aspek utama dari sebuah game.
2.3.2 Animasi
Animasi adalah metode grafika yang menciptakan ilusi pergerakan benda dengan cara
penggambaran sejumlah gambar yang berbeda yang dilakukan secara berurutan
selang waktu yang relatif pendek
yang dimaksud di atas adalah urutan kejadian yang membentuk gerakan benda tersebut.
Pada game engine, terdapat fitur
beranimasi memiliki sejumlah gambar berbeda
tersebut merupakan bagian dari gerakan yang dimaksud. Misalnya, animasi karakter
yang sedang terbang menggunakan kain (
Gambar
elemen pada game engine yang bertugas untuk menerima input
keyboard, mouse, game pad, dan lain-lain.
pada game engine, programmer dapat mengecek apakah suatu tombol
sedang dalam keadaan ditekan atau tidak [WIH06]. Input handler adalah salah satu
bagian penting dalam suatu game engine, karena aspek interaktif, yaitu melibatkan input
dari pengguna, adalah aspek utama dari sebuah game.
Animasi adalah metode grafika yang menciptakan ilusi pergerakan benda dengan cara
penggambaran sejumlah gambar yang berbeda yang dilakukan secara berurutan
selang waktu yang relatif pendek [ROG95]. Perlu diketahui bahwa sejumlah gambar
dimaksud di atas adalah urutan kejadian yang membentuk gerakan benda tersebut.
terdapat fitur untuk membuat benda beranimasi pada game.
beranimasi memiliki sejumlah gambar berbeda-beda di mana masing-masing gambar
n bagian dari gerakan yang dimaksud. Misalnya, animasi karakter
yang sedang terbang menggunakan kain (Gambar II-3).
Gambar II-3 Contoh Gambar Objek Beranimasi
II-11
yang bertugas untuk menerima input
Dengan adanya
dapat mengecek apakah suatu tombol
adalah salah satu
, karena aspek interaktif, yaitu melibatkan input
Animasi adalah metode grafika yang menciptakan ilusi pergerakan benda dengan cara
penggambaran sejumlah gambar yang berbeda yang dilakukan secara berurutan dengan
Perlu diketahui bahwa sejumlah gambar
dimaksud di atas adalah urutan kejadian yang membentuk gerakan benda tersebut.
beranimasi pada game. Benda
masing gambar
n bagian dari gerakan yang dimaksud. Misalnya, animasi karakter
II-12
2.3.3 Graphical User Interface
Definisi formal Graphical User Interface (GUI) atau antarmuka adalah sistem kontrol
komputer yang memungkinkan pengguna untuk menggunakan suatu alat input untuk
mengarahkan cursor ke pilihan yang ditampilkan pada layar monitor dan memilihnya,
sehingga komputer dapat melakukan suatu aksi tergantung pilihan tersebut [ROG95].
Demikian pula antarmuka pada game, ia menampung input dan memacu sistem untuk
melakukan suatu aksi. Selain itu, antarmuka pada game (juga pada sistem lainnya)
biasanya juga berfungsi untuk mempermudah navigasi dan menyampaikan informasi
kepada pengguna.
Pada game engine, terdapat fitur untuk membuat komponen-komponen antarmuka
game, seperti: button, textbox, slider, dan sebagainya (Gambar II-4). Fitur ini juga dapat
melakukan penanganan event yang terjadi pada komponen antarmuka akibat dari
adanya interaksi komponen antarmuka tersebut dengan pengguna.
Gambar II-4 Contoh Antarmuka pada Game
2.3.4 Collision Detection
Pada game, suatu hal yang biasa jika diperlukan suatu mekanisme untuk mengetahui
apakah suatu benda bersentuhan / bertabrakan dengan benda lainnya. Mekanisme ini
biasa disebut dengan collision detection.
Pada game engine, terdapat fitur untuk menciptakan benda yang dinyatakan dapat
bersentuhan dengan benda lain, sehingga diperlukan mekanisme collision detection ini.
II-13
Berikut akan dijelaskan beberapa tipe collision detection:
1. Rectangle Collision Detection
Pada tipe collision detection ini, objek dianggap sebagai sebuah bujur sangkar
dan perhitungan collision detection dilakukan dengan menggunakan rumus
pencarian perpotongan dua bujur sangkar (Gambar II-5).
Gambar II-5 Rectangle Collision Detection
2. Circle Collision Detection
Pada tipe collision detection ini, objek dianggap sebagai sebuah lingkaran dan
perhitungan collision detection dilakukan dengan menggunakan rumus
pencarian perpotongan dua lingkaran (Gambar II-6).
Gambar II-6 Circle Collision Detection
II-14
3. Polygon Collision Detection
Pada tipe collision detection ini, objek dianggap sebagai sebuah poligon yang
paling menyerupai bentuk objek tersebut (Gambar II-7). Oleh karena itu,
dibandingkan dengan 2 tipe collision detection yang telah dijelaskan
sebelumnya, polygon collision detection adalah yang paling akurat.
Gambar II-7 Polygon Collision Detection
4. Per Pixel Collision Detection
Pada tipe collision detection ini, perhitungan collision detection melibatkan
piksel-piksel tertentu pada objek, sehingga jika piksel pada objek berhimpitan
dengan piksel pada objek lainnya, maka kedua objek tersebut dianggap
bersentuhan satu sama lain (Gambar II-8).
Gambar II-8 Per Pixel Collision Detection
2.3.5 Physics
Pada game dengan genre tertentu, terdapat kebutuhan untuk menciptakan benda yang
sifat fisikanya menyerupai benda di kehidupan nyata, misalnya: bola basket dapat
dipantulkan ke lantai, pohon bisa jatuh ketika ditebang, dan sebagainya.
II-15
Pada game engine, untuk memfasilitasi kebutuhan ini diperlukan suatu perhitungan
fisika yang relatif sederhana dan mudah diterapkan namun cukup untuk memodelkan
kejadian fisika di dunia nyata. Hukum fisika Newton cocok untuk diterapkan karena
merupakan hukum fisika dasar yang menyatakan pergerakan benda.
Ada 3 hukum fisika Newton, yaitu:
1. Hukum kelembaman
Dasar dari hukum pertama Newton ini adalah eksperimen bola yang berputar
dan bergerak pada bidang yang datar dan miring yang dilakukan oleh Galileo.
Berdasarkan eksperimen ini, Galileo menyimpulkan bahwa untuk mengubah
kecepatan gerak suatu benda, diperlukan gaya dari luar. Dengan demikian, jika
tidak ada gaya dari luar, kecepatan gerak suatu benda adalah konstan. Newton
memformulasikan hasil eksperimen Galileo ini ke dalam hukum pergerakan
bendanya yang pertama, yaitu: semua benda akan tetap berada pada keadaan
yang sama, yaitu akan tetap diam atau bergerak dengan kecepatan yang sama,
kecuali jika ada gaya dari luar yang dikenakan padanya.
Kemampuan sebuah benda untuk mempertahankan keadaan pergerakannya ini
yang dinamakan kelembaman suatu benda, atau inertia. Newton menyatakan
bahwa kelembaman suatu benda sebanding dengan massa-nya.
2. Hukum gaya, massa, dan percepatan benda
Hukum kedua inilah yang merupakan hukum Newton yang paling terkenal, yaitu
hukum yang menghubungkan gaya yang dikenakan suatu benda menghasilkan
percepatan pada benda. Percepatan adalah perubahan kecepatan dari suatu
benda. Dengan demikian, gaya mengubah kecepatan suatu benda. Hukum
Newton dapat dituliskan secara matematis sebagai berikut:
F = ma
Semua pergerakan benda dapat dimodelkan dengan hukum Newton yang kedua
ini.
3. Hukum gaya aksi dan reaksi
Dalam hukum ini, Newton menyatakan bahwa untuk setiap gaya aksi, akan ada
gaya reaksi yang sepadan namun berlawanan arahnya.
II-16
2.3.6 Particle System
Particle system atau sistem partikel adalah teknik grafika komputer, yang diusulkan
oleh W. Reeves, untuk merepresentasikan benda-benda yang tidak beraturan, seperti:
asap, ledakan, awan, air, dan sebagainya [ROG95]. Contoh sistem partikel dapat dilihat
pada Gambar II-9.
Gambar II-9 Efek Partikel Ledakan
2.3.7 Tiling Engine
Tiling adalah teknik untuk membentuk gambar yang besar dengan cara mengulangi
penggambaran gambar tersebut sedemikian rupa sampai semua ruang kosong pada
gambar besar yang diinginkan telah terisi [ROG95]. Teknik ini digunakan untuk
menghemat penggunaan RAM (Random Access Memory) dan meningkatkan performa
penggambaran pada game. Pada game engine, biasanya fitur ini disediakan dalam
bentuk komponen tiling engine. Contoh penggunaan tiling engine ada pada Gambar
II-10.
II-17
Gambar II-10 Contoh Penggunaan Tiling Engine
2.3.8 Scripting
Fitur ini berguna untuk memodelkan perilaku objek dalam game dalam bahasa scripting
tertentu. Dengan adanya fitur ini, perilaku objek dalam game tidak perlu dimodelkan
secara hardcoded pada kode program, yang akan menurunkan fleksibilitas program
karena dengan hardcode, setiap pengubahan perilaku suatu objek, program harus
dikompilasi ulang [ECH05]. Ada beberapa bahasa scripting yang cukup populer
digunakan dalam pengembangan game, yaitu Lua dan C#.
2.3.9 Isometric Scene Manager
Fitur ini berguna untuk mengelola scene pada game yang menggunakan metode grafika
isometrik. Isometrik adalah metode matematis untuk membangun objek 3 dimensi tanpa
menggunakan konsep perspektif. Dengan demikian benda-benda digambarkan dengan
menggunakan panjang benda yang sebenarnya. Pada game isometrik, bagian objek yang
digambarkan adalah kedua sisi dan bagian atas atau bawah objek. Metode isometrik
adalah metode yang cukup mudah diimplementasikan untuk membuat scene “3
dimensi” dari gambar 2 dimensi [HUD09]. Contoh scene isometrik dapat dilihat pada
Gambar II-11.
II-18
Gambar II-11 Contoh Scene Isometrik
2.3.10 Particle Editor
Particle editor adalah tools untuk membentuk suatu sistem partikel, misalnya partikel
asap. Pada suatu particle editor, terdapat form untuk memasukkan input nilai variabel
yang berhubungan dengan sifat dan pola pergerakan partikel tersebut, misalnya
kecepatan masing-masing partikel yang membentuk sistem partikel tersebut, lalu
hasilnya dapat langsung dilihat melalui suatu panel yang menggambarkan sistem
partikel yang didapatkan dari nilai input tersebut. Hasil input nilai ini dapat di-ekspor
menjadi file script yang kemudian dapat di-load secara dinamik pada program game
yang akan menampilkan sistem partikel tersebut.
Dengan adanya particle editor ini, game programmer tidak perlu mengkompilasi ulang
dan menjalankan program game-nya hanya untuk melakukan perubahan nilai atribut
sistem partikel dan melihat hasilnya. Contoh particle editor dapat dilihat pada Gambar
II-12, particle editor ini merupakan bagian dari Playground SDK, game engine 2D yang
telah dijelaskan pada bagian sebelumnya.
II-19
Gambar II-12 Contoh Particle Editor
2.3.11 Level Editor
Level editor adalah tools untuk merancang, membuat, dan mengedit game dengan
karakteristik WYSIWYG (What You See Is What You Get). Dengan ini, semua orang
bisa membuat game tanpa harus menulis kode program sedikitpun, melainkan cukup
dengan memilih objek-objek yang diinginkan, meletakkannya ke dalam scene editor,
dan mengatur perilaku objek-objek tersebut. Level editor sudah otomatis tergabung
dengan runtime library 2d engine dan mendukung kebutuhan sebagai berikut:
1. Peletakan dan manipulasi objek
2. Pengeditan properti objek
3. Import aset
4. Performance profiling, yang digunakan untuk melihat performansi game
5. Tidak membutuhkan waktu kompilasi
6. Membuat efek partikel
7. Membuat tile
8. Manajemen aset
Contoh level editor dapat dilihat pada Gambar II-13.
II-20
Gambar II-13 Contoh Level Editor
2.3.12 Audio
Fitur ini berguna untuk membuat game yang memiliki output secara audio (selain secara
visual). Sebenarnya fitur ini bukanlah fitur yang spesifik game engine 2D, melainkan
fitur pada game engine secara umum.
2.4 XNA Framework
Microsoft XNA adalah sebuah framework game yang dibangun di atas Microsoft
DirectX. XNA adalah singkatan dari XNA’s Not Acronymed, yang artinya XNA bukan
suatu singkatan [CAR08]. XNA dapat digunakan untuk membuat game pada komputer,
Xbox360, dan Zune.
2.4.1 XNA Content Pipeline
Content pipeline pada XNA adalah tools yang digunakan untuk melakukan konversi
content yang formatnya tidak kompatibel dengan game agar menjadi kompatibel dan
langsung dapat digunakan pada game [CAR08]. Sebagai contoh, file tekstur biasanya
disimpan dalam format .png atau .jpg dan untuk menggunakannya di game, file tersebut
harus dikonversi terlebih dahulu. Dengan adanya content pipeline, berbagai macam
format file dapat dikonversi menjadi tipe file yang dapat digunakan pada game dan
II-21
kemudian dapat dikompilasi ke format yang dengan mudah dapat di-load ketika game
dijalankan. XNA content pipeline terdiri dari beberapa komponen sebagai berikut:
1. Content Importer
Content importer berguna untuk membaca data yang dimasukkan ke dalam
proyek game dan memetakannya ke komponen content pipeline yang lain, yaitu
content Document Object Model (DOM). Jika content importer tidak dapat
memetakan data pada file, maka data tersebut tidak akan dihiraukan.
2. Content DOM
Content pipeline berguna untuk menyimpan data yang telah dikemas sedemikian
rupa oleh content importer sebagai data yang akan di-load pada game.
3. Content Processor
Content processor berguna untuk meneruskan data dari content DOM ke
komponen selanjutnya, content compiler.
4. Content Compiler
Content compiler membuat file yang dibaca pada saat runtime game. Umumnya
semua file dikonversi menjadi file .xnb, kecuali file audio yang dikonversi
menjadi file .xgs, .xwb, atau .xsb, tergantung jenis file audio itu sendiri.
2.4.2 2D pada XNA
Semua gambar yang muncul pada layar game 2D disebut sprite. XNA
merepresentasikan sprite dengan objek dari kelas Texture2D. Posisi penggambaran
sprite pada layar dinyatakan dengan menggunakan sistem kordinat x dan y (x, y). Nilai
x bertambah besar secara horizontal dari ujung kiri atas (x = 0) sampai ke ujung kanan
atas layar, sedangkan nilai y bertambah besar secara vertikal dari ujung kiri atas (y = 0)
sampai ujung kiri bawah layar (Gambar II-14).
II-22
Ketika kita akan menggambar banyak sprite pada layar, beban kerja mesin akan
menjadi berat karena kita harus mengirimkan instruksi terpisah ke kartu grafik setiap
kali akan menggambar sesuatu pada layar. Oleh karena itu, penggambaran sprite pada
XNA melibatkan objek dari kelas SpriteBatch. Seperti namanya, kelas ini
merepresentasikan kumpulan sprite yang akan digambar pada layar. Dengan kelas ini,
kita dapat melakukan penggambaran banyak sprite dengan menggunakan pengaturan
yang sama dan mengirimkan satu instruksi saja ke kartu grafik.
2.4.3 Siklus Game pada XNA
Game yang dibangun pada XNA, memiliki siklus yang terdiri dari fase inisialisasi dan
fase proses yang terjadi pada setiap frame (game loop). Diagram alir dari siklus ini
dapat dilihat pada Gambar II-15.
(0, 0) (1024, 0)
(0, 768) (1024, 768)
y+
x+
Gambar II-14 Sistem Kordinat 2D XNA pada Layar dengan
Resolusi 1024x768
II-23
Gambar II-15 Diagram Alir Siklus Game pada XNA
Sebenarnya, sebuah game adalah sequence of frames atau sekumpulan frame gambar
yang digambarkan pada layar dalam jangka waktu yang berdekatan, sehingga bagi mata
manusia seolah-olah terjadi pergerakan objek yang digambar tersebut. Ini berarti,
pengembangan game adalah manipulasi dan penggambaran objek-objek secara
berulang-ulang, yang dilakukan pada setiap frame. Dengan konsep frame ini, muncul
istilah yang disebut dengan game loop. Hampir semua game memiliki
kelas/fungsi/struktur yang bertugas untuk membentuk game loop ini, apapun platform
yang digunakan untuk membuat game tersebut. Game loop inilah yang membedakan
pengembangan game dengan pengembangan aplikasi biasa. Secara umum, game loop
terdiri dari sekumpulan fungsi yang dipanggil terus-menerus pada setiap frame sampai
game berhenti dijalankan. Game loop pada XNA terdiri dari 2 method: Update dan
Draw. Semua hal yang berkaitan dengan proses update atau manipulasi objek setiap
frame-nya, dilakukan pada method Update. Sedangkan penggambaran semua objek
dilakukan pada method Draw [REE09]. Karena game engine 2D akan dikembangkan
pada XNA framework, diagram alir siklus game yang dibangun menggunakan game
engine 2D ini pun akan sama dengan diagram di atas.