【发布时间】:2014-09-01 08:18:14
【问题描述】:
我正在用java制作一个游戏,是一个rpg,但是,只有地图游戏很慢。 地图是在 TiledMap Editor 中制作的,因此是一个被读取并加载到 ArrayList 中的 XML。我的电脑是双核 3.0、4GB RAM、1GB 视频。 渲染完成如下:
//method of tileset class
public void loadTileset(){
positions = new int[1 + tilesX * tilesY][2];
int yy = 0;
int xx = 0;
int index = 0;
// save the initial x and y point of each tile in an array named positions
// positions[tileNumber] [0] - X position
// positions[tileNumber] [1] - Y position
for(int i = 1 ; i < positions.length; i++){
if(index == tilesX ){
yy += tileHeight;
xx = 0;
index = 0;
}
positions[i][0] = xx;
positions[i][1] = yy;
xx += tileWidth;
index++;
}
}
//method of map class
public void draw(Graphics2D screen){
//x and y position of each tile on the screen
int x = 0; int y = 0;
for(int j = 0; j < 20 ; j++){
for(int i = initialTile ; i < initialTile + quantTiles ; i++){
int tile = map[j][i];
if(tile != 0){
screen.drawImage(tileSet.getTileImage().getSubimage(tileSet.getTileX(tile), tileSet.getTileY(tile),tileSet.getTileWidth(), tileSet.getTileHeight()),x,y,null);
}
x += tileSet.getTileWidth();
}
x = 0;
y += tileSet.getTileHeight();
}
}
我做错了吗? 注意:我是论坛的新手,更糟糕的是,我不太懂英语,如有错误请见谅。
【问题讨论】:
-
这里很难看到任何明显的错误。您可能想尝试使用分析器(例如应该包含在 JDK 中的
visualvm)并使用它来查找花费最多时间的内容。 -
您多久重绘一次地图?您使用的是什么图像子类型?最后,AWT 和 Swing 都很慢,请考虑使用更快的 2D 图形库。
-
@KarolS AWT 和 Swing 不慢。 (无意冒犯,只是提一下……)
-
@Marco 与实际的面向游戏的库相比,它们是。好吧,也许不是 AWT,我从未使用过它,但在使用 Swing 后,我在 Slick2D 中重新渲染主窗口后发现了巨大的性能差异。