第1章 手机游戏基础 1
1.1 手机游戏市场 1
1.1.1 手机游戏的市场状况 1
1.1.2 国内手机游戏的运营方式 1
1.2 开发团队与开发流程 2
1.2.1 手机游戏开发团队的组成 2
1.2.2 手机游戏的开发流程 3
1.3 J2ME基础 4
1.3.1 J2ME概述 4
1.3.2 J2ME技术中常用名词 4
1.3.3 J2ME的体系结构 4
1.3.4 J2ME与Java的关系 5
1.3.5 J2ME在手机游戏开发领域的优势 5
1.4 手机游戏开发技术的发展 6
1.5 3D游戏引擎与M3G 7
1.5.1 3D游戏引擎 7
1.5.2 M3G简介 7
第2章 开发环境的配置 8
2.1 J2ME开发环境 8
2.2 JDK的安装与配置 8
2.3 WTK的安装与配置 11
2.4 Eclipse的安装与配置 12
2.4.1 Eclipse的安装 12
2.4.2 EclipseME的安装 13
2.4.3 将WTK绑定到EclipseME 16
2.4.4 各手机厂商的SDK 17
第3章 程序框架与Eclipse操作基础 19
3.1 MIDlet框架 19
3.1.1 MIDlet框架说明 19
3.1.2 创建MIDlet框架 20
3.2 编写游戏程序框架 23
3.2.1 GameCanvas框架说明 23
3.2.2 GameCanvas框架的程序流程 26
3.2.3 制作3D游戏框架程序 26
3.3 Eclipse的操作说明 28
3.3.1 编译、运行与调试 29
3.3.2 打包生成产品 33
3.3.3 下载产品到手机 36
3.3.4 项目的导入 37
第4章 3D游戏编程基础 39
4.1 3D游戏编程的基本原理 39
4.2 摄影机的编程原理 39
4.2.1 透视投影 40
4.2.2 平行投影 41
4.2.3 自定义投影 41
4.3 光源的编程原理 42
4.3.1 光源的类型 42
4.3.2 聚光灯的照射范围与聚光度 43
4.3.3 颜色与亮度 44
4.3.4 光线强度的衰减 45
4.4 实物的编程原理 45
4.4.1 模型的顶点 46
4.4.2 模型的三角形面 49
4.4.3 模型的构建 50
4.4.4 模型的显示 51
4.5 实例制作——显示三棱锥 52
第5章 设置游戏背景 57
5.1 创建二维图像 57
5.2 设置游戏背景 59
5.2.1 设置背景 59
5.2.2 背景填充颜色 60
5.2.3 背景图像的裁剪区域 60
5.3 实例制作——星空背景下的三棱锥 62
第6章 三维变换 67
6.1 三维变换的数学基础 67
6.1.1 坐标系 67
6.1.2 顶点 68
6.1.3 向量与向量运算 68
6.1.4 矩阵与矩阵运算 70
6.1.5 三维变换的数学基础 70
6.2 M3G中的矩阵 72
6.2.1 创建矩阵 72
6.2.2 设置矩阵值 72
6.2.3 矩阵运算 73
6.3 节点控制 75
6.3.1 节点的三维变换 75
6.3.2 设置矩阵T 76
6.3.3 设置矩阵R 76
6.3.4 设置矩阵S 77
6.3.5 设置矩阵M 78
6.3.6 获取最终的变换结果 78
6.4 实例制作——旋转的三棱锥 79
第7章 外观控制——渲染模式与材质 81
7.1 外观控制类 81
7.2 多边形渲染模式 82
7.2.1 三角形正反面的设置 82
7.2.2 三角形剪切面的设置 82
7.2.3 三角形着色模式的设置 82
7.3 混合模式 83
7.3.1 深度偏移量 83
7.3.2 模型颜色的混合模式 84
7.4 材质 86
7.4.1 光照反射 86
7.4.2 模型的法线 87
7.4.3 材质控制 88
7.5 实例制作——透明的三棱锥 89
第8章 外观控制——纹理与雾化 95
8.1 纹理贴图 95
8.1.1 纹理坐标 95
8.1.2 设置纹理图 96
8.1.3 纹理的寻址方式 97
8.1.4 纹理的颜色混合模式 98
8.1.5 MipMap 99
8.1.6 纹理过滤 100
8.2 雾化效果 101
8.2.1 雾的颜色 101
8.2.2 雾的形成模式 101
8.2.3 雾的浓度系数 101
8.2.4 雾的范围 102
8.3 实例制作——具有纹理的三棱锥 102
第9章 制作游戏场景 107
9.1 立即模式与保留模式 107
9.2 三维场景的管理 107
9.2.1 设置活动摄影机 107
9.2.2 设置背景 108
9.2.3 设置场景中的实物 108
9.2.4 渲染World场景 109
9.3 三维场景的外部导入 110
9.4 实例制作——畅游三维世界 111
第10章 3D精灵与粒子系统 118
10.1 3D精灵 118
10.1.1 3D精灵简介 118
10.1.2 创建3D精灵 119
10.1.3 设置3D精灵的外观 119
10.1.4 设置3D精灵的裁剪区域 120
10.2 粒子系统 120
10.3 实例制作——在场景中显示喷泉 122
第11章 在三维世界中进行二维渲染 129
11.1 显示二维图像 129
11.2 2D精灵动画 130
11.2.1 2D精灵动画原理 130
11.2.2 播放2D精灵动画 131
11.2.3 Sprite类的其他方法 132
11.3 实例制作——显示游戏主角 134
第12章 碰撞检测 140
12.1 3D对象编号与碰撞检测范围 140
12.1.1 3D对象编号 140
12.1.2 碰撞检测范围 141
12.1.3 碰撞检测允许标志 141
12.2 碰撞检测与碰撞处理 141
12.2.1 碰撞检测的基本原理 142
12.2.2 碰撞检测的返回信息 143
12.2.3 不同实物的碰撞检测及碰撞处理 143
12.3 实例制作——让角色开火 144
第13章 音效播放 158
13.1 播放音效的方法 158
13.1.1 产生简单的音调 158
13.1.2 播放音效文件 159
13.2 常用音效格式及其制作软件 160
13.3 实例制作——增加射击音效 161
第14章 用户界面与文字处理 166
14.1 用户界面 166
14.1.1 标题界面与帮助界面 166
14.1.2 高级响应界面 167
14.2 文字处理 169
14.2.1 字体的控制 169
14.2.2 字符的编码 171
14.2.3 中文字符的判断 173
14.2.4 字符串的拼接 174
14.3 实例制作——增加用户界面 175
第15章 动画控制 187
15.1 关键帧序列 187
15.1.1 属性变化规律 187
15.1.2 关键帧序列 188
15.2 动画控制器 190
15.2.1 世界时间与序列时间 190
15.2.2 设置动画的播放位置 190
15.2.3 设置动画的播放速率 191
15.3 动画轨迹 191
15.3.1 动画轨迹的创建 191
15.3.2 设置实物的动画轨迹 192
15.3.3 播放动画 193
15.4 实例制作——绚丽的喷泉 193
第16章 特殊的模型 200
16.1 形体变换模型 200
16.1.1 形体变换原理 200
16.1.2 形体变换模型的创建 200
16.1.3 形体变换动画 201
16.2 骨骼蒙皮模型 201
16.2.1 骨骼蒙皮原理 202
16.2.2 骨骼蒙皮模型的创建 202
16.2.3 模型的骨骼设置 202
16.2.4 骨骼与皮肤相关联 203
16.3 实例制作——特殊模型的动画 204
第17章 特效的显示 216
17.1 拖影特效 216
17.1.1 拖影特效说明 216
17.1.2 拖影的变化规律 217
17.1.3 拖影的实现算法 218
17.1.4 实现算法的改进 220
17.2 光环特效 220
17.2.1 光环特效说明 220
17.2.2 3D游戏中的地形 221
17.2.3 光环的设计原理 222
17.3 精确坐标的设定 224
17.4 实例制作——增加特效的显示 225
第18章 3D手机游戏的优化 241
18.1 手机游戏优化的必要性 241
18.2 减少游戏占用的内存资源 241
18.2.1 修改浪费内存的代码 241
18.2.2 优化资源文件 243
18.2.3 使用代码混淆器优化内存 244
18.3 降低游戏对CPU的消耗 244
18.3.1 降低CPU消耗的通用方法 244
18.3.2 在3D游戏中降低CPU消耗的特殊方法 245
18.4 使用性能描述器进行优化 246
18.5 实例制作——浓雾中的三维世界 248
附录A M3G中类的继承关系图 255
附录B M3G中的API 258