Teknologi Game | ratnokustiawan.wordpress.com
1
Materi 2
Menampilkan peta di Game Tools yang dibutuhkan
1. JDK 6ux
2. Notepad++/Netbeans 6.x/JDeveloper/Eclipse
Didalam menampilkan peta yang sudah kita buat, kita akan menggunakan Slick2D sebagai sebuah frameworknya.
1. Memulai project game, silahkan anda jalankan Netbeans anda 2. Kemudian silahkan anda pilih File New Project
3. Maka akan muncul window berikut
Teknologi Game | ratnokustiawan.wordpress.com
2 4. Ketika muncul window berikut, silahkan anda sesuaikan seperti berikut
Project Name : MyFirstRPG
Project Location : Folder anda
Use Dedicated Folder for Storing Libraries : Beri tanda check
Create Main Class : Beri tanda check dan beri nama rpg.Main
Kemudian klik Finish
5. Maka anda akan mendapatkan tampilan seperti berikut
6. Silahkan anda pastikan bahwa anda memiliki folder Slick2D di computer anda masing2, folder ini berisi semua library dan javadoc dari slick2d game framework
Teknologi Game | ratnokustiawan.wordpress.com
3 7. Untuk memasukkan library Slick2D ke project game anda silahkan anda pilih project game anda
kemudian anda cari Libraries lalu klik kanan Add JAR/Library
8. Silahkan pilih file dengan extensi jar, jangan anda pilih folder javadoc dan folder native content dari folder Slick2D, jangan lupa anda pilih Copy to Libraries Folder
Kemudian klik Open
Ketika muncul Question yang menanyakan bahwa anda akan mengkopikan semua file dan content dari folder?, silahkan anda pilih Yes
Teknologi Game | ratnokustiawan.wordpress.com
4 9. Maka anda akan mendapatkan tampilan sebagai berikut
10. Silahkan anda pilih Tab Files
11. Buka windows explorer anda kemudian anda masuk ke folder Slick2D, pilih folder Native dan Javadoc lalu anda Copy
Teknologi Game | ratnokustiawan.wordpress.com
5 12. Folder native berisi engine LWJGL dan JOGL yang merupakan library native, library ini
dibutuhkan dikarenakan Slick2D menggunakan LWJGL dan JOGL sebagai corenya. 13. Silahkan anda paste melalui netbeans pada tab files, silahkan anda pilih folder lib
Teknologi Game | ratnokustiawan.wordpress.com
6 15. Silahkan anda kopy folder image dan file mission1.tmx kedalam paket rpg pada netbeans,
sehingga tampilannya sebagai berikut
16. Klik kanan project MyFirstRGP kemudian pilih Properties 17. Pada tree Categories pilih run, pada VM Options silahkan isikan
-Djava.library.path=lib/native
State Based Game
State Based Game memungkinkan game untuk dipecah kedalam aktivitas berbeda yang bias dilalui oleh pemain, seperti Menu, HighScore, Play dan Credits.
18. Silahkan anda tambahkan 1 buah kelas bernama StateManagement, pada tampilan tampak seperti berikut
Maka anda akan mendapatkan source code berikut
Dibaca : sebuah kelas dengan nama StateManagement yang terletak pada paket rpg package rpg;
public class StateManagement { }
Teknologi Game | ratnokustiawan.wordpress.com
7 19. Buat agar kelas StateManagement menjadi turunan dari kelas , tambah kode program anda agar
seperti yang dicetak tebal berikut berikut
Dibaca :
Kelas StateManagement adalah turunan dari kelas StateBasedGame, dikarenakan kelas
StateBasedGame memiliki konstruktor yang parameternya berjumlah 1 dan bertipe String maka pada konstruktor StateManagement harus ditambahkan super(“My FirstGame”).
Kelas StateBasedGame adalah sebuah kelas Abstract yang memiliki method abstract
initStateList, maka kelas yang menjadi turunan dari StateBasedGame diwajibkan untuk
mengimplementasikan method initStateList. 20. Tambahkan sebuah kelas dengan nama Mission1
package rpg;
import org.newdawn.slick.GameContainer; import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
public class StateManagement extends StateBasedGame {
public StateManagement() { super("My First Game"); }
@Override
public void initStatesList(GameContainer gc) throws SlickException { throw new UnsupportedOperationException("Not supported yet."); }
}
package rpg;
public class Mission1 { }
Teknologi Game | ratnokustiawan.wordpress.com
8 21. Buat agar kelas Mission1 menjadi turunan dari kelas BasicGameState
Dibaca :
Kelas mission1 adalah turunan dari kelas BasicGameState, didalam kelas ini diimplementasikan method init, render,getID dan update.
22. Tambahkan kelas RPGMap package rpg; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.BasicGameState; import org.newdawn.slick.state.StateBasedGame;
public class Mission1 extends BasicGameState { @Override
public int getID() {
throw new UnsupportedOperationException("Not supported yet."); }
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException { throw new UnsupportedOperationException("Not supported yet.");
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics grphcs) throws SlickException { throw new UnsupportedOperationException("Not supported yet.");
}
public void update(GameContainer gc, StateBasedGame sbg, int i) throws SlickException { throw new UnsupportedOperationException("Not supported yet.");
}
}
package rpg;
public class RPGMap { }
Teknologi Game | ratnokustiawan.wordpress.com
9 23. Ubah agar kelas RPGMap merupakan kelas turunan TiledMap, kemudian sesuaikan dengan kode
program berikut
Dibaca :
Kelas RPGMap merupakan TiledMap, kelas ini memerlukan sebuah konstruktor yang memiliki parameter ref dengan type String dan memanggil konstruktor dari kelas TiledMap yang berkonstruktor 1 buah dengan tipe String.
24. Ubah kelas main agar seperti kode program berikut
Dibaca :
Pada method main yang terdapat pada Kelas Main, akan mencoba membuat object container dari Kelas AppGameContainer. Method ini meminta parameter yang diisi dengan Objcet yang dihasilkan dari parameter kelas StateManagement dan akan menghasilkan game dengan ukuran screen 800x600 serta tidak fullscreen.
Kemudian akan memanggil method start dari object container untuk menjalankan game. Apabila gagal maka akan melakukan Log terhadap error yang terjadi.
package rpg;
import org.newdawn.slick.SlickException; import org.newdawn.slick.tiled.TiledMap;
public class RPGMap extends TiledMap {
public RPGMap(String ref) throws SlickException {
super(ref); } } package rpg; import java.util.logging.Level; import java.util.logging.Logger; import org.newdawn.slick.AppGameContainer; import org.newdawn.slick.SlickException;
public class Main {
public static void main(String[] args) { try {
AppGameContainer container = new AppGameContainer(new StateManagement(), 800, 600, false); container.start();
} catch (SlickException ex) {
Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex); }
} }
Teknologi Game | ratnokustiawan.wordpress.com
10 25. Silahkan anda buka kelas StateManagement.java, kemudian anda cari method initStatesList,
silahkan anda panggil method addState yang meminta parameter GameState, isi parameter anda isi dengan new Mission1()
addState(new Mission1());
Sehingga tampak seperti kode program berikut (tambahkan kode program yang dicetak tebal)
Dibaca :
Method initStatesList akan memanggil method addState, kemudian akan meregister Mission1 menjadi aktivitas yang akan ditampilkan
package rpg;
import org.newdawn.slick.GameContainer; import org.newdawn.slick.SlickException;
import org.newdawn.slick.state.StateBasedGame;
public class StateManagement extends StateBasedGame { public StateManagement() {
super("My First Game"); }
@Override
public void initStatesList(GameContainer gc) throws SlickException { addState(new Mission1());
} }
Teknologi Game | ratnokustiawan.wordpress.com
11 26. Kemudian silahkan anda buka kelas Mission1.java dan lihat kode program berikut
Dibaca :
Object rpgMap adalah object yang dibuat dari kelas RPGMap
Attribute STATE_ID adalah sebuah attribute bertipe int yang dapat diakses dari kelas manapun tanpa membuat object dari kelas RPGMap karena memiliki penanda static Pada method getID akan mengembalikan nilai dari attribute STATE_ID
Method init akan melakukan inisialisasi object rpgMap dengan memanggil konstruktor dari kelas RPGMap yang pada parameternya diberikan lokasi peta dan nama peta yang hendak di load.
Pada method rendeer akan memangil method render dari object rpgMap, method itu akan meletakkan peta pada posisi 0,0 atau kiri atas, kemudian perlayer.
package rpg; import org.newdawn.slick.GameContainer; import org.newdawn.slick.Graphics; import org.newdawn.slick.SlickException; import org.newdawn.slick.state.BasicGameState; import org.newdawn.slick.state.StateBasedGame; public class Mission1 extends BasicGameState {
private RPGMap rpgMap; public static int STATE_ID = 1;
@Override public int getID() { return STATE_ID; }
public void init(GameContainer gc, StateBasedGame sbg) throws SlickException { rpgMap = new RPGMap("rpg/mission1.tmx");
}
public void render(GameContainer gc, StateBasedGame sbg, Graphics grphcs) throws SlickException {
rpgMap.render(0, 0, 0); rpgMap.render(0, 0, 1); rpgMap.render(0, 0, 2); rpgMap.render(0, 0, 3); rpgMap.render(0, 0, 4); rpgMap.render(0, 0, 5); }
public void update(GameContainer gc, StateBasedGame sbg, int i) throws SlickException { }
Teknologi Game | ratnokustiawan.wordpress.com
12 27. Silahkan anda running (F6), kurang lebih hasilnya akan tampak seperti berikut