GRAFIKA GAME. Aditya Wikan Mahastama. Implementasi Grid dan Animasi Sederhana UNIV KRISTEN DUTA WACANA TEKNIK INFORMATIKA GENAP 1213

dokumen-dokumen yang mirip
GRAFIKA GAME. Aditya Wikan Mahastama. Tentang Game dan Representasi Dunia dalam Game

TIP 163. Game Engine. Topik 1 (Pert 2) Game Engine dan Struktur Game HTML5 Sederhana. Dosen: Aditya Wikan Mahastama

@UKDW BAB 1 PENDAHULUAN. 1.1 Latar Belakang

JavaScript. Pemrograman Web 1. Genap

GRAFIKA GAME. Aditya Wikan Mahastama. Rangkuman Transformasi Dua Dimensi UNIV KRISTEN DUTA WACANA TEKNIK INFORMATIKA GENAP 1213

PEMROGRAMAN WEB 09 JavaScript Lanjut

BOUNCE NAHKODA CLASSIC GAME. Pertemuan 1. Oleh Mohammad Habibulloh

PENGENALAN FLASH DAN ACTIONSCRIPT 3.0

BAB II OBJECT, EVENT & PROPERTY

MODUL IV PROCEDURE. [Private public static]sub namaprosedur (daftarargumen) End Sub

Oleh :Kundang K Juman Pada pertemuan ini dibahas bagimana cara kerja event script untuk mengontrol suatu animasi.

BAB II OBJECT, EVENT & PROPERTY

Score: 40.0 Persentage: % ~ u ~ Generated by Foxit PDF Creator Foxit Software For evaluation only.

Aditya Wikan Mahastama

PROPERTY, METHOD DAN EVENT

IMPLEMENTASI ALGORITMA GREEDY PADA PERMAINAN OTHELLO

PENDAHULUAN. Gambar 1.1. GameMaker dari YoyoGames

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM. unsur edukasi matematika dasar yang terdiri dari lingkungan implementasi, kode,

Algoritma Pemrograman 2 B

PEMROGRAMAN WEB 1 JavaScript Rio Andriyat Krisdiawan, M.Kom

Mahasiswa memahami Pengertian, fungsi, aplikasi untuk menjalankan JavaScript, cara menjalankan kode, cara memasukkan kode JavaScript ke dalam HTML

PENGOLAHAN CITRA DIGITAL

BAB III ANALISA DAN PERANCANGAN

Pemrograman Basis Data Berbasis Web

STMIK AMIKOM YOGYAKARTA YOGYAKARTA 2008 WIDHIARTA, S. KOM

PENGOLAHAN CITRA DIGITAL

Aditya Wikan Mahastama

BAB III ANALISA DAN PERANCANGAN SISTEM. Seperti yang sudah kita ketahui tentang interactive whiteboard yaitu

BAB 5 SPRITE. Contoh sebuah Sprite

Pemrograman Web. Javascript. Indrato, S.Kom Introduction. Penyisipan JS dalam HTML. PemrogramanWeb.2009

APLIKASI PENGGANTI BACKGROUND PASFOTO DENGAN METODE L1-METRIC DAN INPUT CHANNEL RGB

Struktur Program. Rinta Kridalukmana

Pemrograman Basis Data Berbasis Web

BAB IV HASIL DAN PEMBAHASAN

BAB 1 PENDAHULUAN 1.1 Latar Belakang Adobe Photoshop Corel Draw 1.2 Rumusan Masalah

BAB III ANALISA DAN PERANCANGAN

PEMPROGRAMAN WEB JAVASCRIPT

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

MODUL 7. Event. Laboratorium Komputer STIMIK PPKIA Pradnya Paramita Malang

Gambar 1.1 Susunan layer dan objek bola

Workshop Singkat Membuat Game Shooter

Algoritma & Pemrograman #9. by antonius rachmat c, s.kom, m.cs

Markerless Augmented Reality Pada Perangkat Android

PEMROGRAMAN II. By : Sri Rezeki Candra Nursari. Penilaian : Genap TA 2010/2011 teori

Pertemuan Ke-5 Client Side Scripting (JavaScript) S1 Teknik Informatika - Unijoyo 1

Pemrograman Web. Page 188

BAB III ANALISA DAN PERANCANGAN

BAHAN AJAR INTERAKTIF

BAB 1 PENDAHULUAN. 1.1 Pendahuluan

