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

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

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

TIP 163. Game Engine. Topik 4 (Pert 5) Atribut Objek, Gerak Terkoordinasi, Blending. Dosen: Aditya Wikan Mahastama

Deteksi Tubrukan Objek Dengan HTML5 [Part 3]

Deteksi Tubrukan Objek Dengan HTML5 [Part 1]

Variabel dan Tipe data Javascript

BAB IV IMPLEMENTASI DAN EVALUASI

Deteksi Tubrukan Objek Dengan HTML5 [Part 2]

BAB IV IMPLEMENTASI DAN PENGUJIAN. Pada bab 4 ini akan dilakukan implementasi dan pengujian terhadap sistem.

GRAFIKA GAME. Aditya Wikan Mahastama. Prinsip Prinsip Grafika Komputer UNIVERSITAS KRISTEN DUTA WACANA GN1213

BAB III ANALISA DAN PERANCANGAN

BAB 4 IMPLEMENTASI DAN PENGUJIAN

BAB IV HASIL DAN UJI COBA

LAMPIRAN-LAMPIRAN. Kuisioner Analisis User 1. Berapakah umur Anda? a. < 15 b c d e. > Anda pria atau wanita?

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

BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM

BAB 3 METODOLOGI 3.1. Analisis Kebutuhan dan Masalah Analisis Kebutuhan

BAB III ANALISA KEBUTUHAN DAN PERANCANGAN SISTEM

BAB IV IMPLEMENTASI KARYA. Dalam bab ini akan diuraikan implementasi hasil karya yang merupakan

SIMPLE TUTORIAL - ADOBE DREAMWEAVER CS 5 Oleh: H. Heri Istiyanto, S.Si., M.Kom.

GRAFIKA GAME. Aditya Wikan Mahastama. Tentang Game dan Representasi Dunia dalam Game

BAB 1 PENDAHULUAN 1.1 Latar Belakang Masalah

MODUL 5 JAVA SCRIPT. Sub : PENGENALAN

NUNUNG WULANDARI TEKNOLOGI PENDIDIKAN UNIVERSITAS NEGERI YOGYAKARTA

BAB 1 PENDAHULUAN 1.1 Latar Belakang 1.2 Identifikasi Masalah

Workshop Gamekita Basic Logic Game with Construct 2

UKDW BAB I PENDAHULUAN. 1.1 Latar Belakang Masalah

JavaScript. Pemrograman Web 1. Genap

BAB I PENDAHULUAN. Perkembangan yang amat pesat dari dunia teknologi. berimbas pula pada pesatnya perkembangan dunia game video.

Tahap 2 : Control Objek Animasi Pada Scratch

Workshop Singkat Membuat Game Shooter

BAB III ANALISIS DAN PERANCANGAN

buat Lightbox mu sendiri dengan jquery

STMIK AMIKOM YOGYAKARTA YOGYAKARTA 2008 WIDHIARTA, S. KOM

BAB 4 HASIL DAN PENELITIAN

TIP 163. Game Engine. Topik 5 (Pert 6) Graf, Representasi Dunia, dan Algoritma Pencari Jalur (Pathfinding) Dosen: Aditya Wikan Mahastama

2.2. Perangkat Keras dan Fungsinya

Pemrograman Web Week 2. Team Teaching

BAB IV IMPLEMENTASI DAN EVALUASI GAME

BAB III ANALISIS DAN PERANCANGAN

BAB 1 PENDAHULUAN 1.1 Latar Belakang Masalah

BAB 3 ANALISIS DAN PERANCANGAN

Belajar Java Script.

BAB III ANALISIS DAN PERANCANGAN

BAB III ANALISA DAN PERANCANGAN

Pengenalan JavaScript

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

Ema Maliachi,S.Kom. Pertemuan ke-2

PEMROGRAMAN WEB 08 JavaScript Dasar

Prosedur Penggunaan. Aplikasi Impressive terbagi menjadi aplikasi server dan client. Berikut merupakan

BAB IV IMPLEMENTASI DAN ANALISIS

BAB IV IMPLEMENTASI DAN PENGUJIAN. dapat dimengerti oleh mesin dengan spesifikasi perangkat lunak dan perangkat

Modul Pelatihan : Pembuatan Game Animasi Menggunakan Greenfoot

BAB 4. Implementasi dan Evaluasi

BAB 4 HASIL DAN PEMBAHASAN

