Top Banner
Mobile Game Developer War 4: Online Camp MGDW4 Online Camp #2 Game Loop, Game Logic, dan Game Input
24

MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Jun 09, 2015

Download

Education

Agate Studio

Materi kedua Online Cmap MGDW4
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

MGDW4 Online Camp #2

Game Loop, Game Logic, dan Game Input

Page 2: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Definisi

Potongan kode utama yang dijalankan terus menerus.

Page 3: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Contoh Game Loop sederhana

Page 4: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Contoh game loop pada J2ME

public void run() {

//Inisialisasi variable yang hanya dibuat1x

while (gameIsRun) {

//Berisi fungsi-fungsi yang dipanggil agar game berjalan

getInput();

update();

draw();

flushGraphics();

try {

Thread.sleep(30);

}catch (InterruptedException ie) {

}

}

}

Page 5: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Game Logic

Page 6: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Definisi

Implementasi game design menjadi algoritma pemrograman.

Page 7: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Contoh: Minesweeper• Tampilkan semua kotak tergantung

statusnya – Tertutup, terbuka kosong, terbuka berisi,

ditandai bendera

• Acak posisi bom• Hitung nilai petunjuk di setiap kotak• Jika ada kotak yang dibuka, tampilkan

isinya– Jika ternyata kosong, buka kotak di

sekitarnya

• Game selesai kalau semua kotak yang bukan bom sudah terbuka

Page 8: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Contoh: Pong• Tampilkan skor, paddle, dan bola• Bola:

– Bola bergerak dengan kecepatan tertentu– Bola memantul ke tembok dan paddle

• Gameplay– Jika bola lewat sisi kanan/kiri, maka skor

untuk pemain di sisi berlawanan

• Input:– Jika ada input pemain A, gerakkan paddle

A– Jika ada input pemain B, gerakkan paddle

B

Page 9: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Contoh: Magic Cups• Acak posisi bola• Jika pemain memilih gelas

tertentu, buka dan tampilkan isinya

Page 10: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

WAKTUNYA PRAKTEK!

Page 11: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Game Input• Menerima input keypad dari pemain• Memproses aksi yang bersangkutan

