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-1
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 benarbenar 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.
II-11
2.3.1 Input Handler Input handler adalah elemen pada game engine yang bertugas untuk menerima input dari input device, seperti keyboard, keyboard mouse, game pad, dan lain-lain. Dengan adanya input handler 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. 2.3.2 Animasi Animasi adalah metode grafika yang menciptakan ilusi pergerakan benda dengan cara penggambaran sejumlah gambar yang berbeda yang dilakukan secara berurutan dengan selang waktu yang relatif pendek [ROG95]. Perlu diketahui bahwa sejumlah gambar yang dimaksud di atas adalah urutan kejadian yang membentuk gerakan benda tersebut. Pada game engine, terdapat fitur untuk membuat benda beranimasi pada game. Benda beranimasi memiliki sejumlah gambar berbeda-beda berbeda di mana masing-masing masing gambar tersebut merupakann bagian dari gerakan yang dimaksud. Misalnya, animasi karakter yang sedang terbang menggunakan kain (Gambar ( II-3).
Gambar II-3 Contoh Gambar Objek Beranimasi
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
(0, 0)
(1024, 0) x+
y+ (0, 768)
(1024, 768)
Gambar II-14 Sistem Kordinat 2D XNA pada Layar dengan Resolusi 1024x768
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.
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.