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

1,381 views

Published on

Materi kedua Online Cmap MGDW4

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,381
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
95
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Game Loop merupakan jantung dari sebuah game. Biasanya Game Loop menangani user input, update game state, menangani AI, memainkan musik dan sound effect, dan menampilkan display game.
  • Bikin beberapa contoh game loop dan hal yang dilakukan: pong, minesweeper
  • Contoh game loop yang general
  • Prosesmemasukkanide game kedalamsebuahmekanikapermainanseringdisebutjuga Game Logic.Dimana game logic inimengaturbagaimanamekanisme game terbentuk. Mulaidaribagaimana char bergerak, melompat, bertemumusuh, highscore, dan lain – lain. Bahkanuntuk game puzzle, game logic lebihfokusterhadap problem solving.Misalnyapada game Sudoku, kitafokuskepadabagaimanamelakukanpengecekanterhadap angka yang kitamasukkankedalamkotak, cekapakahada angka yang samadalamsatukolomataubarisdancekapakahdalamkotak 3x3 ada angka yang samaatautidak.
  • MGDW4 Online Camp #2 (Game loop, game logic, dan game input)

    1. 1. Mobile Game Developer War 4: Online CampMGDW4 Online Camp #2 Game Loop, Game Logic, dan Game Input
    2. 2. Mobile Game Developer War 4: Online Camp DefinisiPotongan kode utama yang dijalankan terus menerus.
    3. 3. Mobile Game Developer War 4: Online CampContoh Game Loopsederhana
    4. 4. Mobile Game Developer War 4: Online CampContoh game loop public void run() {pada J2ME //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) { } } }
    5. 5. Mobile Game Developer War 4: Online CampGame Logic
    6. 6. Mobile Game Developer War 4: Online Camp DefinisiImplementasi game design menjadi algoritma pemrograman.
    7. 7. Mobile Game Developer War 4: Online CampContoh: 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
    8. 8. 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
    9. 9. Mobile Game Developer War 4: Online CampContoh: Magic Cups • Acak posisi bola • Jika pemain memilih gelas tertentu, buka dan tampilkan isinya
    10. 10. Mobile Game Developer War 4: Online CampWAKTUNYA PRAKTEK!
    11. 11. Mobile Game Developer War 4: Online Camp Game Input • Menerima input keypad dari pemain public void run() { 1 while(true){ • Memproses aksi yang bersangkutan //System.out.println("Testing dulu yah...");private void getInput() getInput();{ 2 flushGraphics(); try { int keystate = getKeyStates(); Thread.sleep(SLEEP_TIME); if(keystate == UP_PRESSED){ } catch (InterruptedException e) { System.out.println("UP"); e.printStackTrace(); }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"); }}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. 3
    12. 12. 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
    13. 13. Mobile Game Developer War 4: Online Camp Magic Cups Logicpublic static int SLEEP_TIME = 1000/30;int posisiBola; • Initint pilihanPemain; – Inisialisasi objek pentingRandom r;boolean gameover; • AcakBolaboolean sudahJawab; – Mengacak variabelprotected MainCanvas() { 1 posisiBolapublic void run() { • PilihGelas init(); – Meminta pemain memilih acakBola(); pilihGelas(); gelas while(!gameover){ getInput(); • CekPilihanPemain cekPilihanPemain(); – Jika pemain sudah memilih, flushGraphics(); try { beri tahu hasilnya Thread.sleep(SLEEP_TIME); } catch (InterruptedException e) { Penting! Jangan lupa e.printStackTrace(); menambahkan import } untuk objek Random. } import javax.microedition.lcdui.game.GameCanvas; System.out.println("Game over."); import javax.microedition.lcdui.Graphics;} 2 import java.util.Random; 3
    14. 14. Mobile Game Developer War 4: Online Camp Fungsi-fungsi yang dibuat• Init – Inisialisasi objek penting private void init(){ 1• AcakBola r = new Random(); gameover = false; – Mengacak variabel posisiBola sudahJawab = false;• PilihGelas } pilihanPemain = -1; – Meminta pemain memilih gelasprivate void acakBola(){ 2 posisiBola = r.nextInt(3); //0-2 //System.out.println("Posisi bola: "+posisiBola);}private void pilihGelas(){ System.out.println("[ ] [ ] [ ]"); 3 System.out.println("Tebak bola ada di mana."); System.out.println("Tekan kiri, atas, atau kanan untuk menebak!");} 2
    15. 15. Mobile Game Developer War 4: Online Camp Fungsi-fungsi yang dibuat• CekPilihanPemain – Jika pemain sudah memilih, beri tahu hasilnyaprivate void cekPilihanPemain(){ if(sudahJawab) 1 { //cek jawaban if(pilihanPemain == posisiBola) { System.out.println("Selamat! Tebakan anda benar!"); }else{ System.out.println("Sayang sekali tebakan anda salah! :("); } private void gambarHasil() { gambarHasil(); if(posisiBola==0){ 2 gameover=true; 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"); } }
    16. 16. Mobile Game Developer War 4: Online Camp Fungsi yang diubah• Update fungsi getInput() untuk menerima kiri, atas, private void getInput() { dan kanan sebagai int keystate = getKeyStates(); if(!sudahJawab){ jawaban 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; } } }
    17. 17. Mobile Game Developer War 4: Online Camp HasilJawaban salah. Jawaban benar.Namun game baru berjalan sekali saja.
    18. 18. Mobile Game Developer War 4: Online CampBuat permainan bisa dimainkan terus menerus.
    19. 19. Mobile Game Developer War 4: Online Camp Solusiprivate void cekPilihanPemain(){ if(sudahJawab) 1 { public void run() { //cek jawaban init(); if(pilihanPemain == posisiBola) acakBola(); { pilihGelas(); System.out.println("Selamat! while(!gameover){Tebakan anda benar!"); getInput(); resetGame() }else{ cekPilihanPemain(); System.out.println("Sayang sekali flushGraphics();tebakan anda salah! :("); try { } Thread.sleep(SLEEP_TIME); gambarHasil(); } catch (InterruptedException e) { //gameover=true; e.printStackTrace(); resetGame(); } } }} System.out.println("Game over."); }private void resetGame() { acakBola(); pilihGelas(); Catatan: error pada slide 11 (Game pilihanPemain=-1; Input) akan masih terjadi, kita akan sudahJawab=false; perbaiki di Materi berikutnya.} 2
    20. 20. Mobile Game Developer War 4: Online Camp Catatan: error pada slide 11 (Game Input) akan masih terjadi, kita akan perbaiki di Materi berikutnya.
    21. 21. Mobile Game Developer War 4: Online CampFinish mini quest to get exp!MINI QUEST
    22. 22. 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)!
    23. 23. Mobile Game Developer War 4: Online Camp Cara menyelesaikan Quest1. Tulis jawaban pada email, atau dokumen word / open office (jika menggunakan gambar), dengan format nama file, nama- materikeberapa.doc – Contoh: Danang-materi2.doc2. Kirim email ke: quest@agateacademy.com3. Gunakan subject “Quest Online Camp 02”
    24. 24. 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

    ×