160 likes | 326 Views
PELINKEHITYS J2ME-YMPÄRISTÖSSÄ. Pauli Ojanen 3.3.2006. Sisältö. Mikä J2ME ? konfiguraatiot, profiilit, midletit Laitteistot Game API oleellisimmat luokat Pelinkehityksen työkalut ja vaiheet Pelidemo Yhteenveto. J2ME (Java 2 Micro Edition).
E N D
PELINKEHITYS J2ME-YMPÄRISTÖSSÄ Pauli Ojanen 3.3.2006
Sisältö Mikä J2ME ? konfiguraatiot, profiilit, midletit Laitteistot Game API oleellisimmat luokat Pelinkehityksen työkalut ja vaiheet Pelidemo Yhteenveto
J2ME (Java 2 Micro Edition) Rajoittuneille laitteille tarkoitettu kevyempi versio Javasta Turvallisuus Laitteistoriippumattomuus Kaksi konfiguraatiota: CDC (Connected Device Configuration), verkkoon kytketyille laitteille kuten digibokseille CLDC (Connected Limited Device Configuration), vielä rajoittuneimmille laitteille kuten matkapuhelimille
J2ME (Java 2 Micro Edition) Konfiguraatioiden päällä on profiileja MIDP (Mobile Information Device Profile) profiili matkapuhelimille MIDP mahdollistaa mm. sovellushallinnan, käyttöliittymän, tallennustilan ja verkkoyhteydet MIDP sovelluksia kutsutaan Midleteiksi
J2ME (Java 2 Micro Edition) Midletit käännetään Javan välikieleksi (bytecode) ja niiden ajamiseen tarvitaan virtuaalikone, KVM (K Virtual Machine) Midletin elinkaari on hieman samanlainen Java Appletin kanssa import javax.microedition.midlet.*; import javax.microedition.lcdui.*; public class MiniMidlet extends MIDlet { public MiniMidlet() { } public void startApp() { } public void pauseApp() { } public void destroyApp(boolean unconditional) { } }
Laitteet Nokia 3100 Nokia 6260 Nokia E61 Näytön koko Värejä CLDC versio MIDP versio 128x128 4096 1.0 1.0 320x240 16 000 000 1.1 2.0 176x208 65 536 1.0 2.0
Game API Vain MIDP 2.0:ssa Koostuu pelin tekoa helpottavista luokista Luokat auttavat: tuplapuskuroinnissa näppäinten lukemisessa hahmojen piirtämisessä ja animoinnissa hahmojen törmäysten tutkimisessa pelitasojen esittämisessä
Sprite Visuaalinen elementti joka voi olla yksi kuva tai useista kuvista koostuva animaatio Animaatiot voidaan jakaa sekvensseihin Sprite luokan oleellisimmat metodit public Sprite(Image image, int frameWidth, int frameHeight) public void setFrameSequence(int[] sequence) public void nextFrame() public void paint(Graphics g) public boolean collidesWith(Sprite s, boolean pixelLevel) public void setPosition(int x, int y) public void move(int dx, int dy)
TiledLayer Visuaalinen elementti jonka avulla voidaan esittää suuria taulukkopohjaisia karttoja/pelitasoja Koostuu “tiileistä” jotka voivat olla myös animoituja TiledLayer luokan oleellisimmat metodit public TiledLayer(int columns, int rows, Image image, int tileWidth, int tileHeight) public void setCell(int col, int row, int tileIndex) public void paint(Graphics g)
LayerManager Mahdollistaa objektien jaon tasoihin (layer) Kaikki objektit voidaan piirtää kerralla Helpottaa vierityksen (scrolling) toteutusta LayerManager luokan oleellisimmat metodit public LayerManager() public void append(Layer l) public void setViewWindow(int x, int y, int width, int height) public void paint(Graphics g)
GameCanvas Hoitaa tuplapuskuroinnin Kertoo näppäimien painalluksista GameCanvas luokan oleellisimmat metodit: public void flushGraphics() public int getKeyStates() public Graphics getGraphics()
Pelisilmukka while(gameRunning) { checkFrameStartTime(); readInput(); simulateWorld(); drawWorld(); checkFrameEndTime(); calculateSleepTime(); sleep(sleepTime); }
Pelinkehityksen työkalut ja vaiheet Työkalut J2SE (Java 2 Standard Edition) J2ME Wireless Toolkit Tekstieditori Suunnittelu Ohjelmointi Kääntäminen Testaaminen Jakelu (.jar, .jad)
Pelidemo CLDC 1.0 MIDP 2.0
Yhteenveto Game API helpottaa ja nopeuttaa pelin kehitystä Huomioon otettava näyttöjen, näppäimistöjen erilaisuus sekä CLDC ja MIDP versiot Laitteistoriippumattomuus
Materiaalia Java 2 Platform, Standard Edition (J2SE) http://java.sun.com/j2se/ Java 2 Platform, Micro Edition (J2ME) http://java.sun.com/j2me/ Sun Java Wireless Toolkit http://java.sun.com/products/sjwtoolkit/ Getting Started With the MIDP 2.0 Game API http://developers.sun.com/techtopics/mobility/midp/articles/gameapi/