Java游戏高级编程
基本信息
- 原书名: Advanced Java Game Programming
- 原出版社: Apress
编辑推荐
花代价所换来的一点才智,抵过别人传授的数倍不止。-- 本杰明·富兰克林
本书专门针对具有丰富经验、正准备和渴望将他们独特的游戏设计思想转换为部署实体的Java开发人员。
内容简介回到顶部↑
目录回到顶部↑
第1章 配置开发环境 1
1.1 升级到java 1.4 1
1.2 内核类 1
1.3 在线运行demo版程序 2
1.4 深入游戏库 3
1.4.1 croftsoft目录 3
1.4.2 arc目录 4
1.4.3 bin目录 4
1.4.4 doc目录 4
1.4.5 ext目录 5
1.4.6 lib目录 5
1.4.7 lic目录 5
1.4.8 res目录 5
1.4.9 src目录 6
1.4.10 tmp目录 6
1.5 xml简介 6
1.6 使用ant编译 7
1.7 使用开放源代码 10
1.7.1 学习版权的基本知识 10
1.7.2 选择一个许可 11
1.1 升级到java 1.4 1
1.2 内核类 1
1.3 在线运行demo版程序 2
1.4 深入游戏库 3
1.4.1 croftsoft目录 3
1.4.2 arc目录 4
1.4.3 bin目录 4
1.4.4 doc目录 4
1.4.5 ext目录 5
1.4.6 lib目录 5
1.4.7 lic目录 5
1.4.8 res目录 5
1.4.9 src目录 6
1.4.10 tmp目录 6
1.5 xml简介 6
1.6 使用ant编译 7
1.7 使用开放源代码 10
1.7.1 学习版权的基本知识 10
1.7.2 选择一个许可 11
前言回到顶部↑
花代价所换来的一点才智,抵过别人传授的数倍不止。
—— 本杰明·富兰克林
本书针对的是那些想使用最新的高性能技术,创建面向Web和桌面的复杂2D计算机游戏的Java程序员。本书循序渐进地介绍了一个可重用的动画库,每一章都依赖于前面的一些章节。在需要说明这些主题的地方,都详细地介绍了每一个新库类的源代码,并且给出了实际使用这些类的示例游戏。免费许可使您可以直接修改和调整库代码和示例游戏,开发自己的游戏程序。
目的
本书也可取名为《现代Java游戏编程》。在以前出版的Java游戏编程的书籍中介绍的很多技术和主题,已被Java编程语言和它的高级类库所淘汰。这包括像线程管理、事件管理、图形用户界面、网络通信、持久性和部署等方面。在本书中,我对这些变更作了适当的注释,并简要地对这些技术作了一些对比。
虽然通过将每一帧中需要重绘像素的数量最小化就可以在Java中创建高速的动画,但是在最近发布的Java编程语言的1.4版中引入的新类,又提供了通过可移植方式直接访问视频硬件的方法。正如在本书中介绍的一样,即使每一帧中需要更新的像素很多,也可以实现高速的帧速率。在这里介绍了一个示例程序,用来演示在真彩色高分辨率模式中,成功地将全屏动画和显示器75Hz的刷新率同步。
尽管本书最初的设计是面向游戏,但是读者应该知道这里介绍的技术也可以用在其他应用方面,包括广告和仿真。嵌在Web页面中的动画调幅广告applet会立即闪现在您的大脑中。调幅广告可以使用强大的通用编程语言(例如Java)编写的这个事实,充分发掘它们超越动画的辅助功能的潜能,包括活动数据连接。在仿真领域,学生和科学家都可以从可视化上获益。当这些模型使用Java表示的时候,用户就可以与它们进行交互、更改参数并观察新的结果。
读者对象
本书专门针对具有丰富经验、正准备和渴望将他们独特的游戏设计思想转换为部署实体的Java开发人员。对这些读者而言,从想了解有趣的游戏特定逻辑以来,一直在学习Java编程语言和实现基本的基础结构代码。
同时,这些Java高级开发人员希望详细地了解可能会影响游戏性能的可重用库中的优化选项。在介绍游戏库和本书示例游戏中的这些源代码时,我假定读者已经掌握了一些基本的主题,例如Java编程语言、面向对象的编程(Object Oriented Programming,OOP)技术、图形用户界面(Graphical User Interface,GUI)组件库,以及一些设计模式等。
范围
本书简要(没有深入地)介绍了那些虽然必需但又不是专门用于Java游戏编程的技术。这包括通用的开放源代码开发工具和通用的标准以及应用编程接口(API),这些都是很多经验丰富的Java游戏程序员已经使用过的技术。在书中,还提供了在这些方面需要进一步阅读的参考书目。
本书介绍的很多可重用库都利用了在核心Java平台里可用的最新API、当前的J2SE 1.4版。本书没有介绍那些过时的API,例如AWT(Abstract Window Toolkit)。相反,深入地研究了应用现代API的具体技术,包括Java游戏编程用于动画设计的Swing。
除了Java 2D和Image I/O API以外,Java Media API中绝大部分API都没有在本书中介绍,因为我考虑到它们在游戏开发中会有一些限制。在游戏中使用Java 3D、JMF(Java Media Framework)或者Java Speech API,就强制玩家下载安装一个可选包和它的本地代码实现。我相信这种附加的步骤将会使很多潜在的玩家退缩,尤其是那些遇到安装问题和下载延迟问题的玩家。尽管已经对J2SE内核库的一部分进行了安装,但是Java Sound API仍然需要一个soundbank文件,这个文件对有些操作系统而言是默认包含在Java运行库环境(JRE)发布中的,而对Windows而言则不是。Java共享数据工具包(Java Shared Data Toolkit,JSDT)API,尽管也可以在网络游戏中使用,但是它们好像已经被废止了。我在游戏编程里,还没有发现确实需要使用Java高级图像(Java Advanced Imaging,JAI)的地方。
本书并没有回避将Java与平台专用代码混合的Java本地接口(JNI)API的使用,但是也不鼓励这样使用。本书中给出的所有代码都是用纯粹、可移植的Java语言编写的,它们能够在所有安装有Java虚拟机的平台上运行。作为一个开发人员,我发现不使用定制的本地库也可以实现高性能。作为一个玩家,我更加喜欢用纯Java编写的游戏,因为我不必因为安全风险而烦恼,并且我知道游戏将会运行在我喜欢的平台上,而不管这是个什么平台。
本书没有介绍使用Java 2 Micro Edition(J2ME)平台进行Java游戏开发。我希望像摩尔定律中描述的那样,硬件性能的快速发展能使J2ME很快过时。如今的手持PDA使用的微处理器的性能已经与3年以前使用的最好计算机的处理器性能一样强大了。现在在PDA上安装J2SE和运行Swing应用程序已经成为可能。如果在近几年内看到J2EE运行在手表上,我将不会感到惊奇。
在学习后面的关于多玩家联网模式的相关章节时,确实需要读者具有一些J2EE的知识。然而,这也限制使用Servlet API进行开发。更为复杂的J2EE API(例如Enterprise Java Beans(EJBs))的使用方法,本书并没有进行介绍。所有示例的网络游戏都会运行在一个简单的servlet容器以内,并且也不需要安装一个完全的应用服务器。
内容简介
在第1章“配置开发环境”中,我向读者介绍了将要在整本书中使用的代码库。描述了这个库的设计,并给出了编译示例游戏的说明。可能会在游戏开发环境中使用的一些附加代码、图形和音频文件,也在本章确定了下来,还介绍了软件开发的一些流行工具。以模板的形式给出了一个演示Java游戏编程基础知识的游戏示例。
在第2章“部署框架”中,我们关注的重点是在可以安装在多种不同类型的平台上的一个框架中部署游戏。在动画线程管理技术的相关内容中,介绍了一个被广泛使用的框架接口以及applet生命周期。在对适合于游戏的不同发布而进行不同部署的选项进行了一个简要的回顾以后,给出了允许游戏部署在不同开发环境中而不需要任何修改的一个抽象层的源代码示例。
—— 本杰明·富兰克林
本书针对的是那些想使用最新的高性能技术,创建面向Web和桌面的复杂2D计算机游戏的Java程序员。本书循序渐进地介绍了一个可重用的动画库,每一章都依赖于前面的一些章节。在需要说明这些主题的地方,都详细地介绍了每一个新库类的源代码,并且给出了实际使用这些类的示例游戏。免费许可使您可以直接修改和调整库代码和示例游戏,开发自己的游戏程序。
目的
本书也可取名为《现代Java游戏编程》。在以前出版的Java游戏编程的书籍中介绍的很多技术和主题,已被Java编程语言和它的高级类库所淘汰。这包括像线程管理、事件管理、图形用户界面、网络通信、持久性和部署等方面。在本书中,我对这些变更作了适当的注释,并简要地对这些技术作了一些对比。
虽然通过将每一帧中需要重绘像素的数量最小化就可以在Java中创建高速的动画,但是在最近发布的Java编程语言的1.4版中引入的新类,又提供了通过可移植方式直接访问视频硬件的方法。正如在本书中介绍的一样,即使每一帧中需要更新的像素很多,也可以实现高速的帧速率。在这里介绍了一个示例程序,用来演示在真彩色高分辨率模式中,成功地将全屏动画和显示器75Hz的刷新率同步。
尽管本书最初的设计是面向游戏,但是读者应该知道这里介绍的技术也可以用在其他应用方面,包括广告和仿真。嵌在Web页面中的动画调幅广告applet会立即闪现在您的大脑中。调幅广告可以使用强大的通用编程语言(例如Java)编写的这个事实,充分发掘它们超越动画的辅助功能的潜能,包括活动数据连接。在仿真领域,学生和科学家都可以从可视化上获益。当这些模型使用Java表示的时候,用户就可以与它们进行交互、更改参数并观察新的结果。
读者对象
本书专门针对具有丰富经验、正准备和渴望将他们独特的游戏设计思想转换为部署实体的Java开发人员。对这些读者而言,从想了解有趣的游戏特定逻辑以来,一直在学习Java编程语言和实现基本的基础结构代码。
同时,这些Java高级开发人员希望详细地了解可能会影响游戏性能的可重用库中的优化选项。在介绍游戏库和本书示例游戏中的这些源代码时,我假定读者已经掌握了一些基本的主题,例如Java编程语言、面向对象的编程(Object Oriented Programming,OOP)技术、图形用户界面(Graphical User Interface,GUI)组件库,以及一些设计模式等。
范围
本书简要(没有深入地)介绍了那些虽然必需但又不是专门用于Java游戏编程的技术。这包括通用的开放源代码开发工具和通用的标准以及应用编程接口(API),这些都是很多经验丰富的Java游戏程序员已经使用过的技术。在书中,还提供了在这些方面需要进一步阅读的参考书目。
本书介绍的很多可重用库都利用了在核心Java平台里可用的最新API、当前的J2SE 1.4版。本书没有介绍那些过时的API,例如AWT(Abstract Window Toolkit)。相反,深入地研究了应用现代API的具体技术,包括Java游戏编程用于动画设计的Swing。
除了Java 2D和Image I/O API以外,Java Media API中绝大部分API都没有在本书中介绍,因为我考虑到它们在游戏开发中会有一些限制。在游戏中使用Java 3D、JMF(Java Media Framework)或者Java Speech API,就强制玩家下载安装一个可选包和它的本地代码实现。我相信这种附加的步骤将会使很多潜在的玩家退缩,尤其是那些遇到安装问题和下载延迟问题的玩家。尽管已经对J2SE内核库的一部分进行了安装,但是Java Sound API仍然需要一个soundbank文件,这个文件对有些操作系统而言是默认包含在Java运行库环境(JRE)发布中的,而对Windows而言则不是。Java共享数据工具包(Java Shared Data Toolkit,JSDT)API,尽管也可以在网络游戏中使用,但是它们好像已经被废止了。我在游戏编程里,还没有发现确实需要使用Java高级图像(Java Advanced Imaging,JAI)的地方。
本书并没有回避将Java与平台专用代码混合的Java本地接口(JNI)API的使用,但是也不鼓励这样使用。本书中给出的所有代码都是用纯粹、可移植的Java语言编写的,它们能够在所有安装有Java虚拟机的平台上运行。作为一个开发人员,我发现不使用定制的本地库也可以实现高性能。作为一个玩家,我更加喜欢用纯Java编写的游戏,因为我不必因为安全风险而烦恼,并且我知道游戏将会运行在我喜欢的平台上,而不管这是个什么平台。
本书没有介绍使用Java 2 Micro Edition(J2ME)平台进行Java游戏开发。我希望像摩尔定律中描述的那样,硬件性能的快速发展能使J2ME很快过时。如今的手持PDA使用的微处理器的性能已经与3年以前使用的最好计算机的处理器性能一样强大了。现在在PDA上安装J2SE和运行Swing应用程序已经成为可能。如果在近几年内看到J2EE运行在手表上,我将不会感到惊奇。
在学习后面的关于多玩家联网模式的相关章节时,确实需要读者具有一些J2EE的知识。然而,这也限制使用Servlet API进行开发。更为复杂的J2EE API(例如Enterprise Java Beans(EJBs))的使用方法,本书并没有进行介绍。所有示例的网络游戏都会运行在一个简单的servlet容器以内,并且也不需要安装一个完全的应用服务器。
内容简介
在第1章“配置开发环境”中,我向读者介绍了将要在整本书中使用的代码库。描述了这个库的设计,并给出了编译示例游戏的说明。可能会在游戏开发环境中使用的一些附加代码、图形和音频文件,也在本章确定了下来,还介绍了软件开发的一些流行工具。以模板的形式给出了一个演示Java游戏编程基础知识的游戏示例。
在第2章“部署框架”中,我们关注的重点是在可以安装在多种不同类型的平台上的一个框架中部署游戏。在动画线程管理技术的相关内容中,介绍了一个被广泛使用的框架接口以及applet生命周期。在对适合于游戏的不同发布而进行不同部署的选项进行了一个简要的回顾以后,给出了允许游戏部署在不同开发环境中而不需要任何修改的一个抽象层的源代码示例。








点击看大图



加载中...