BAB III ANALISA DAN PERANCANGAN

BAB 4 IMPLEMENTASI DAN EVALUASI. diperlukan agar dapat mengimplementasikan game Job Seeker ini. a. Intel Pentium 4 2,34 Ghz. b. Memory (RAM) 512MB RAM

Implementasi Hukum Fisika dalam Game Physics Puzzle Cannon Ball Menggunakan Box2D. Oleh Mahdi Bashroni RIzal

BAB III ANALISA DAN PERANCANGAN

BAB 3 PERANCANGAN DAN PEMBUATAN. Engine akan dirancang agar memenuhi syarat maintainability, reusability dan

BAB III PERANCANGAN ALAT

BAHAN AJAR INTERAKTIF

Pemrograman Basis Data Berbasis Web

BAB IV HASIL DAN UJI COBA

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

Bermain dengan Marker Google Maps API

BAB III METODOLOGI 3.1 Desain Game Konsep Game Pengumpulan Data

Perangkat Keras (Hardware) Komputer dan Fungsinya. Didiek Prasetya M.sn

BAB V IMPLEMENTASI KARYA. Laporan tugas akhir pada BAB V dijelaskan mengenai proses atau jalan cerita

: Aplikasi permainan Seven Spade dengan Macromedia Adobe Flash : Nur Cahyo Wibowo, S.Kom, M.Kom. : Resha Hendar Kusuma ABSTRAK

BAB III ANALISA DAN PERANCANGAN

BAB III METODE PENELITIAN

MODUL PRAKTIKUM SISTEM TERDISTRIBUSI

BAB 1 PENDAHULUAN 1.1 Latar Belakang

PENDAHULUAN. Gambar 1.1. GameMaker dari YoyoGames

SILABUS MATAKULIAH. Pendahuluan Mengenal Tools Air for Android. - Menu bar - Component Inspektor - Tool Box - Libraries - Stage

Pelatihan Intel XDK. Modul 3. Pengenalan Intel XDK Development Tools. Dikembangkan oleh Intel Software.

Variabel adalah tempat dimana kita menyimpan nilai-nilai atau informasi-informasi pada JavaScript. Aturan penamaan variabel : Harus diawalai dengan

Dwiny Meidelfi, M.Cs

DESIGN WEB. D3 TKJ

BAB IV IMPLEMENTASI DAN PENGUJIAN

Pengenalan PHP Contoh penulisan file PHP :

Pemrograman Web Week 4. Team Teaching

PENDAHULUAN LATAR BELAKANG Perkembangan dunia informasi khususnya dalam bidang komputer dirasakan oleh banyak orang sebagai perkembangan yang sangat c

BAB IV IMPLEMENTASI KARYA. dikerjakan, dan memiliki keterkaitan satu sama lain. Proses pembuatan game

BAB 4 IMPLEMENTASI DAN EVALUASI

BAB III PERANCANGAN GAME

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

Objek Bergoyang CSS3

PEMBUATAN GAME ANDROID THE RETURN OF CAROQ DENGAN MENGGUNAKAN UNITY

Bab I PENDAHULUAN 1.1. Latar Belakang Masalah

BAB III ANALISA DAN PERANCANGAN

BAB IV IMPLEMENTASI DAN PENGUJIAN

1.Dasar dasar Keyboard a. Pengertian dan pengenalan keyboard b. Pemasangan Keyboard c. Fungsi dan penggunaan keyboard

PUZZLE GAME DOLPHIN PROYEK MULTIMEDIA Membuat Game Puzzle Dolphin untuk menyusun gambar yang terpisah-pisah agar menjadi gambar utuh.

BAB II MEMBUAT OBJEK DASAR PADA GIMP

BAB 5 IMPLEMENTASI DAN PENGUJIAN

Pemrograman Basis Data Berbasis Web

BAB III ANALISIS DAN DESAIN SISTEM

BAB IV IMPLEMENTASI DAN ANALISIS

Transkripsi:

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

Last Week Review Bagaimana dengan contoh game yang diminta untuk dipelajari? Apa yang anda temukan? Adakah kesulitan dalam menambahkan tembok?

Last Week Review Apa yang dilihat pemain dalam sebuah game adalah keniscayaan dunia nyata yang digambarkan sebagai sebuah dunia dalam game, oleh karena itu dunia dalam game pada umumnya memiliki logika yang dapat dimengerti oleh pemain, meskipun logika tersebut kadang tidak sesuai dengan dunia nyata. Dunia dalam game umumnya memiliki elemen-elemen berikut: 1. Characters 2. Objects

