Java游戏开发之一

用Java开发MMOPG游戏是一个挑战, 接下来的这个系列我将结合最近正在开发的一款网络游戏,写一些游戏开发方面的技巧。

使用Java开发游戏除了了解基本的类库,还要了解供游戏使用的多种API:

  1. 首当其冲的是全屏切换API:GraphicsDevice .setDisplayMode(DisplayMode dm)和GraphicsDevice .setFullScreenWindow(Window w),具体的使用可以参考Java教程:FullScreen
  2. 还要了解可以操作显卡内存的API,不过Java提供了很好的抽象,隐藏了底层的实现细节:Window.createBufferStrategy(int),Window.getBufferStrategy(),Frame是Window的子类,可以直接使用相关的方法,还有Canvas.createBufferStrategy(int),Canvas.getBufferStrategy()等。
  3. 使用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游戏开发之一)