1 Teknologi Game 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 1 Silahkan anda pilih Categories Java dan Projects Java Application kemudian Next
2 Teknologi Game 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 2
3 Teknologi Game 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 3
4 Teknologi Game 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 4
5 Teknologi Game 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 14. Maka tampilannya akan seperti berikut 5
6 Teknologi Game 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 public class StateManagement { Dibaca : sebuah kelas dengan nama StateManagement yang terletak pada paket rpg 6
7 Teknologi Game 19. Buat agar kelas StateManagement menjadi turunan dari kelas, tambah kode program anda agar seperti yang dicetak tebal berikut berikut 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."); 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 public class Mission1 { 7
8 Teknologi Game 21. Buat agar kelas Mission1 menjadi turunan dari kelas BasicGameState 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."); Dibaca : Kelas mission1 adalah turunan dari kelas BasicGameState, didalam kelas ini diimplementasikan method init, render,getid dan update. 22. Tambahkan kelas RPGMap public class RPGMap { 8
9 Teknologi Game 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 import org.newdawn.slick.slickexception; import org.newdawn.slick.tiled.tiledmap; public class RPGMap extends TiledMap { public RPGMap(String ref) throws SlickException { super(ref); 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); 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. 9
10 Teknologi Game 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) 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()); Dibaca : Method initstateslist akan memanggil method addstate, kemudian akan meregister Mission1 menjadi aktivitas yang akan ditampilkan 10
11 Teknologi Game 26. Kemudian silahkan anda buka kelas Mission1.java dan lihat kode program berikut 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 { 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. 11
12 Teknologi Game 27. Silahkan anda running (F6), kurang lebih hasilnya akan tampak seperti berikut 12