|
Programiranje Programski jezici, tehnike, alatke... |
|
Alatke vezane za temu | Vrste prikaza |
18.12.2008, 21:20 | #1 |
V.I.P. Programiranje
|
Spike2D Engine
Evo ja prebirem po naslagama fajlova u mom kompu i nailazim na jednu davno napuštenu igru rađenu u Java 2 Mobile Edition. To je, zapravo, ova igra, samo što je tada bila zamišljena za mobilne platforme (J2ME).
Unutar igre sam našao jedan engine po imenu Spike2D koji sam ja pisao i razvio ga za potrebe te igre. Pošto je ovaj mobilni projekat napušten, postovaću kod Spike2D-a (koji je završen ali još mnogo interesantnih stvari može da se doda), zbog toga što je, barem meni izgleda, dobra odskočna daska za početak rada na mobilnim platformama. Sve mogućnosti engine-a su testirane pomoću primera ali jedino ne znam ponašanje kada je environment veći od veličine ekrana mobilnog uređaja (mada trebalo bi da je OK). Engine je zamišljen za prikazivanje igara iz ptičje perspektive (nešto kao Fantasy Warrior). Ima mogućnost pravljenja fiksnog environmenta, objekata (tj. Sprite-ova sa animacijom), sposobnost detekcije kolizije i maksimum 200 objekata. Primetio sam neke nedostatke u kodu ali pošto nemam vremena neki forumaš dobre volje bi mogao da malo unapredi ovaj engine. Engine je 100% besplatan, a ako već pravite komercijalnu igru dovoljno je samo Created with Spike2D Engine by Geomaster u credits-ima, ili slično. Engine se može distributirati i nije zaštićen licencom, neko ga čak može prisvojiti za sebe - ako neko to želi, to ide na njegovu dušu Možete i svakoj GameObject klasi dodati proizvoljan broj stringova (nešto kao tagovi). Ako nekom treba pomoć oko upotrebe, kontaktirajte me da bih malo proučio kako sam napisao engine ali zbog nedostatka vremena ništa ne garantujem. Sad tek shvatam sa je sample kod za engine negde nestao, verovatno sam ga izbrisao Nadam se da ćete iz source koda uspeti da izvučete kako se engine koristi pošto sam ja zaboravio dosta toga (jul je davno bio ). |
18.12.2008, 21:21 | #2 |
V.I.P. Programiranje
|
Re: Spike2D Engine
Kod Spike2D.java fajla:
Kod:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Spike2DEngine; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.*; /** * * @author DAVID */ public class Spike2D { GameObject sprites[]; LayerManager layers; TiledLayer environment; Graphics graphCache; int cameraX; int cameraY; int viewFieldW; int viewFieldH; int counter; public Spike2D(Graphics graphicInfo) { System.out.println("Dodjosmo mi i do konstruktora ;)"); graphCache = graphicInfo; System.out.println("Kreaceija Layerman-a!!!"); layers = new LayerManager(); sprites = new GameObject[200]; } public void createEnvironment(int cellsX,int cellsY,int imgWidth, int imgHeight, Image tiles) { System.out.println("kamenac u zubima"); environment = new TiledLayer(cellsX,cellsY,tiles,imgWidth,imgHeight); System.out.println("Domestos je unistio kamenac u zubima... ;);)"); layers.append(environment); } public TiledLayer getEnvironment() { return environment; } public void setEnvironment(TiledLayer env) { environment=env; } public void quickSetCell(int col, int row, int tileID) { environment.setCell(col, row, tileID); } public void setEnvironmentByArray(int[] arr) { for (int k=0;k < (environment.getColumns() * environment.getRows());k++) { int column = k % environment.getColumns(); int row = (k - column) / environment.getRows(); System.out.println(arr[k]); environment.setCell(column,row,arr[k]); } } public void paintAll(int xBegin,int yBegin,int xEnd, int yEnd) { int cClipX; int cClipY; int cClipW; int cClipH; System.out.println("gwahaha..."); cClipX=graphCache.getClipX(); cClipY=graphCache.getClipY(); cClipW=graphCache.getClipWidth(); cClipH=graphCache.getClipHeight(); graphCache.setClip(xBegin, yBegin, xEnd, yEnd); layers.paint(graphCache, cameraX - (environment.getWidth()/2), cameraY - (environment.getHeight()/2)); System.out.println("mwahaha"); graphCache.setClip(cClipX,cClipY,cClipW,cClipH); } public void setCameraX(int newX) { cameraX=newX; } public void setCameraY(int newY) { cameraY=newY; } public int getCameraX() { return cameraX; } public int getCameraY() { return cameraY; } public GameObject getObjectByID(int sprID) { return sprites[sprID]; } public void setObject(GameObject newObj, int ID) { sprites[ID] = new GameObject(newObj); } public void appendObject(int objID) { layers.insert(sprites[objID].getSprite(),0); } public void remObject(int objID) { layers.remove(sprites[objID].getSprite()); } public Sprite checkForCollision(GameObject gameObj) { Sprite collSprite; Sprite sprite1; sprite1=gameObj.getSprite(); collSprite=null; for (int i=0;i < (layers.getSize() - 1);i++) { if (sprite1.collidesWith((Sprite)layers.getLayerAt(i), true)) { collSprite = (Sprite)layers.getLayerAt(i); } } return collSprite; } } Kod:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Spike2DEngine; import javax.microedition.midlet.*; import javax.microedition.lcdui.*; import javax.microedition.lcdui.game.*; /** * * @author DAVID */ public class GameObject { Sprite mySprite; String myStrings[]; public GameObject() { } public GameObject(GameObject pbX) { mySprite=pbX.getSprite(); myStrings=pbX.getStringTags(); } public void setSprite(Sprite newSpr) { mySprite=newSpr; } public Sprite getSprite() { return mySprite; } public String getStringTag(int tagID) { return myStrings[tagID]; } public void setStringTag(int tagID,String newString) { myStrings[tagID] = newString; } public String[] getStringTags() { return myStrings; } } |
Bookmarks sajtovi |
Alatke vezane za temu | |
Vrste prikaza | |
|
|
Slične teme | ||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Direct3D 9 Engine | Geomaster | Programiranje | 21 | 24.10.2008 17:00 |
Koji mi engine preporucujete??? | PeTkO | Pravljenje igara | 8 | 26.7.2007 13:45 |
2d game engine | Damjan | Pravljenje igara | 48 | 22.6.2007 11:35 |
N2D Engine | EclipsE | Pravljenje igara | 4 | 22.8.2006 23:34 |