目录 3
第一部分 手机游戏编程起步 3
第1章 发展中的游戏 3
1.1 移动游戏的本质 3
1.1.1 第一款手机游戏 4
1.1.2 手机游戏市场 5
1.1.3 手机游戏的文化 5
1.1.4 手机游戏的前沿 6
1.2.1 Java 2 Micro Edition(J2ME) 8
1.2 认识移动平台 8
1.2.2 Binary Runtime Environment for Wireless(BREW) 9
1.2.3 Symbian 9
1.2.4 Windows Mobile Smartphone 10
1.3 Java作为手机游戏平台 10
1.3.1 什么是Java 10
1.3.2 为什么选择Java 11
1.3.3 Java和手机编程 11
1.4 J2ME基础简介 13
1.4.1 Configuration和CLDC 13
1.4.2 Profile和MIDP 14
1.5 本章小结 16
1.6 实践练习 16
第2章 Java手机游戏开发基础 17
2.1 设计基础 17
2.1.1 基本思想的诞生 18
2.1.2 编制故事情节 18
2.1.3 确定游戏模式 19
2.2 J2ME游戏开发初步 19
2.3.1 使用KToolbar 22
2.3 J2ME Wireless Toolkit 22
2.3.2 MIDlet游戏项目 23
2.3.3 生成一个游戏MIDlet 24
2.3.4 测试一个游戏MIDlet 25
2.4 J2ME模拟器和实际设备 27
2.5 本章小结 27
2.6 实践练习 28
第3章 构建移动游戏Skeleton 29
3.1 J2ME API研究 29
3.1.1 CLDC API 30
3.1.2 MIDP API 31
3.2.1 MIDlet内部结构 32
3.2 理解MIDlet 32
3.2.2 MIDlet开发基础 34
3.3 创建Skeleton范例程序 34
3.3.1 编写程序代码 35
3.3.2 准备发布MIDlet 39
3.3.3 生成和测试最终产品 40
3.4 本章小结 41
3.5 游戏改进 42
第4章 手机游戏图形 45
4.1 手机图形基础 45
第二部分 手机游戏编程基础 45
4.1.1 理解图形坐标系 46
4.1.2 颜色的基本知识 47
4.2 在J2ME 中使用图形 48
4.2.1 绘制图形基元 49
4.2.2 绘制文本 51
4.2.3 绘制图像 53
4.3 构建Olympics实例程序 54
4.3.1 编写程序代码 55
4.3.2 测试最终产品 56
4.4.1 编写程序代码 57
4.4 构建Slideshow示例程序 57
4.4.2 测试最终产品 61
4.5 本章小结 62
4.6 游戏改进 62
第5章 使用精灵动画 63
5.1 理解动画 63
5.1.1 动画和帧速率 64
5.1.2 走向计算机动画 64
5.1.3 2D动画和3D动画 65
5.2.2 基于角色的动画 66
5.2.1 基于帧的动画 66
5.2 分析2D精灵动画 66
5.3 把精灵动画应用到手机游戏中 70
5.4 使用Layer和Sprite类 71
5.5 使用GameCanvas类实现平稳动画 73
5.6 构建UFO实例程序 74
5.6.1 编写程序代码 74
5.6.2 测试最终产品 80
5.7 本章小结 81
5.8 游戏改进 81
6.1 获取手机游戏输入 82
第6章 处理手机用户输入 82
6.2 使用GameCanvas类处理按键输入 84
6.3 再谈Sprite类 85
6.3.1 检测精灵冲突 85
6.3.2 使用基于帧的动画精灵 86
6.4 构建UFO 2实例 88
6.4.1 编写程序代码 88
12.3.5 绘制游戏屏幕 1 89
6.4.2 测试最终的产品 92
6.5 本章小结 93
6.6 游戏改进 93
第7章 Henway,向Frogger致意 94
7.1 Henway的概况 94
7.2 设计游戏 96
7.3 开发游戏 97
7.4 测试游戏 106
7.5 本章小结 108
7.6 游戏改进 108
第8章 使用乐音产生声音 109
8.1 声音和手机游戏 109
8.2 乐音式声音和音乐基础 111
8.3 了解一个手机的音频能力 112
8.4 在手机游戏中播放乐音 114
8.4.1 播放单个乐音 114
8.4.2 播放乐音序列 115
8.5 构建UFO 3实例程序 118
8.5.1 编写程序代码 118
8.5.2 测试最终的产品 122
8.6 本章小结 122
8.7 实践练习 123
第9章 播放数字化声音和音乐 124
9.1 数字化声音基础 124
9.2 认识声波声音 126
9.4 再谈Player接口 127
9.3 创建和编辑声波文件 127
9.5 在手机游戏中播放声波声音 129
9.5.1 从一个JAR文件播放声波 129
9.5.2 播放来自一个URL的声波 130
9.6 使用MIDI感受声音 131
9.7 在手机游戏中播放MIDI音乐 132
9.7.1 播放来自JAR文件的MIDI歌曲 132
9.7.2 播放来自URL 的 MIDI歌曲 133
9.8 构建Henway 2实例游戏 134
9.8.1 编写游戏代码 134
9.8.2 测试最终产品 137
9.10 实践练习 138
9.9 本章小结 138
第三部分 虚拟世界和手机游戏智能 141
第10章 创建平铺的游戏图层 141
10.1 什么是平铺图层 141
10.2 为平铺图层创建地图 143
10.2.1 使用Mappy地图编辑器 144
10.2.2 使用Tile Studio地图编辑器 147
10.2.3 为游戏格式化地图信息 148
10.3.1 创建一个平铺图层 149
10.3 使用TiledLayer类 149
10.3.2 移动和绘制一个平铺图层 150
10.4 构建Wanderer实例程序 151
10.4.1 编写游戏代码 151
10.4.2 测试最终产品 155
10.5 本章小结 156
10.6 实践练习 157
11.1 处理多个游戏图层 158
第11章 管理多个游戏图层 158
11.2 使用LayerManager类 159
11.3 实现平铺图层动画 161
11.3.1 构建Wanderer 2实例程序 162
11.3.2 设计平铺图层地图 163
11.3.3 编写游戏代码 166
11.3.4 测试最终产品 170
11.4 本章小结 171
11.5 游戏改进 172
12.1 High Seas的概况 173
第12章 High Seas:你是游戏中的海盗 173
12.2 设计游戏 174
12.2.1 组合水域地图 176
12.2.2 组合陆地地图 177
12.3 开发游戏 179
12.3.1 创建一个漂移精灵 179
12.3.2 声明成员变量 182
12.3.3 组合start()方法 182
12.3.4 组合update()方法 185
12.3.7 安全地放置精灵 190
12.3.6 开始一个新游戏 190
12.4 测试游戏 191
12.5 本章小结 192
12.6 游戏改进 193
第13章 教游戏思考 194
13.1 关于AI的基础知识 194
13.2 游戏AI的类型 196
13.2.1 漫游AI 197
13.2.2 行为AI 199
13.2.3 策略AI 200
13.3 设计AI策略 201
13.4 教会精灵思考 202
13.4.1 设计追逐精灵 202
13.4.2 编写追逐精灵代码 203
13.5 构建High Seas 2实例游戏 207
13.5.1 编写游戏代码 208
13.5.2 测试最终产品 209
13.6 本章小结 211
13.7 游戏改进 211
14.1 多玩家游戏基础 215
第四部分 利用无线网络 215
第14章 手机游戏网络基础 215
14.1.1 回合制游戏 216
14.1.2 基于事件的游戏 216
14.2 网络游戏的问题和解决方案 217
14.2.1 状态同步 218
14.2.2 输入同步 218
14.2.3 一种混合解决方案 218
14.3.2 数据报Socket 219
14.3.1 流Socket 219
14.3 使用Socket通过网络通信 219
14.4 网络编程和J2ME 220
14.4.1 创建数据报包 221
14.4.2 发送数据报包 222
14.4.3 接收数据报包 222
14.5 构建Lighthouse实例 223
14.5.1 设计客户机和服务器 224
14.5.2 编写程序代码 224
14.5.3 测试最终产品 233
14.7 实践练习 234
14.6 本章小结 234
第15章C onnect 4:为经典游戏实现无线网络 236
15.1 Connect 4概况 236
15.2 设计游戏 237
15.2.1 图形和用户界面 238
15.2.2 游戏逻辑 238
15.2.3 网络 239
15.3 开发游戏 239
15.3.1 Connect4客户机和服务器 240
15.3.2 Connect 4游戏画布 244
15.3.3 Connect 4游戏状态 250
15.4 测试游戏 255
15.5 本章小结 256
15.6 实践练习 257
第16章 调试和部署 258
16.1 游戏调试基础 258
16.1.1 单步执行代码 259
16.1.2 察看变量 259
16.2 游戏调试策略 260
16.2.1 bug预防 260
16.1.3 使用断点 260
16.2.2 bug检测 262
16.3 选择调试器 263
16.4 部署手机游戏 264
16.4.1 理解空中下载预配置 265
16.4.2 为你的游戏做好部署准备 266
16.4.3 更改Web服务器 268
16.5 使用KToolbar来测试OTA预配置 268
16.6 本章小结 270
16.7 实践练习 270
17.1 理解手机游戏优化 273
第五部分 优化你的游戏 273
第17章 优化Java手机游戏 273
17.1.1 优化可维护性 274
17.1.2 优化可移植性 275
17.1.3 优化大小 275
17.1.4 优化速度 276
17.2 一般的手机游戏优化技巧 276
17.2.1 减少内存使用 276
17.2.2 最小化网络数据 278
17.2.3 去除不必要的图形 278
17.3.1 不带调试信息地编译 279
17.3 Java代码优化技巧 279
17.3.2 去除不必要的赋值 280
17.3.3 去除常用子表达式 280
17.3.4 利用局部变量 280
17.3.5 扩展循环 281
17.3.6 代码紧缩和混淆 281
17.4 探查你的手机游戏代码 282
17.5 监视手机游戏内存使用 285
17.7 本章小结 287
17.6 用整体的观点看待手机游戏优化 287
17.8 游戏改进 288
第18章 SpaceOut:向SpaceInvaders致敬 289
18.1 Space Out的概况 289
18.2 设计游戏 290
18.3 开发游戏 293
18.3.1 创建一个移动的精灵 293
18.3.2 声明成员变量 296
18.3.3 组合start()方法 296
18.3.4 组合update()方法 298
18.3.5 绘制游戏屏幕 304
18.3.6 开始一个新的游戏 305
18.3.7 添加外星人、导弹和爆炸 306
18.4 测试游戏 309
18.5 本章小结 310
18.6 游戏改进 310
第19章 记录最高得分 312
19.1 记录你的成就的重要性 312
19.2 认识Java RMS 313
19.2.1 理解记录和记录存储 313
19.2.2 深入RecordStore类 314
19.3 准备要存储的最高得分数据 317
19.4 构建Space Out 2实例游戏 318
19.4.1 设计游戏增强版 318
19.4.2 编写游戏代码 319
19.4.3 测试最终产品 323
19.5 本章小结 324
19.6 实践练习 324
附录 329
附录A Java游戏API参考 329
A.1 GameCanvas类 329
A.1.3 方法 330
A.1.2 构造函数 330
A.1.1 成员常量 330
A.2 Layer类 331
A.3 Sprite类 332
A.3.1 成员常量 332
A.3.2 构造函数 332
A.3.3 方法 333
A.4.1 构造函数 334
A.4.2 方法 334
A.4 TiledLayer类 334
A.5 LayerManager类 335
A.5.1 构造函数 335
A.5.2 方法 335
附录B 手机游戏编程资源 337
B.1 Micro Dev Net 337
B.2 J2ME Gamer 337
B.3 J2ME.org 337
B.7 Gamasutra 338
B.6 GameDev.net 338
B.8 Game Developer Magazine 338
B.4 Nokia论坛手机游戏开发社区 338
B.5 Wireless Developer Network 338
B.9 Gamelan 339
B.10 JavaWorld 339
B.11 Java官方站点 339
附录C 为手机游戏创建图形 340
C.1 评估游戏图形 340
C.1.1 确定游戏屏幕大小 340
C.1.2 考虑目标观众 341
C.1.3 确定游戏环境和基调 341
C.2.1 Image Alchemy 342
C.1.4 保持图形风格 342
C.2 认识图形工具 342
C.2.2 Paint Shop Pro 343
C.2.3 Graphic Workshop 343
C.3 创建和编辑图形 343
C.3.1 艺术线条图形 344
C.3.2 3D渲染图形 344
C.3.3 扫描的照片和视频捕捉图形 345
C.3.4 背景图形和材质 345
C.3.5 动画图形 345
C.4 寻找图形 346