TIP 163. Game Engine. Topik 2 (Pert 3) AI Dalam Game dan Steering Behaviour. Dosen: Aditya Wikan Mahastama

disertai contoh-contoh javascript yang kompatibel dengan Firefox

Membuat Form Kontak yang Indah dan Atraktif dengan AJAX [Part 4]

Pembuatan Permainan Super Noseman

Aditya Wikan Mahastama

BAB IV IMPLEMENTASI DAN PENGUJIAN

Bab 6. Layer Manager

BAB IV IMPLEMENTASI DAN PENGUJIAN

Pelacakan dan Penentuan Jarak Terpendek terhadap Objek dengan BFS (Breadth First Search) dan Branch and Bound

PHP & MYSQL. Universitas Komputer Indonesia 2004 Taryana. S

Belajar Java Script.

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

Basic jquery Menyentuh jquery sekarang juga

TIU: Mahasiswa mampu menghasilkan aplikasi Komputer Grafik sederhana. Pemrograman OpenGL API dasar 2 dimensi. Penggunaan aplikasi pengolah grafis 3D

BAB IV HASIL DAN UJI COBA

BAB IV IMPLEMENTASI DAN PENGUJIAN SISTEM. 4.1 Implementasi Sistem Implementasi bisa diartikan sebagai pelaksanaan atau penerapan atau bisa

Aditya Wikan Mahastama

STRATEGI DIVIDE AND CONQUER

BAB III METODE PENELITIAN. Metodologi penelitian yang digunakan dalam Tugas Akhir ini adalah

BAB IV HASIL DAN UJI COBA

Konstruksi Dasar Algoritma

JavaScript (Dialog Box) Oleh : Devie Rosa Anamisa

Pembuatan Peta Permainan dengan BSP

BAB IV IMPLEMENTASI DAN EVALUASI

Bab 4 HASIL DAN PEMBAHASAN

BAB III METODE PENELITIAN. Metode penelitian yang digunakan adalah dengan cara mencoba

MODUL VI ACTION SCRIPT

Chapter 2. Tipe Data dan Variabel

ARSITEKTUR DAN ORGANISASI KOMPUTER Aditya Wikan Mahastama

Latihan 2 Memahami memasukan data dengan komponen Text, dan mengambil hasil input untuk ditampilkan pada sebuah label

