新書推薦:
《
怪谈百物语:不能开的门(“日本文学史上的奇迹”宫部美雪重要代表作!日本妖怪物语集大成之作,系列累销突破200万册!)
》
售價:NT$
296.0
《
罗马政治观念中的自由
》
售價:NT$
230.0
《
中国王朝内争实录:宠位厮杀
》
售價:NT$
281.0
《
凡事发生皆有利于我(这是一本读了之后会让人运气变好的书”治愈无数读者的心理自助经典)
》
售價:NT$
203.0
《
未来特工局
》
售價:NT$
254.0
《
高术莫用(十周年纪念版 逝去的武林续篇 薛颠传世之作 武学尊师李仲轩家世 凸显京津地区一支世家的百年沉浮)
》
售價:NT$
250.0
《
英国简史(刘金源教授作品)
》
售價:NT$
449.0
《
便宜货:廉价商品与美国消费社会的形成
》
售價:NT$
352.0
|
編輯推薦: |
《Android 3D游戏程序设计》通过Java和OpenGL ES开发Android平台上的3D游戏。开发过程中将使用安装了Android开发工具(ADT)插件的Eclipse集成开发环境(IDE)。本书并不是一本简单的参考书,而是通过示例和学习用例展示游戏开发中的关键概念。
|
內容簡介: |
《Android 3D游戏程序设计》详细阐述了与Android 3D游戏设计相关的解决方案,主要包括Android简介、Android中的Java语言、3D数学知识、基于OpenGL ES的3D图形学、运动和碰撞、游戏环境、创建玩家角色、创建敌方角色、用户界面、最终的Drone Grid游戏、Android原生开发包(NDK)、游戏的发布和市场化运作等内容。此外,本书还提供了丰富的示例和代码,以帮助读者进一步理解相关方案的实现过程。 本书适合作为高等院校计算机及相关专业的教材和教学参考书,也可作为相关开发人员的自学教材和参考手册。
|
目錄:
|
第1章 Android简介 1
1.1 Android概述 1
1.2 Android SDK 1
1.2.1 Android软件开发工具包(SDK)的需求条件 1
1.2.2 Android SDK组件 2
1.2.3 配置开发环境 5
1.2.4 Android开发工具集成开发环境 6
1.3 Hello World示例程序 11
1.3.1 创建新的Android项目 11
1.3.2 Android模拟器 16
1.3.3 真实的Android设备 18
1.3.4 主源代码 19
1.3.5 图形布局 20
1.3.6 实际的Hello World数据 22
1.4 本章小结 22
第2章 Android中的Java语言 23
2.1 Java语言概述 23
2.2 Java注释 23
2.3 Java基本数据类型 24
2.3.1 数组 24
2.3.2 数据修饰符 24
2.4 Java运算符 25
2.4.1 算术运算符 25
2.4.2 一元运算符 26
2.4.3 条件运算符 26
2.4.4 位运算符和移位运算符 26
2.5 Java流控制语句 27
2.6 Java类 28
2.6.1 包和类 28
2.6.2 访问包中的类 28
2.6.3 Java接口 29
2.6.4 访问类变量和函数 29
2.7 Java函数 30
2.8 基本的Android Java程序框架 31
2.8.1 Activity类的生命周期 31
2.8.2 Activity类生命周期的关键点 32
2.8.3 查看Activity的生命周期 32
2.9 基本的Android Java OpenGL框架 34
2.9.1 单视图OpenGL ES应用程序 34
2.9.2 OpenGL ES多视图应用程序 37
2.10 3D OpenGLHello Droid示例 40
2.10.1 将项目示例导入Eclipse中 40
2.10.2 MainActivity和MyGLSurfaceView类 40
2.10.3 MyGLRenderer类 42
2.10.4 类概述 46
2.10.5 体验Hello Droid示例程序 47
2.11 本章小结 49
第3章 3D数学知识 51
3.1 向量和向量操作 51
3.1.1 向量的含义 51
3.1.2 Vector类 54
3.1.3 向量的模 54
3.1.4 向量的标准化 55
3.1.5 向量加法 55
3.1.6 向量乘法 56
3.1.7 向量逆置 57
3.1.8 直角三角形 58
3.1.9 向量点积 58
3.2 矩阵和矩阵操作 60
3.2.1 矩阵的含义 60
3.2.2 Android内建Matrix类 61
3.2.3 单位矩阵 61
3.2.4 矩阵转置 61
3.2.5 矩阵乘法 62
3.2.6 逆矩阵 63
3.2.7 齐次坐标 63
3.2.8 使用矩阵平移对象 63
3.2.9 使用矩阵旋转对象 64
3.2.10 使用矩阵缩放对象 65
3.2.11 组合矩阵 65
3.3 操控3D空间中的对象 66
3.3.1 构建3D对象的模型矩阵 66
3.3.2 向对象中添加旋转行为 68
3.3.3 在3D空间中移动对象 69
3.3.4 缩放对象 71
3.4 本章小结 72
第4章 基于OpenGL ES的3D图形学 73
4.1 Android上的OpenGL ES 73
4.1.1 OpenGL对象渲染 73
4.1.2 渲染过程 74
4.2 OpenGL ES着色语言 80
4.2.1 基本数据类型 80
4.2.2 向量分量 81
4.2.3 运算符和表达式 81
4.2.4 程序流控制语句 82
4.2.5 存储限定符 83
4.2.6 保留变量 84
4.2.7 内置函数 84
4.3 顶点着色器 85
4.4 片元或像素着色器 86
4.5 Shader类 87
4.6 相机 94
4.7 3D对象网格 100
4.7.1 网格顶点数据 100
4.7.2 MeshEx类 101
4.8 光照机制 107
4.8.1 光照机制概述 107
4.8.2 PointLight类 108
4.8.3 构建法线矩阵 111
4.8.4 顶点着色器中的光照 112
4.8.5 片元着色器光照 115
4.9 材质 116
4.9.1 Material类 117
4.9.2 片元着色器中的材质 117
4.10 纹理 118
4.10.1 纹理放大和缩小 118
4.10.2 纹理剪裁和重复 119
4.10.3 Texture类 120
4.10.4 顶点着色器中的纹理 122
4.10.5 片元着色器中的纹理 123
4.11 本章小结 123
第5章 运动和碰撞 125
5.1 运动行为概述 125
5.1.1 线性速度和角加速度 125
5.1.2 牛顿运动定律 126
5.1.3 重力 127
5.1.4 角速度和角加速度 127
5.1.5 旋转作用力 128
5.2 Physics类 129
5.3 基于作用力的线性运动和角运动示例 135
5.3.1 创建4面纹理立方体 135
5.3.2 调整Object3d类 136
5.3.3 调整MyGLRenderer类 137
5.4 碰撞行为概述 139
5.4.1 碰撞检测 139
5.4.2 调整MeshEx类 140
5.4.3 调整Object3d类 143
5.4.4 碰撞类型 144
5.4.5 调整Physics类 145
5.4.6 碰撞计算 149
5.4.7 最终的Physics类 150
5.5 碰撞计算示例 151
5.5.1 调整MyGLRenderer类 151
5.5.2 牛顿万有引力定律 154
5.6 使用顶点着色器创建重力网格 155
5.6.1 修改Physics类 155
5.6.2 修改MeshEx类 155
5.6.3 GravityGridEx类 156
5.6.4 创建新的顶点着色器 167
5.6.5 调整MyGLRenderer类 170
5.7 本章小结 175
第6章 游戏环境 177
6.1 Android中的声音 177
6.1.1 Sound类 177
6.1.2 调整Object3d类 178
6.2 音效示例 180
6.3 HUD概述 184
6.3.1 HUD 184
6.3.2 创建BillBoard类 185
6.3.3 创建BillBoardFont类 188
6.3.4 调整Texture类 189
6.3.5 创建BillBoardCharacterSet类 189
6.3.6 创建HUDItem类 194
6.3.7 创建HUD类 196
6.3.8 调整Object3d类 202
6.4 HUD创建示例 203
6.5 数据持久化 212
6.5.1 调整Orientation类 213
6.5.2 调整Physics类 214
6.5.3 调整Object3d类 214
6.6 保存持久化数据 214
6.6.1 调整MyGLRenderer类 214
6.6.2 调整MyGLSurfaceView类 216
6.6.3 调整MainActivity类 217
6.7 本章小结 217
第7章 创建玩家角色 219
7.1 创建玩家图形 219
7.1.1 创建Mesh类 219
7.1.2 调整Object3d类 220
7.1.3 调整使用Object3d类的其他类 222
7.1.4 创建Pyramid类 223
7.1.5 创建PowerPyramid类 224
7.2 创建玩家的视点和输入 225
7.2.1 调整MyGLRenderer类 226
7.2.2 调整MyGLSurfaceView类 228
7.3 创建玩家的武器和弹药 229
7.4 创建爆炸效果 239
7.4.1 创建PolyParticleEx类 239
7.4.2 创建SphericalPolygonExplosion类 244
7.4.3 调整Object3d类 252
7.5 生成游戏对象的统计数据 253
7.5.1 创建Stats类 253
7.5.2 调整Object3d类 255
7.6 射击目标 256
7.6.1 创建玩家的武器系统 259
7.6.2 处理碰撞问题 263
7.6.3 调整onDrawFrame函数 265
7.7 本章小结 268
第8章 创建敌方角色 269
8.1 创建Arena对象 269
8.2 人工智能概述 273
8.3 创建坦克敌方角色 275
8.3.1 创建坦克图形 275
8.3.2 创建坦克状态 276
8.3.3 创建车辆命令 278
8.3.4 创建坦克状态并处理命令 284
8.3.5 创建车辆的转向类 286
8.3.6 创建坦克的巡逻攻击状态 288
8.3.7 创建坦克对象的有限状态机 299
8.3.7 创建坦克对象的Driver类 303
8.3.9 调整Physics类 307
8.3.10 调整Object3d类 309
8.3.11 创建坦克对象 310
8.4 ArenaObject3d类和Tank类 318
8.5 本章小结 326
第9章 用户界面 327
9.1 创建主菜单系统 327
9.1.1 MenuItem类 327
9.1.2 MainMenu类 329
9.2 创建高分榜 332
9.2.1 HighScoreEntry类 332
9.2.2 HighScoreTable类 334
9.3 创建高分输入系统 342
9.4 用户界面示例 350
9.5 本章小结 360
第10章 最终的Drone Grid游戏 361
10.1 组织和控制敌方角色分组 361
10.1.1 ArenaObjectSet类 361
10.1.2 TankFleet类 372
10.2 GamePlayController类 376
10.3 保存和加载游戏状态 385
10.3.1 调整MainActivity类 386
10.3.2 调整MyGLRenderer类 386
10.4 根据游戏结束状态添加游戏 388
10.5 Drone Grid游戏示例 392
10.6 本章小结 404
第11章 Android原生开发工具包(NDK) 405
11.1 NDK概述 405
11.2 NDK系统需求条件 405
11.3 Android平台兼容性 406
11.4 安装Android NDK 406
11.5 Android NDK的使用方式 407
11.6 Java本地接口概述 407
11.6.1 Java接口指针 408
11.6.2 加载和链接本地CC 方法 408
11.6.3 命名的本地函数 409
11.6.4 本地函数参数 409
11.6.5 CC 本地函数格式 410
11.6.6 本地类型 410
11.6.7 引用类型 410
11.6.8 JNI签名类型 411
11.6.9 调用Java中的本地代码并访问本地代码中的Java方法 412
11.6.10 JNI函数 413
11.7 Android JNI Makefile 414
11.8 基于JNI和本地代码的Hello World示例 415
11.9 向Drone Grid游戏中添加本地函数 419
11.9.1 计算本地代码中的重力 419
11.9.2 从本地代码中旋转对象 420
11.9.3 从本地代码中计算碰撞的反作用力 424
11.10 本章小结 428
第12章 游戏的发布和市场化运作 429
12.1 创建最终的发布文件 429
12.2 测试.apk发布文件 432
12.3 Android市场和策略列表 435
12.3.1 Google Play 435
12.3.2 Amazon Appstore 435
12.3.3 Samsung Apps Store 436
12.3.4 Aptoide 436
12.3.5 Appitalism 436
12.3.6 GetJar 437
12.3.7 SlideMe 437
12.3.8 Soc.Io Mall 437
12.3.9 用户自己的网站 437
12.4Android广告网络列表 438
12.4.1 AppFlood 438
12.4.2 Appwiz 439
12.4.3 LeadBolt 439
12.4.4 AppBucks 440
12.4.5 AdMob 441
12.4.6 StartApp 442
12.4.7 其他广告网络和营销公司 444
12.5 Android游戏评论网站 447
12.6 其他有用的网站 452
12.7 本章小结 452
|
內容試閱:
|
本书通过Java和OpenGL ES开发Android平台上的3D游戏。开发过程中将使用安装了Android开发工具(ADT)插件的Eclipse集成开发环境(IDE)。本书并不是一本简单的参考书,而是通过示例和学习用例展示游戏开发中的关键概念,主要涵盖以下内容。
第1章整体讲述Android、Android SDK、如何针对开发环境设置计算机,以及简单的Hello World示例。
第2章介绍Java语言、基本的Android Java程序框架和与Java OpenGL ES框架相关基本信息。
第3章讨论3D数学、向量、矩阵和向量-矩阵操作。
第4章阐述Android上的OpenGL ES、3D网格、光照机制、材质、纹理、持久化数据存储,以及如何利用顶点和片元着色器创建重力网格。
第5章探讨碰撞和牛顿力学。
第6章讨论声音和平视(head-up)显示。
第7章考查如何创建玩家角色,包括 Drone Grid游戏中与玩家角色关联的元素,如武器、弹药和玩家的HUD。
第8章详细介绍如何创建Drone Grid游戏中的敌方角色,其中包括Arena对象和坦克对象。相比较而言,Arena对象其行为相对简单,而坦克对象则是一类较为复杂的角色,涉及复杂的人工智能技术。
第9章介绍Drone Grid游戏中的用户界面,包括菜单系统、高分表的创建以及高分输入菜单。
第10章将前述章节内容整合至最终的Drone Grid游戏中,最完整的工作游戏集成了前述章节中的全部元素,如菜单、HUD,以及Arena对象和坦克对象这一类敌方角色。
第11章讨论Android本地开发工具包和Java本地接口(JNI)。
第12章介绍如何发布Android游戏,其中包含一个Android市场列表,并以此上传游戏发行文件、支持Android广告网络列表,以及一个审查Android游戏的游戏网站列表。
|
|