[套装书]Unity3D动作游戏开发实战+独立游戏开发:基础、实践与创收(Unity 2D Android篇)(2册)

作者
周尚宣 王寅寅
丛书名
出版社
机械工业出版社
ISBN
9782007071048
简要
简介
内容简介书籍计算机书籍 ---------------------------Unity3D动作游戏开发实战--------------------------- 动作游戏作为一大热门的游戏品类,一直不缺少玩家受众欢迎。但其较高的工艺门槛、技术细节、复杂度等都阻碍了其开发进程。本书结合作者自身的研发经验进行撰写,从角色、战斗、关卡、物理等多个剖面去解析动作游戏在研发中遇到的总总困难,尽可能的绕过或避免研发中的已知问题,最终帮助读者在对于该品类游戏的理解与开发上提供助力。 长期以来,以动作游戏为核心的书籍一直较为匮乏。因此也成为了本书撰写的契机。通过对本书的阅读,不管是爱好动作游戏的独立开发者,还是期望进一步提升自身能力的游戏从业者,相信您都能在其中有所收获。 ---------------------------独立游戏开发:基础、实践与创收(Unity 2D Android篇)--------------------------- 本书将独立游戏开发分为了三个部分。第一部分我们尝试对独立游戏开发进行相关理论分析。第二部分侧重实践,我们首先对游戏进行了简单设计,再使用Unity展示了一款2D Android游戏的具体开发流程,案例专注于游戏层面的设计与编码,不包含晦涩难懂的底层逻辑。第三部分专注于如何使用游戏创造收入,包括使用GooglePlay渠道发布游戏、植入广告、在游戏内创建虚拟商品、实现内购功能等。 本书第一部分适合所有想要了解独立游戏开发的读者,第二、三部分则适合具有一定C#或Java编程语言基础的游戏开发初学者。
目录



---------------------------Unity3D动作游戏开发实战---------------------------


