[Java游戏高级编程]游戏开发经典丛书 ,电子书籍PDF下载

 Abyss   2019-12-13 05:12   481 人阅读  0 条评论

本书没有介绍使用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生命周期。在对适合于游戏的不同发布而进行不同部署的选项进行了一个简要的回顾以后,给出了允许游戏部署在不同开发环境中而不需要任何修改的一个抽象层的源代码示例。

  在第3章“Swing动画”中,介绍了一个基于Swing的动画库,这个动画库会在整本书中使用。这一章主要考虑的问题是动画的性能和灵活性。在介绍核心动画引擎类的源代码时简单介绍了优化权衡。

  在第4章“动画库”中,介绍了通用动画任务的一个类集合。这些类提供了很多功能,例如场景管理和Sprite实现。它们也用来介绍怎样开发与核心动画引擎类互操作的游戏特定代码。

  在第5章“高级图形技术”中,介绍了高级图形技术,包括硬件加速图形、多缓冲和全屏独占模式。给出了使这些技术的使用变得更加方便的可重用类和使用这些可重用类的示例游戏。对其中的每一个技术,都介绍了关于它们使用方法的一些限制。

  在第6章“持久数据”中,对在各种部署框架中加载和保存游戏数据的机制进行了对比。在这个过程中还介绍了可以用于大多数游戏编程的可重用数据持久性的类库。对更加高级的持久性需求的其他选择也进行了考虑。

  在第7章“游戏体系结构”中,介绍了适合于Java游戏开发的面向对象的软件体系结构的优点。使用这种体系结构的一个示例游戏是作为新游戏开发模板进行介绍的。本章还简单介绍了一下数据驱动的设计.

  在第8章“A*算法”中,介绍了现在在游戏行业中最流行和最常用的一个人工智能(AI)算法的实现。本章还介绍了使用A*算法绕过障碍物寻找路径的示例。

  在第9章“HTTP隧道技术”中,介绍一个可以在大部分Java游戏部署环境里常见的安全限制以内进行操作的一个联网库。本章还给出了一个示例,在这个示例中,数据在服务器和客户机之间进行传递。

  在第10章“HTTP轮询机制”中,将联网库扩展以支持在线多玩家游戏。使用轮询来同步客户机和服务器上的游戏状态。在由单玩家游戏向多玩家联网游戏的转换中,介绍了我所推荐的软件体系结构的灵活性。

  在第11章“HTTP Pulling机制”中,事件驱动的消息是作为轮询的另一个选择而推荐使用的。使用在前面两章中介绍的这些类,演示了这是怎样在无符号applet的安全限制以内实现的。使用这些技术进行进一步开发的一些建议已经超出了本书的范围,这里只进行简单的介绍。

Java游戏高级编程

目 录  1.1 升级Java

  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.7.3 重命名修改后的代码 13    1.7.4 共享源代码 13    1.8 为游戏获取多媒体资源 13    1.8.1 图片资源 13    1.8.2 音频资源 14    1.9 基本示例 15    1.9.1 修改源代码 15    1.9.2 修改构建文件 26    1.10 小结 27     1.11 参考文献 27

  第2章 部署框架 28

  2.1 部署为applet 28    2.1.1 实现生命周期方法 28    2.1.2 管理applet动画线程 30    2.1.3 读取JAR文件 34    2.1.4 使用插件升级客户端 36    2.1.5 了解存在的限制 38    2.1.6 applet签名 38    2.1.7 缓存applet 39    2.2 部署为可执行JAR 39    2.2.1 生成清单文件 39    2.2.2 对不安全性进行保护 40    2.3 用Java Web Start进行部署 40    2.3.1 准备发布文件 41    2.3.2 访问默认浏览器 43    2.3.3 使用反射进行动态链接 46    2.4 将多个applet部署为一个applet 47    2.4.1 MultiAppletStup 48    2.4.2 MultiAppletNews 50    2.4.3 Lifecycle 54    2.4.4 LifecycleWindowListener 54    2.4.5 MultiApplet 58    2.4.6 CroftSoftCollection 65    2.5 小结 67 2.6 参考文献 68

  第3章 Swing动画 69