public void run() { while(true){ //System.out.println("Testing dulu yah..."); getInput(); flushGraphics(); try { Thread.sleep(SLEEP_TIME); } catch (InterruptedException e) { e.printStackTrace(); } }

}

private void getInput(){ int keystate = getKeyStates(); if(keystate == UP_PRESSED){ System.out.println("UP"); }else if (keystate == LEFT_PRESSED){ System.out.println("LEFT"); }else if (keystate == DOWN_PRESSED){ System.out.println("DOWN"); }else if (keystate == RIGHT_PRESSED){ System.out.println("RIGHT"); }}

1

2

3

Catatan: kemungkinan besar input akan terdeteksi lebih dari satu kali, karena Update() dipanggil beberapa kali dalam waktu yang singkat. Error ini akan kita tangani di materi berikutnya.

Page 12: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Bedah Game Magic Cups • Visual:

– Tiga buah gelas (tertutup dan terbuka)– *untuk praktek pertama kita menggunakan

text saja

• Data penting– Posisi bola (di balik gelas)– Pilihan pemain

Page 13: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Magic Cups Logic• Init

– Inisialisasi objek penting

• AcakBola– Mengacak variabel posisiBola

• PilihGelas– Meminta pemain memilih

gelas

• CekPilihanPemain– Jika pemain sudah memilih,

beri tahu hasilnya

public static int SLEEP_TIME = 1000/30;int posisiBola;int pilihanPemain;Random r; boolean gameover;boolean sudahJawab;

protected MainCanvas() { 1

public void run() { init(); acakBola(); pilihGelas(); while(!gameover){ getInput(); cekPilihanPemain(); flushGraphics(); try { Thread.sleep(SLEEP_TIME); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Game over.");} 2

Penting! Jangan lupa menambahkan import untuk objek Random.

import javax.microedition.lcdui.game.GameCanvas;import javax.microedition.lcdui.Graphics;import java.util.Random; 3

Page 14: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Fungsi-fungsi yang dibuat• Init

– Inisialisasi objek penting

• AcakBola– Mengacak variabel posisiBola

• PilihGelas– Meminta pemain memilih gelas

private void init(){ r = new Random(); gameover = false; sudahJawab = false; pilihanPemain = -1;}

1

2

private void pilihGelas(){ System.out.println("[ ] [ ] [ ]"); System.out.println("Tebak bola ada di mana."); System.out.println("Tekan kiri, atas, atau kanan untuk menebak!"); }

private void acakBola(){ posisiBola = r.nextInt(3); //0-2 //System.out.println("Posisi bola: "+posisiBola);}

2

3

Page 15: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Fungsi-fungsi yang dibuat• CekPilihanPemain

– Jika pemain sudah memilih, beri tahu hasilnyaprivate void cekPilihanPemain(){ if(sudahJawab) { //cek jawaban if(pilihanPemain == posisiBola) { System.out.println("Selamat! Tebakan anda benar!"); }else{ System.out.println("Sayang sekali tebakan anda salah! :("); } gambarHasil(); gameover=true; }}

1

private void gambarHasil() { if(posisiBola==0){ System.out.println("[o] [ ] [ ]"); System.out.println("Bola ada di kiri"); } else if(posisiBola==1){ System.out.println("[ ] [o] [ ]"); System.out.println("Bola ada di tengah"); } else if(posisiBola==2){ System.out.println("[ ] [ ] [o]"); System.out.println("Bola ada di kanan"); }}

2

Page 16: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Fungsi yang diubah• Update fungsi getInput()

untuk menerima kiri, atas, dan kanan sebagai jawaban

private void getInput(){ int keystate = getKeyStates(); if(!sudahJawab){ if (keystate == LEFT_PRESSED){ //System.out.println("LEFT"); pilihanPemain =0; sudahJawab=true; }else if(keystate == UP_PRESSED){ //System.out.println("UP"); pilihanPemain =1; sudahJawab=true; }else if (keystate == RIGHT_PRESSED){ //System.out.println("RIGHT"); pilihanPemain =2; sudahJawab=true; } } }

Page 17: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Hasil

Namun game baru berjalan sekali saja.

Jawaban salah. Jawaban benar.

Page 18: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Buat permainan bisa dimainkan terus menerus.

Page 19: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Solusiprivate void cekPilihanPemain(){ if(sudahJawab) { //cek jawaban if(pilihanPemain == posisiBola) { System.out.println("Selamat! Tebakan anda benar!"); }else{ System.out.println("Sayang sekali tebakan anda salah! :("); } gambarHasil(); //gameover=true; resetGame(); }}

private void resetGame() { acakBola(); pilihGelas(); pilihanPemain=-1; sudahJawab=false;}

1

2

public void run() { init(); acakBola(); pilihGelas(); while(!gameover){ getInput(); cekPilihanPemain(); flushGraphics(); try { Thread.sleep(SLEEP_TIME); } catch (InterruptedException e) { e.printStackTrace(); } } System.out.println("Game over.");}

resetGame()

Catatan: error pada slide 11 (Game Input) akan masih terjadi, kita akan perbaiki di Materi berikutnya.

Page 20: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Catatan: error pada slide 11 (Game Input) akan masih terjadi, kita akan perbaiki di Materi berikutnya.

Page 21: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

MINI QUESTFinish mini quest to get exp!

Page 22: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Quest (Tantangan tambahan!)

1. Review sebuah game, dan jelaskan game logic dari game tersebut (bebas, kecuali game yang sudah dibahas di materi ini)!

Page 23: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

Cara menyelesaikan Quest

1. Tulis jawaban pada email, atau dokumen word / open office (jika menggunakan gambar), dengan format nama file, nama-materikeberapa.doc

– Contoh: Danang-materi2.doc

2. Kirim email ke: [email protected]

3. Gunakan subject “Quest Online Camp 02”

Page 24: MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

Mobile Game Developer War 4: Online Camp

• Untuk menyelesaikan materi, kunjungi http://bit.ly/NxI8aZ

• Untuk pertanyaan atau diskusi, bisa dilakukan via forum: http://bit.ly/mgdw4forum