Last Week Review Mari kita lihat terlebih dahulu jenis-jenis game yang ada.

Dunia dalam Game Dunia dalam game dapat berisi simulasi dunia, atau sebuah papan permainan, atau sebuah arena. Dunia game dapat memiliki sistem koordinat duadimensi atau tiga-dimensi, berupa koordinat gerak bebas atau menerapkan tile.

Characters Karakter adalah elemen dalam game yang merupakan bagian dari gameplay, dan memiliki peran dalam menentukan alur pemainan. Jenisnya ada dua: 1. Playable Characters (PC) Dapat dikontrol secara langsung oleh pemain, baik secara konsisten maupun bergantian. Beraksi menuruti perintah langsung melalui input device. 2. Non-Playable Characters (NPC) Karakter yang seolah-olah bergerak otonom dan tidak dapat dikontrol secara langsung oleh pemain. NPC dapat berinteraksi dengan PC dan ada yang dapat dibuat menuruti perintah melalui stimulus oleh PC.

Characters Karakter umumnya berupa makhluk yang hidup atau dapat bergerak (animate objects). Karakter pasti memiliki atribut-atribut yang menunjukkan kondisinya seperti health, power, shield, dsb.

Objects Objek adalah elemen dalam game yang merupakan pelengkap dan penghias alur permainan utama. Macamnya ada dua: 1. Item Dapat digunakan oleh karakter, dapat berinteraksi dengan karakter dalam batas mengubah atribut karakter. Contoh item adalah senjata, obat-obatan, potion, dkk. 2. Terrain/Accessories Objek-objek lain yang ada dalam dunia game, tidak dapat berinteraksi dengan karakter, tetapi dapat mempengaruhi keleluasaan gerak karakter seperti kecepatan dan arah gerak. Contoh: tekstur tanah (gunung, air, aspal), pohon, binatang, tembok (wall).

Objects Beberapa objek merupakan gabungan antara item dengan terrain/accessories, di mana objek tidak hanya mempengaruhi m gerak (locomotion) karakter, tetapi juga memiliki sifat inert yang dapat mempengaruhi atribut karakter, misalnya mengurangi m nyawa.

Game Engine Pada sebuah game, terdapat bagian-bagian khusus yang dibuat untuk mengolah satu hal. Bagian-bagian ini disebut mesin dari game atau game engine. Mesin-mesin ini dapat digolongkan menjadi: 1. Graphics Engine a. Map/Terrain Engine b. 3D Engine c. Physics and Animation Engine 2. Artificial Intelligence (AI) Engine a. Behavioral Engine b. Tactics Engine

Game Engine Mesin-mesin tersebut kemudian dikembangkan menjadi tools atau modules yang dapat mencakup beberapa mesin, dengan tujuan agar pembuat game tidak perlu membuat seluruhnya dari nol.

Game Engine Engine yang sudah jadi juga memastikan dari aspek pemrograman bahwa manajemen penggunaan resource telah dipastikan dengan baik dan tidak ada kebocoran.

Game HTML5 Secara umum, konstruksi file HTML yang dibutuhkan hanyalah sebagai berikut: <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>simple Canvas Game</title> </head> <body> <script src="js/game.js"></script> </body> </html>

Game HTML5 File Javascript yang menyertai, berisi: // Create the canvas var canvas = document.createelement("canvas"); var ctx = canvas.getcontext("2d"); canvas.width = 512; canvas.height = 480; document.body.appendchild(canvas); // Background image var bgready = false; var bgimage = new Image(); bgimage.onload = function () { bgready = true; ; bgimage.src = "images/background.png";

// Hero image var heroready = false; var heroimage = new Image(); heroimage.onload = function () { heroready = true; ; heroimage.src = "images/hero.png"; // Monster image var monsterready = false; var monsterimage = new Image(); monsterimage.onload = function () { monsterready = true; ; monsterimage.src = "images/monster.png";

// Game objects var hero = { speed: 256 // movement in pixels per second ; var monster = {; var monsterscaught = 0; // Handle keyboard controls var keysdown = {; addeventlistener("keydown", function (e) { keysdown[e.keycode] = true;, false); addeventlistener("keyup", function (e) { delete keysdown[e.keycode];, false);