前言
第1篇 概述及前期准备
第1章 概述 2
1.1 本书的侧重点及目标 2
1.2 Unity3D引擎在大环境中的发展现状 4
1.3 Steam、独立游戏及动作游戏的现状 5
1.3.1 Steam平台简介 5
1.3.2 国内独立游戏的开端 6
1.3.3 细看动作类独立游戏 6
1.4 设计目标:大而全还是小而精 7
1.4.1 资源复用 7
1.4.2 舍弃不必要的维度 8
1.4.3 选择合适的题材 8
第2章 前期准备 9
2.1 通用预备知识 9
2.1.1 使用协程分解复杂逻辑 9
2.1.2 自定义的插值公式 10
2.1.3 消息模块的设计 12
2.1.4 模块间的管理与协调 13
2.2 基于编辑器环境的基础知识 14
2.2.1 编辑器工具的编写 15
2.2.2 关联游戏配置数据 19
2.2.3 常量生成器 22
2.3 3D游戏所需要的数学知识 24
2.3.1 向量加减 24
2.3.2 点乘 25
2.3.3 叉乘 26
2.3.4 投影 27
2.3.5 四元数 28
2.4 其他准备 29
2.4.1 关注项目中的GC问题 29
2.4.2 控制台工具的编写 31
2.4.3 项目结构建议 32
2.4.4 项目的程序流程结构建议 33
第2篇 动作游戏核心模块
第3章 物理系统详解 36
3.1 物理系统基本内容梳理 36
3.1.1 系统参数设置 36
3.1.2 Fixed Update更新频率 37
3.1.3 Rigidbody参数简介 38
3.1.4 物理材质设置 38
3.2 常见问题 39
3.2.1 物理步的理解误区 39
3.2.2 重叠与挤出问题 40
3.2.3 地面检测优化处理 40
3.2.4 Dash与瞬移的优化 41
3.2.5 踩头问题及解决方法 42
3.2.6 动画根运动的物理问题 45
3.3 为动作游戏定制碰撞系统 46
3.3.1 设计目标 46
3.3.2 OBB碰撞检测简介 47
3.3.3 Box与Box相交测试 47
3.3.4 Box与Sphere相交测试 50
3.3.5 Sphere与Sphere相交测试 52
3.3.6 不同形状的边界点获取 52
3.3.7 碰撞对象管理器 56
第4章 主角系统设计 58
4.1 基础要素 58
4.1.1 同类游戏对比 58
4.1.2 逻辑编写前的准备工作 59
4.1.3 移动逻辑 59
4.1.4 跳跃逻辑 65
4.1.5 攻击逻辑 67
4.1.6 受击逻辑 69
4.1.7 应对脚本类爆炸的问题 71
4.2 常规功能 72
4.2.1 角色有限状态机 72
4.2.2 设计挂接点接口 73
4.2.3 技能系统 74
4.2.4 连续技功能 75
4.3 场景互动部分 78
4.3.1 角色冻结 78
4.3.2 场景互动组件 79
第5章 关卡部分详解 82
5.1 前期考量 82
5.1.1 从Graybox说起 82
5.1.2 规划层级结构 83
5.1.3 模型的导出与调试 84
5.2 开发阶段深入解析 85
5.2.1 SpawnPoint的使用 85
5.2.2 扩展SpawnPoint 87
5.2.3 对象池的编写 92
5.2.4 关卡模块的序列化 94
5.2.5 战斗壁障的实现 99
5.3 光照与烘焙 102
5.3.1 不同GI类型的选择 102
5.3.2 预计算光照的使用 103
5.3.3 光照探针的使用 104
5.3.4 反射探针简要介绍 104
5.3.5 借助LPPV优化烘焙 105
第6章 战斗部分深入解析 107
6.1 角色模块 107
6.1.1 Motor组件的设计 107
6.1.2 动画事件的处理 110
6.1.3 Animator常见问题整理 112
6.2 设计一个可扩展的战斗系统 114
6.2.1 基础战斗框架编写 115
6.2.2 添加伤害传递逻辑 117
6.2.3 配置伤害碰撞 120
6.2.4 僵直度组件的添加 121
6.2.5 浮空组件的添加 123
6.3 敌人AI的设计 125
6.3.1 AI设计综述 125
6.3.2 Behavior Designer插件简介 127
6.3.3 使用协程来开发AI程序 128
6.3.4 可控制的随机行为 131
6.3.5 设计共享数据段 132
6.3.6 场景信息的获取 133
第7章 其他模块 135
7.1 相机 135
7.1.1 常见的相机模式分类 135
7.1.2 常规第三人称相机实现 136
7.1.3 滑轨相机的实现 140
7.2 Cutscene过场动画 145
7.2.1 不同类型的Cutscene简介 146
7.2.2 使用Timeline 146
7.2.3 使用脚本过场动画 148
7.3 输入、IK与音频管理 149
7.3.1 InControl插件的使用 149
7.3.2 Final-IK插件的使用 151
7.3.3 音频管理 153
第8章 画面特效与后处理 160
8.1 着色器Shader 160
8.1.1 3D游戏中的常见Shader 160
8.1.2 死亡径向溶解效果 161
8.1.3 受击边缘泛光效果 164
8.1.4 基于屏幕门的抖动透明 166
8.2 CommandBuffer的使用 169
8.2.1 CommandBuffer简介 169
8.2.2 制作主角特显效果 171
8.3 后处理 175
8.3.1 PPS后处理工具 175
8.3.2 编写自己的后处理脚本 177
8.4 计算着色器Compute Shader 179
8.4.1 什么是Compute Shader 179
8.4.2 语法及使用简介 179
8.4.3 使用案例 181
第3篇 项目案例实战
第9章 案例剖析 190
9.1 《忍者龙剑传∑2》案例剖析 190
9.1.1 断肢效果的再实现 190
9.1.2 流血喷溅程序的再实现 193
9.1.3 角色残影效果的再实现 202
9.2 《君临都市》案例剖析 206
9.2.1 通用动作方案设计 206
9.2.2 组合攻击的再实现 207
9.3 《战神3》案例剖析 211
9.3.1 吸魂效果的再实现 211
9.3.2 链刃伸缩效果的再实现 216
9.3.3 赫利俄斯照射的再实现 220
第10章 横版动作游戏Demo设计 227
10.1 规划与调配 227
10.1.1 简要规划 227
10.1.2 资源准备 228
10.1.3 项目配置 228
10.2 基础框架的整合 231
10.2.1 战斗模块的整合 231
10.2.2 动画事件的整合 232
10.3 玩家逻辑的整合 233
10.3.1 输入逻辑封装 233
10.3.2 玩家逻辑的编写 234
10.4 敌人逻辑的编写 241
10.4.1 基础逻辑的编写 241
10.4.2 游走逻辑的编写 244
10.4.3 受击逻辑的编写 246
10.5 构建游戏 247
10.5.1 预制体的组装 247
10.5.2 出生点逻辑的编写 248
10.5.3 回顾与总结 249



---------------------------独立游戏开发:基础、实践与创收(Unity 2D Android篇)---------------------------