BAB I PENDAHULUAN. dalam teori graf dikenal dengan masalah lintasan atau jalur terpendek (shortest

Prosedur Menjalankan Aplikasi Linda

BAB IV IMPLEMENTASI DAN PENGUJIAN

APLIKASI PEMROGRAMAN DINAMIS UNTUK MEMAKSIMALKAN PELUANG MEMENANGKAN PERMAINAN PIG

Larik/ Array int a1, a2, a3, a4, a5;

Pengenalan Dan Contoh Penggunaan Sederhana Fungsi Looping Pada Visual Basic

BAB 4 IMPLEMENTASI DAN EVALUASI. a. Spesifikasi perangkat keras minimum: 3. Harddisk dengan kapasitas 4, 3 GB

BAB I PENDAHULUAN. 1.1 Pengantar

BAB II DASAR TEORI 2.1. Dasar Pemrograman GTGE

Modul Pengembangan Bahan Ajar Sosiologi Berbasis Teknologi Informasi Aplikasi Game Html 5 dengan Construct 2

HTML DOM #1 Yosef Murya Kusuma Ardhana. ST., M.Kom

CHAPTER 4 MACROMEDIA FLASH MACROMEDIA FLASH

Puja Pramudya

Bermain dengan Marker Google Maps API

Pemrograman Web Week 4. Team Teaching

PEMROGRAMAN WEB 08 JavaScript Dasar


POLITEKNIK ELEKTRONIKA NEGERI SURABAYA

BAB III ANALISA DAN PERANCANGAN

DESIGN WEB. D3 TKJ

TREKQ FLEET MANAGEMENT PROGRAM

Transkripsi:

GRAFIKA GAME Aditya Wikan Mahastama mahas@ukdw.ac.id Implementasi Grid dan Animasi Sederhana 7 UNIV KRISTEN DUTA WACANA TEKNIK INFORMATIKA GENAP 1213

Apa saja yang dibutuhkan untuk melakukan implementasi pemrograman game menggunakan grid? Sebuah grid map/tile map Sebuah sprite sheet/tile sheet Implementasi Grid

Grid Map Grid Map adalah gambaran dari papan permainan yang akan kita gunakan (background) Berbentuk struktur data berisi representasi objek yang akan diletakkan di papan permainan sebagai objek statis Objek pada umumnya diwakili dengan sebuah ID yang nantinya akan digunakan untuk mendeteksi sifat objek dan menampilkan sprite yang sesuai dengan objek tersebut

Grid Map Sifat objek misalnya: halangan, makanan, jalan, dsb., yang tentunya akan berkorelasi dengan sprite yang akan ditampilkan Pemberian ID akan lebih mudah jika menggunakan bilangan, contoh: 31 = tembok pojok 30 = tembok biasa 0 = jalan 25 = halangan, dsb

Grid Map Sehingga untuk sebuah peta papan permainan berikut, kita bisa mendefinisikannya dalam stuktur data array dua dimensi seperti ini: var tilemap = [ var tilemap = [ [32,31,31,31,1,31,31,31,31,32], [1,1,1,1,1,1,1,1,1,1], [32,1,26,1,26,1,26,1,1,32], [32,26,1,1,26,1,1,26,1,32], [32,1,1,1,26,26,1,26,1,32], [32,1,1,26,1,1,1,26,1,32], [32,1,1,1,1,1,1,26,1,32], [1,1,26,1,26,1,26,1,1,1], [32,1,1,1,1,1,1,1,1,32], [32,31,31,31,1,31,31,31,31,32] ];

Tile Sheet Tile sheet (disebut juga sprite sheet) adalah sebuah citra yang berisi beberapa frame citra individual yang akan digunakan untuk menggambarkan sebuah objek pada game Setiap frame pada tile sheet akan diasosiasikan pada sebuah ID, melalui script pemrograman yang digunakan Mengapa tidak menggunakan citra yang terpisahpisah? Secara teknis memang memungkinkan, tetapi tidak efisien karena melakukan loading citra secara berulang-ulang ke memori

Tile Sheet Berikut contoh tile sheet yang diperlukan untuk menggambarkan peta permainan pada slide sebelumnya, yang sebagai contoh diasosiasikan dengan ID berikut: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Courtesy: http://my.safaribooksonline.com/9781449308032/advanced_cell-based_animation#example_tile_sheet

Menggambar Papan Permainan Untuk dapat menggambarkan sebuah citra ke layar, kita membutuhkan instruksi untuk me-load sebuah citra ke memori, dan sebuah event handler untuk menangkap event load, kemudian melakukan sesuatu: var tilesheet = new Image(); tilesheet.src = tanks_sheet.png ; tilesheet.addeventlistener('load', eventsheetloaded, false); +

Menggambar Papan Permainan Kemudian tentukan variabel-variabel untuk membantu loop saat rendering, serta tile mapnya var maprows = 10; var mapcols = 10; var tilemap = [ [31,30,30,30,0,30,30,30,30,31], [0,0,0,0,0,0,0,0,0,0], [31,0,25,0,25,0,25,0,0,31], [31,25,0,0,25,0,0,25,0,31], [31,0,0,0,25,26,0,25,0,31], [31,0,0,25,0,0,0,25,0,31], [31,0,0,0,0,0,0,25,0,31], [0,0,25,0,25,0,25,0,0,0], [31,0,0,0,0,0,0,0,0,31], [31,30,30,30,0,30,30,30,30,31] ];

Menggambar Papan Permainan Terakhir, event handler dan function penggambarnya function eventsheetloaded() { drawscreen() //jika ingin diulang2 gunakan setinterval(drawscreen,100) } function drawscreen() { for (var rowctr=0;rowctr<maprows;rowctr++) { for (var colctr=0;colctr<mapcols;colctr++){ var tileid = tilemap[rowctr][colctr]+mapindexoffset; var sourcex = Math.floor(tileId % 8) *32; var sourcey = Math.floor(tileId / 8) *32; context.drawimage(tilesheet, sourcex, sourcey,32,32,colctr*32,rowctr*32,32,32); } } }

The Key context.drawimage(tilesheet, sourcex, sourcey, 32, 32, colctr*32, rowctr*32, 32, 32); Courtesy: http://www.w3schools.com/tags/canvas_drawimage.asp

Menganimasikan Sprite Menganimasikan sprite menggunakan prinsip yang sama dengan penggambaran peta permainan, hanya saja penggambaran diletakkan pada koordinat yang sama Pada contoh berikut kita akan menganimasikan gambar tank dari tile sheet yang ada sebelumnya 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

Menganimasikan Sprite Kita tentukan dulu frame-frame yang akan dianimasikan var animationframes = [1,2,3,4,5,6,7,8]; var frameindex = 0; Mengapa tidak menggunakan sekedar counter? Jika menggunakan counter, maka akan butuh dua variabel maksimum dan minimum, serta tidak memungkinkan adanya loncatan frame

Kemudian gambarkan kumpulan frame tersebut ke sebuah koordinat yang sama function eventsheetloaded() { } setinterval(drawscreen, 100 ); Menganimasikan Sprite function drawscreen() { //draw a background so we can see the Canvas edges context.fillstyle = "#aaaaaa"; context.fillrect(0,0,500,500); var sourcex = Math.floor(animationFrames[frameIndex] % 8) *32; var sourcey = Math.floor(animationFrames[frameIndex] / 8) *32; context.drawimage(tilesheet, sourcex, sourcey,32,32,50,50,32,32); frameindex++; if (frameindex ==animationframes.length) { frameindex=0; } }

Menggerakkan Sprite? Tinggal geser koordinat penggambarannya di kanvas

Menggabungkan Peta dan Objek Beri nama tersendiri untuk fungsi penggambaran peta dan penggambaran sprite, misal drawmap() dan drawsprite(); Pada event handler, fungsi yang dipanggil adalah fungsi induk untuk penggambaran dengan interval terhadap kedua fungsi tersebut function eventsheetloaded() { } setinterval(drawall, 100 ); function drawall(){ drawmap(); drawsprite(); }

Sprite Tidak Menyatu Dengan Peta Solusi sementara (non grafika) dan lebih efisien adalah dengan memberikan warna yang sama untuk background objek dinamis dengan warna peta yang akan dilaluinya, atau Memberikan warna background objek yang transparan, jika menggunakan citra GIF atau PNG

Question: Translation SPEED How to move two objects along with different speeds at the same delay interval? Integer speeds caused unnatural multiplication problem. Any solution?

Extra: Mendeteksi Event Keyboard Event keyboard bisa dideteksi oleh browser secara keseluruhan, maupun oleh objek di dalam browser, misalnya kanvas. Jenis event ada dua, yaitu keypress untuk menangkap penekanan tombol apapun, dan keydown untuk menangkap penekanan tombol tertentu window.addeventlistener( "keypress", dokeydown, false); canvas.addeventlistener( "keydown", dokeydown, true);

Extra: Mendeteksi Event Keyboard Jika memilih untuk menggunakan event keydown, maka EventListener akan mengembalikan sebuah parameter yang berisi kode keyboard, misal untuk A adalah 65. Parameter ini diakses melalui atribut keycode Kode keyboard bisa dicari sepenuhnya di Internet, atau dicetak sendiri melalui script berikut: window.addeventlistener( "keydown", dokeydown, true); //tampilkan function dokeydown(e) { alert( e.keycode ); }

Extra: Mendeteksi Event Mouse Sama dengan mendeteksi event keyboard, kita gunakan kembali EventListener, hanya sekarang event yang kita handle adalah mousedown, yang mengembalikan parameter dengan method pagex dan pagey canvas.addeventlistener( mousedown", dokeydown, true); //tampilkan function dokeydown(e) { alert( e.pagex ); alert( e.pagey ); }

Tips pemrograman: Extra: Mendeteksi Event Mouse By common sense saja: jika ada mousedown, biasanya ada mouseup, dan mousemove Gunakan common sense untuk mencoba menemukan event lain dari event yang sudah anda ketahui, misalnya keydown

SELESAI UNTUK MATERI INI Materi berikutnya: Gerak bebas dan deteksi tumbukan sederhana Sumber: 1. http://my.safaribooksonline.com/book/web-development/html/9781449308032/images-on-the-canvas/creating_a_grid_of_tiles 2. http://my.safaribooksonline.com/9781449308032/advanced_cell-based_animation#example_tile_sheet 3. http://my.safaribooksonline.com/9781449308032/combining_bitmaps_and_sound#combining_bitmaps_and_sound 4. http://http://www.w3schools.com/tags/canvas_drawimage.asp 5. http://www.homeandlearn.co.uk/js/html5_canvas_keyboard_keys.html 6. http://www.homeandlearn.co.uk/js/html5_canvas_mouse_events.html