Java游戏开发之一
2007-05-19 11:46
323 查看
用Java开发MMOPG游戏是一个挑战, 接下来的这个系列我将结合最近正在开发的一款网络游戏,写一些游戏开发方面的技巧。
使用Java开发游戏除了了解基本的类库,还要了解供游戏使用的多种API:
首当其冲的是全屏切换API:GraphicsDevice .setDisplayMode(DisplayMode dm)和GraphicsDevice .setFullScreenWindow(Window w),具体的使用可以参考Java教程:FullScreen
还要了解可以操作显卡内存的API,不过Java提供了很好的抽象,隐藏了底层的实现细节:Window.
使用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();
}
}
上边这段代码创建适应全屏或者窗口模式的硬件加速对象BufferStrategy.
Graphics g = bs.getDrawGraphics();
try {
render((Graphics2D)g);
if(bs.contentsLost()) {
Thread.yield();
}
} finally {
g.dispose();
}
bs.show();
上边这段代码得到硬件加速的Graphics,将游戏中的Sprite进行绘制后通过调用show方法显示到屏幕上。
使用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();
}
}
上边这段代码创建适应全屏或者窗口模式的硬件加速对象BufferStrategy.
Graphics g = bs.getDrawGraphics();
try {
render((Graphics2D)g);
if(bs.contentsLost()) {
Thread.yield();
}
} finally {
g.dispose();
}
bs.show();
上边这段代码得到硬件加速的Graphics,将游戏中的Sprite进行绘制后通过调用show方法显示到屏幕上。
相关文章推荐
- Java在游戏服务器开发中的应用
- JAVA游戏开发之FPS精准控制
- 人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
- 人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[6]——走马观花
- 人生如梦游戏间,JAVA游戏开源开发讲座[番外篇]之AVG开发——皮影
- java开发sns游戏服务需要注意的问题
- Java版AVG游戏开发入门[0]——游戏模式转换中的事件交互
- Java游戏开发案例-方块游戏
- JAVA游戏编程之三----j2se 手机游戏入门开发--俄罗斯方块_1
- 人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[2]——踏破红尘
- android开发之网络棋牌类在线游戏开发心得(服务器端、Java) 好文章值得收藏
- 【开源java游戏框架libgdx专题】-13-开发工具-地图的使用
- Java游戏开发前景
- 人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[1]——风云初现
- 关于Java游戏开发中应始终坚持的10项基本原则
- JAVA游戏入门开发DAY 4 添加主角
- Java开发的游戏之三 坦克大战 完整源代码
- 利用Java Swing 实现游戏开发-Java基础-Java-编程开发
- JAVA开发的华容道游戏
- 专业 Java 游戏开发教程:来自 Game Developers Conference 2004