前言
第1篇 独立游戏开发基础
第1章 基本认识 2
1.1 何为独立游戏 2
1.2 独立游戏开发?开发独立游戏?独立开发游戏? 3
1.3 独立游戏开发者 5
1.4 矛盾碰撞的产物 6
第2章 条件因素 9
2.1 个体条件 9
2.1.1 叛逆 9
2.1.2 边行动边计划 10
2.1.3 良好的身心素质 11
2.2 观念条件 12
2.2.1 不是“电子毒品” 12
2.2.2 伟大的“艺术品” 14
2.2.3 不变的原始目的 15
2.2.4 不盲目排斥商业因素 16
2.2.5 高尚的品质 17
2.3 资金条件 18
2.4 环境条件 19
2.5 知识条件 21
2.5.1 编程 21
2.5.2 美术 21
2.5.3 音乐 22
2.5.4 文学 22
2.5.5 财会 22
2.5.6 商业 22
第3章 团队与个人 23
3.1 团队与个人的关系 23
3.1.1 成员关系 23
3.1.2 委托关系 24
3.1.3 授权关系 25
3.2 团队开发的理由 25
3.2.1 提高生产力 25
3.2.2 利于成长 26
3.2.3 符合社会性本质 27
3.3 独自开发的理由 27
3.3.1 掌握主动权 28
3.3.2 学习目的 29
3.3.3 无合适协作对象 29
3.4 开发者状态 30
3.4.1 全职雇员状态 31
3.4.2 兼职者状态 32
3.4.3 自由职业者状态 32
3.4.4 创业者状态 33
第4章 矛盾双方及融合 34
4.1 独立精神 34
4.1.1 广泛性 35
4.1.2 主观性 36
4.1.3 模糊性 37
4.2 商业力量 39
4.2.1 投资与融资 39
4.2.2 采购与营销 41
4.3 融合 44
4.3.1 融合的条件 45
4.3.2 融合的目的 48
4.4 创收途径 49
4.4.1 一次性销售 49
4.4.2 第三方广告收入 50
4.4.3 虚拟商品销售 50
4.4.4 融资 50
第5章 Unity及相关工具 51
5.1 Unity简介 51
5.1.1 引擎特点 51
5.1.2 下载安装及项目的建立 53
5.1.3 操作界面 55
5.1.4 项目构建与导出 63
5.2 Visual Studio简介 65
5.3 Git与GitHub 67
5.3.1 Git简介 67
5.3.2 GitHub简介 69
5.4 Android Studio简介 72
5.5 其他推荐工具 74
5.5.1 GIMP简介 74
5.5.2 Aseprite简介 75
5.5.3 Blender简介 75
5.5.4 LMMS简介 75
5.5.5 Audacity简介 75
5.5.6 XMind简介 75
5.5.7 Visual Paradigm简介 76
第2篇 独立游戏开发实践
第6章 简单设计 78
6.1 故事 78
6.2 玩法 80
6.3 操作界面 82
6.4 登场对象 83
6.4.1 主角 83
6.4.2 纸飞机 84
6.4.3 金币 84
6.4.4 障碍 84
6.4.5 敌人 85
6.4.6 复活猫 86
6.5 主题 86
第7章 游戏雏形 87
7.1 临时主角 87
7.1.1 创建主角游戏对象 87
7.1.2 图像资源导入设置 89
7.1.3 资源导入设置脚本 90
7.2 移动 91
7.2.1 基于Transform的移动 91
7.2.2 移动改进 92
7.3 碰撞 94
7.3.1 刚体与碰撞器组件 94
7.3.2 碰撞逻辑 96
7.4 物理系统 97
7.4.1 游戏对象调整 98
7.4.2 渲染顺序修正 99
7.4.3 基于物理系统的移动 100
7.4.4 基于物理系统的跳跃与碰撞 101
第8章 主角 104
8.1 行为动画 104
8.1.1 Spritesheet切片 104
8.1.2 首次创建动画 105
8.1.3 后续动画的创建 106
8.2 动画状态机 107
8.2.1 动画控制器窗口 108
8.2.2 状态转换关系 108
8.2.3 脚本逻辑 110
8.2.4 Bug修复 118
8.3 主角、气体与纸飞机 119
8.3.1 主角与气体 119
8.3.2 纸飞机与气体 124
8.3.3 主角与纸飞机 131
第9章 背景画面 134
9.1 近景画面 134
9.1.1 Tilemap功能 134
9.1.2 创建Tile资源 136
9.1.3 铺设Tile 137
9.2 远景画面 138
9.3 屏幕适配 139
9.4 视差效果 141
9.4.1 多重摄像机 141
9.4.2 视差逻辑 143
第10章 敌人及障碍 145
10.1 路障 145
10.1.1 Spritesheet切片 145
10.1.2 路障调整 146
10.2 恶犬 147
10.2.1 动画与游戏对象 147
10.2.2 脚本逻辑 148
10.3 金币炸弹 152
10.3.1 动画与游戏对象 152
10.3.2 脚本逻辑 153
10.4 小鸟 154
10.4.1 PlayerDistanceChecker脚本修改 155
10.4.2 Bird脚本逻辑 156
10.5 美女 158
10.5.1 动画与游戏对象 158
10.5.2 脚本逻辑 159
10.6 汽车 163
10.6.1 动画与游戏对象 163
10.6.2 脚本逻辑 164
10.7 摔倒陷阱 166
10.8 小屁孩儿 168
10.8.1 动画与游戏对象 168
10.8.2 脚本逻辑 169
10.9 UFO 172
10.10 巨人 175
10.10.1 动画与游戏对象 175
10.10.2 脚本逻辑 177
10.11 蝗虫 180
10.11.1 预制件 180
10.11.2 脚本逻辑 181
10.12 恶魔猫 183
10.12.1 动画与游戏对象 183
10.12.2 脚本逻辑 184
第11章 其他登场对象 189
11.1 金币 189
11.1.1 预制件 189
11.1.2 脚本逻辑 189
11.2 复活猫 191
11.2.1 动画与游戏对象 191
11.2.2 脚本逻辑 191
11.2.3 Bug修复 195
11.3 其他主角 197
11.3.1 动画与游戏对象 198
11.3.2 继承PlayerController类 200
11.3.3 继承AirCollisionChecker类 202
11.3.4 继承InhaleController类 203
11.3.5 PlayerSwitcher脚本逻辑 204
第12章 操作界面 208
12.1 跳跃与吹气按钮 208
12.1.1 跳跃按钮 208
12.1.2 吹气按钮 213
12.2 能量条 217
12.2.1 游戏对象 217
12.2.2 脚本逻辑 218
12.3 数据显示区域 220
12.3.1 游戏对象 220
12.3.2 脚本逻辑 222
12.4 暂停退出按钮 227
12.4.1 游戏对象 227
12.4.2 脚本逻辑 230
12.4.3 死亡弹出按钮 232
12.5 游戏开始界面 235
12.5.1 开始与关闭游戏按钮 235
12.5.2 主角切换开关 237
第13章 游戏收尾 241
13.1 3秒倒计时 241
13.1.1 游戏对象 241
13.1.2 脚本逻辑 242
13.2 位置提示线 245
13.2.1 游戏对象 245
13.2.2 脚本逻辑 246
13.3 坏结局与通关 247
13.3.1 心爱的姑娘 247
13.3.2 抵达终点 249
13.3.3 游戏通关界面 253
13.4 音乐及音效 257
13.4.1 游戏音乐 257
13.4.2 游戏音效 259
第3篇 独立游戏开发创收
第14章 游戏发布 272
14.1 运行在Android平台上 272
14.1.1 PlayerController脚本修改 272
14.1.2 手机开发者模式 274
14.1.3 构建与运行 275
14.2 GooglePlay渠道 277
14.2.1 启动PLAY管理中心 278
14.2.2 创建应用并设置版本 280
14.2.3 完善其他条目 282
14.2.4 发布游戏 284
第15章 AdMob广告 289
15.1 AdMob简介 289
15.2 AdMob管理中心 289
15.2.1 进入AdMob管理中心 289
15.2.2 添加应用 291
15.2.3 创建广告单元 292
15.3 复活及广告展示逻辑 296
15.4 导出游戏工程 300
15.5 接入AdMob广告SDK 301
15.5.1 导入广告SDK 301
15.5.2 更新AndroidManifests.xml文件 303
15.5.3 初始化广告SDK 304
15.6 植入广告 306
第16章 GooglePlay内购 309
16.1 复活宝石 309
16.1.1 游戏对象及按钮 309
16.1.2 脚本逻辑 310
16.2 内购逻辑 314
16.2.1 更新AndroidManifests.xml文件 315
16.2.2 导入GooglePlay结算SDK 315
16.2.3 GooglePlay结算服务 316
16.3 发布新版本 319
16.3.1 构建新版本Apk 319
16.3.2 上传新版本Apk 321
16.4 应用内商品 323
16.4.1 设置商家账号 323
16.4.2 创建受管理的商品 324



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4