用Java开发MMOPG游戏是一个挑战, 接下来的这个系列我将结合最近正在开发的一款网络游戏,写一些游戏开发方面的技巧。
使用Java开发游戏除了了解基本的类库,还要了解供游戏使用的多种API:
- 首当其冲的是全屏切换API:GraphicsDevice .setDisplayMode(DisplayMode dm)和GraphicsDevice .setFullScreenWindow(Window w),具体的使用可以参考Java教程:FullScreen
- 还要了解可以操作显卡内存的API,不过Java提供了很好的抽象,隐藏了底层的实现细节:Window.
createBufferStrategy(int)
,Window.getBufferStrategy()
,Frame是Window的子类,可以直接使用相关的方法,还有Canvas.createBufferStrategy(int)
,Canvas.getBufferStrategy()
等。 - 使用Java的这些API有很多技巧,下边是我们项目中的一段例子代码:
private void show() {
if (fullScreen) {
if (fullScreenFrame == null ) {
fullScreenFrame = createFrame(fullScreen);
}
device.setFullScreenWindow(fullScreenFrame);
changeDisplayMode(displayMode);
fullScreenFrame.createBufferStrategy( 2 );
bs = fullScreenFrame.getBufferStrategy();
} else {
if (normalFrame == null ) {
normalFrame = createFrame(fullScreen);
}
normalFrame.pack();
normalFrame.setLocationRelativeTo( null );
normalFrame.setVisible( true );
canvas.requestFocus();
canvas.createBufferStrategy( 2 );
bs = canvas.getBufferStrategy();
}
}Graphics g = bs.getDrawGraphics();
try {
render((Graphics2D)g);
if (bs.contentsLost()) {
Thread.yield();
}
} finally {
g.dispose();
}
bs.show();