3.1 ComponentAnimator 69    3.1.1 更新和绘制阶段 70    3.1.2 精灵的定义 70    3.1.3 ExampleAnimator 71    3.2 RepaintCollector 73    3.2.1 Swing串行化 73    3.2.2 动画的问题 73    3.2.3 RepaintCollector 75    3.2.4 SimpleRepaintCollector 75    3.2.5 BooleanRepaintCollector 77    3.2.6 CoalescingRepaintCollector 78    3.2.7 其他实现 81    3.3 LoopGovernor 81    3.3.1 固定的延迟 82    3.3.2 帧速率同步 85    3.3.3 SamplerLoopGovernor 85    3.3.4 WindowedLoopGovernor 85    3.4 AnimatedComponent 90    3.5 小结 98    3.6 参考文献 98

  第4章 动画库 99

  4.1 ComponentPainter实现 99    4.1.1 NullComponentPainter 99    4.1.2 ArrayComponentPainter 99    4.1.3 ColorPainter 101    4.1.4 SpacePainter 103    4.1.5 TilePainter 106    4.2 ComponentUpdater 实现 114    4.2.1 NullComponentUpdater 114    4.2.2 ArrayComponentUpdater 115    4.2.3 EdgeScrollUpdater 115    4.3 ComponentAnimator实现 120    4.3.1 NullComponentAnimator 120    4.3.2 TileAnimator 120    4.3.3 FrameRateAnimator 122    4.3.4 CursorAnimator 126    4.4 Sprite实现 131    4.4.1 Sprite 131    4.4.2 AbstractSprite 132    4.4.3 IconSprite 135    4.4.4 BounceUpdater 137    4.4.5 IconSequenceUpdater 141    4.5 小结 143

  第5章 高级图形技术 144

5.1 硬件加速图像 144    5.1.1 Image 144    5.1.2 BufferedImage 145    5.1.3 VolatileImage 145    5.1.4 自动图像 146    5.1.5 兼容图像 146    5.1.6 缓存算法 149    5.2 多缓冲和多线程 150    5.3 全屏独占模式 160    5.3.1 启用全屏模式 160    5.3.2 FullScreenToggler 161    5.3.3 配置帧 165    5.3.4 改变显示模式 165    5.3.5 DisplayModeLib 166    5.3.6 GraphicsDeviceLib 166    5.3.7 消除锯齿 167    5.3.8 BufferStrategyAnimatedComponent 168    5.3.9 FullScreenDemo 170    5.3.10 使用独占模式的顾虑 177    5.4 小结 177    5.5 参考文献 177

  第6章 持久数据 178

 6.1 数据格式 178    6.1.1 对象串行化 178    6.1.2 属性 181    6.1.3 XML 182    6.1.4 瓦片地图图像 193    6.1.5 随机种子 193    6.2 持久性机制 195    6.2.1 JAR资源文件 196    6.2.2 用户主目录文件 197    6.2.3 JNLP持久性 200    6.2.4 applet持久性 203    6.2.5 稳固持久性 206    6.2.6 嵌入式数据库 211    6.2.7 服务器端的持久性 212    6.3 数据完整性 214    6.3.1 消息摘要 214    6.3.2 散列缓存 215    6.4 小结 217    6.5 参考文献 217

 第7章 游戏体系结构 218

 7.1 接口 218    7.2 继承 218    7.3 目标Mars 221    7.4 模型-视图-控制器 221    7.4.1 模型 222    7.4.2 多重接口继承 224    7.4.3 视图 234    7.4.4 控制器 240    7.5 复合MVC 243    7.5.1 复合模型 243    7.5.2 复合视图 254    7.5.3 复合控制器 260    7.5.4 将三者进行组合 260    7.6 数据驱动设计 264    7.6.1 AnimationInit 264    7.6.2 AnimatedApplet 265    7.7 小结 269    7.8 参考文献 269

  第8章 A*算法 270