// Reset the game when the player catches a monster var reset = function () { hero.x = canvas.width / 2; hero.y = canvas.height / 2; ; // Throw the monster somewhere on the screen randomly monster.x = 32 + (Math.random() * (canvas.width - 64)); monster.y = 32 + (Math.random() * (canvas.height - 64)); // Update game objects var update = function (modifier) { if (38 in keysdown) { // Player holding up hero.y -= hero.speed * modifier; if (40 in keysdown) { // Player holding down hero.y += hero.speed * modifier; if (37 in keysdown) { // Player holding left

hero.x -= hero.speed * modifier; if (39 in keysdown) { // Player holding right hero.x += hero.speed * modifier; ; // Are they touching? if ( hero.x <= (monster.x + 32) && monster.x <= (hero.x + 32) && hero.y <= (monster.y + 32) && monster.y <= (hero.y + 32) ) { ++monsterscaught; reset();

// Draw everything var render = function () { if (bgready) { ctx.drawimage(bgimage, 0, 0); if (heroready) { ctx.drawimage(heroimage, hero.x, hero.y); if (monsterready) { ctx.drawimage(monsterimage, monster.x, monster.y); // Score ctx.fillstyle = "rgb(250, 250, 250)"; ctx.font = "24px Helvetica"; ctx.textalign = "left"; ctx.textbaseline = "top";

; ctx.filltext("goblins caught: " + monsterscaught, 32, 32); // The main game loop var main = function () { var now = Date.now(); var delta = now - then; update(delta / 1000); render(); ; then = now; // Let's play this game! reset(); var then = Date.now(); setinterval(main, 1); // Execute as fast as possible

Game HTML5 Menambahkan input melalui mouse? // Handle mouse controls var newx; var newy; var ditekan = false; addeventlistener("mousedown", function (e) { ditekan = true; newx = e.pagex; newy = e.pagey;, false); addeventlistener("mouseup", function (e) { ditekan = false;, false);

Jangan lupa menambahkan baris-baris berikut pada bagian update game objects: if (ditekan) { hero.x = newx; hero.y = newy; Hero bisa diseret? Tambahkan EventListener berikut: addeventlistener("mousemove", function (e) { if (ditekan){ newx = e.pagex; newy = e.pagey;, false); Tahu dari mana mousemove? Gunakan logika analogi! (atau mbah Google)

Menambahkan tembok // Wall image var wallready = false; var wallimage = new Image(); wallimage.onload = function () { wallready = true; ; wallimage.src = "images/brick_wall.png"; // Individual wall location var wall = []; wall[0] = {; wall[0].x = 100; wall[0].y = 100; wall[1] = {; wall[1].x = 300; wall[1].y = 100; wall[2] = {; wall[2].x = 100; wall[2].y = 300; wall[3] = {; wall[3].x = 300; wall[3].y = 300;

Ubah respon setiap penekanan tombol keyboard dengan menambahkan pembatas sesuai dengan logika gerakan yang sedang dilakukan (geser kiri, geser kanan, dsb), misal: if (38 in keysdown) { // Player holding up oldheroy = hero.y; hero.y -= hero.speed * modifier; for(z=0;z<4;z++){ if(hero.x > wall[z].x-32 && hero.x < wall[z].x+32){ if(hero.y <= wall[z].y+32 && hero.y >= wall[z].y){ hero.y = oldheroy;

Today s Challenge Bisakah membuat hero bergerak per tile (32 pixels?)

Konklusi Sintaks JS mirip dengan C atau C++, tetapi lebih luwes Deklarasi variabel bertipe data variant, kecuali ditegaskan, dan bisa memiliki nilai awal Nama method, atribut dan variabel dimulai dengan huruf kecil Tak ada fungsi main(), program dieksekusi secara linier Method pemuncul kanvas adalah setinterval(fungsi utama, interval) yang digunakan untuk merefresh penggambaran kanvas dengan interval tertentu, oleh karena itu Fungsi utama harus berisi update penggambaran layar

Deklarasi array dapat disingkat dengan [], deklarasi objek dapat disingkat dengan { Deklarasi sebagai sebuah objek diperlukan untuk dapat menambahkan atribut PR Next Week: Buatlah hero bisa menembakkan sebuah peluru kuning (cari gambar bola kuning di internet ukuran 32x32)