目录 1
第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.5 XML简介 6
1.4 10 tmp目录 6
1 4 9 src目录 6
1.6 使用Ant编译 7
1.7 使用开放源代码 10
1 7 1 学习版权的基本知识 10
1 7 2 选择一个许可 11
1 7 3 重命名修改后的代码 12
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.1 1 参考文献 27
2 1 1 实现生命周期方法 28
2.1 部署为applet 28
第2章 部署框架 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 L1fecycle 54
2 4 4 LifecycleWindowListener 54
2 4.5 MultiApplet 58
2 4 6 CroftSoftaCollection 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 帧速率同步 84
3 3.3 SamplerLoopGovemor 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.1.1 Image 144
第5章 高级图形技术 144
5.1 硬件加速图像 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 瓦片地图图像 190
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.2 继承 218
7.1 接口 218
第7章 游戏体系结构 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 1 复合模型 243
7.5 复合MVC 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 273
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 Default Tank Operator 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 309
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 1 SerializableCoder 334
10.2 可重用的客户端代码 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机制 379
11.1 测试示例 379
11.2 可重用的客户端代码 381
11 2.1 Authentication 381
11 2 2 Id 381
11 2 3 LongId 382
11 2 5 SeriModelId 383
112 4 ModelId 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 387
11 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