8.1 Cartographer 271    8.2 NodeInfo 272    8.3 AStar 275    8.4 AStarTest 279    8.5 SpaceTester 283    8.6 GridCartographer 283    8.7 GradientCartographer 286    8.8 TankConsole 289    8.9 TankOperator 290    8.10 StateSpaceNode 291    8.11 TankCartographer 292    8.12 DefaultTankOperator 293    8.13 PlayerTankOperator 297    8.14 小结 299    8.15 参考文献 300

  第9章 HTTP隧道技术 301

9.1 测试示例 302    9.2 可重用的客户端代码 303    9.2.1 Encoder 304    9.2.2 Parser 304    9.2.3 StreamLib 304    9.2.4 StringCoder 305    9.2.5 HttpLib 306    9.2.6 Queue 308    9.2.7 ListQueue 306    9.2.8 Loopable 312    9.2.9 Looper 313    9.2.10 HttpMessagePusher 315    9.3 游戏特定的客户端代码 318    9.4 可重用的服务器端代码 323    9.4.1 Server 323    9.4.2 HttpGatewayServlet 324    9.5 游戏特定的服务器端代码 327    9.6 打包WAR 330    9.6.1 web.xml 330    9.6.2 build.xml 331    9.7 小结 332    9.8 参考文献 332

  第10章 HTTP轮询机制 333

  10.1 测试示例程序 333    10.2 可重用的客户端代码 33410.2.1 SerializableCoder 334    10.2.2 HttpMessagePoller 335    10.2.3 Consumer 340    10.2.4 QueuePuller 340    10.2.5 HttpMessageClient 342    10.3 游戏特定的客户端代码 345    10.3.1 Request 345    10.3.2 AbstractRequest 346    10.3.3 FireRequest 346    10.3.4 MoveRequest 347    10.3.5 ViewRequest 348    10.3.6 GameData 348    10.3.7 Synchronizer 350    10.3.8 NetController 354    10.3.9 NetMain 356    10.4 可重用的服务器端代码 357    10.4.1 XmlBeanCoder 358    10.4.2 SerializableLib 359    10.5 游戏特定的服务器端代码 360    10.5.1 GameInit 360    10.5.2 Player 362    10.5.3 NetGame 363    10.5.4 MarsServer 370    10.5.5 MarsServlet 376    10.6 小结 378    10.7 参考文献 378

 第11章 HTTP Pulling机制

37911.1 测试示例 379    11.2 可重用的客户端代码 381    11.2.1 Authentication 381    11.2.2 Id 381    11.2.3 LongId 382    11.2.4 ModelId 383    11.2.5 SeriModelId 383    11.3 游戏特定的客户端代码 384    11.3.1 Request 384    11.3.2 CoalesceableRequest 384    11.3.3 ChatController 385    11.3.4 Response 386    11.3.5 CreateUserConsumer 386    11.3.6 Event 387    11.3.7 ChatClient 38711.3.8 ChatSynchronizer 393    11.3.9 ChatPanel 395    11.3.10 ChatApplet 398    11.4 服务器端代码 400    11.4.1 User 400    11.4.2 UserStore 401    11.4.3 PullServer 402    11.4.4 MoveServer 403    11.4.5 SeriChatGame 404    11.4.6 ChatServer 409    11.5 跟踪消息 411    11.5.1 多玩家联网模式 412    11.5.2 单玩家本地模式 413    11.6 扩展示例 414    11.7 小结 414     11.8 参考文献 415

  附录A 源代码索引 416

  附录B CVS简介 420

B.1 检出代码 420    B.2 创建自己的项目 421    B.3 并行程序设计 423    B.3.1 实施代码所有权 423    B.3.2 互相监视 424    B.3.3 创建分支 425    B.4 参考文献 425

大小: | 来源:百度网盘 | 提取码:p7mt
已经过安全软件检测无毒,请您放心下载。


本文地址:https://www.abyssw.com/post/111.html
声明:本文章为 Abyss 编辑发布,欢迎分享本文,转载请保留出处!

 发表评论


表情

还没有留言,还不快点抢沙发?