编辑推荐
本书是学习Unreal的经典入门级图书,是24小时系列中的一本,品质很有保障。同时,本书也是由EPIC Games官方授 权的图书,在内容专业度和可用性方面都得到了更好的保障,是读者不 可 多 得的参考读物。选用国内专业的游戏专业人士参与翻译,本书译者是知名的Unreal培训机构的讲师,对于游戏开发和计算机编程有着丰富的经验。
内容简介
虚幻引擎(Unreal Engine)是目前世界知名度高、应用广泛的游戏引擎之一,全新版本的虚幻引擎4(Unreal Engine 4,UE4)非常强大且灵活,为设计人员提供了一 款高效的设计工具。本书全面介绍了有关UE4的游戏开发技巧。全书从基本的安装和配置讲起,陆续介绍了Gameplay框架、相关的单位、静态网络Actor、光照和渲染、音频系统元素、游戏世界的搭建、蓝图系统以及一系列典型的游戏案例等。读者将从本书了解到关于UE4的各类使用技巧和开发案例。本书内容全面,讲解细致,非常适合想要学习游戏设计与开发的读者阅读。无论是游戏开发领域的新手,还是普通的游戏爱好者,亦或是想成为游戏开发高手的读者,都能从本书获益。
作者简介
Aram Cookson是萨凡纳艺术与设计学院(Savannah College of Art and Design,SCAD)交互设计与游戏开发(Interactive Design and Game Development,IDGD)部的教授。他拥有雕塑绘画艺术学士学位和计算机艺术硕士学位,在完成了硕士学位后,辅助启动了IDGD程序,并担任了9年研究生协调员。在过去的15年里,Aram开发并教授了一系列利用虚幻引擎技术的线下和线上游戏艺术和游戏设计课程。Ryan DowlingSoka是加拿大温哥华市的微软工作室联盟的战争机器工作室的一名技术美工。他主要负责团队中的内容功能,在虚幻引擎4中制作破坏物体、植被、视觉效果、后期处理和用户界面。之前,他曾在微软公司工作,用Unity5为Microsoft HoloLens开发应用。Ryan在各种娱乐软件创作方面是专家,包括Maya、Houdini、Substance Designer、Photoshop、Nuke和After Effects。Ryan拥有萨凡纳艺术与设计学院的视觉特效艺术学士学位。对互动故事的激情则源于20世纪90年代游戏机角色扮演游戏(《博德之门2》和《异域镇魂曲》)。Ryan专注于应用交互式技术来解决现代游戏中的难题。在制作视频游戏之外的业余时间,Ryan晚上会和他的妻子跳舞。Clinton Crumpler 目前是加拿大温哥华市的微软工作室联盟的一位高 级环境美术师,之前是Bethesda的战神工作室KIXEYE、Army Game Studio和各种其他独立工作室的一名美术师。Clinton主要关注的领域是环境美术、着色器开发和艺术指导。Clinton与Digital Tutors合 作发布了许多视频教程,主要关注虚幻引擎的游戏美术开发。他在佐治亚州萨凡纳市的萨凡纳艺术与设计学院获得了交互与游戏设计硕士学位和动画艺术学士学位。在到萨凡纳艺术与设计学院前,他已经获得了位于弗吉尼亚州法姆维尔市的朗沃德大学的平面设计艺术学士学位。关于他和他的美术作品的更多信息可以在www.clintoncrumpler.com上找到。
目录
- 第 1章 虚幻引擎4简介 1
- 1.1 安装虚幻引擎 2
- 1.1.1 下载和安装启动器 2
- 1.1.2 下载和安装虚幻引擎 3
- 1.2 创建你的* 一个项目 4
- 1.3 学习界面 5
- 1.3.1 菜单栏 6
- 1.3.2 模式面板 6
- 1.3.3 世界大纲面板 7
- 1.3.4 细节面板 8
- 1.3.5 内容浏览器面板 8
- 1.3.6 视口面板 9
- 1.4 视图模式和可视化工具 10
- 1.4.1 显示标签 11
- 1.4.2 透视视口在关卡中导航 11
- 1.4.3 关卡编辑器工具栏 12
- 1.5 试玩关卡 12
- 1.6 小结 13
- 1.7 问&答 13
- 1.8 讨论 13
- 1.8.1 提问 13
- 1.8.2 回答 13
- 1.9 练习 14
- 第2章 理解Gameplay框架 15
- 2.1 可用的资源 15
- 2.1.1 在编辑器中播放 16
- 2.1.2 项目文件夹结构 17
- 2.2 资源引用和引用查看器 22
- 2.3 Gameplay框架 23
- 2.3.1 GameMode类 23
- 2.3.2 Controller类 24
- 2.3.3 Pawn和Character类 24
- 2.3.4 HUD类 24
- 2.4 小结 26
- 2.5 问&答 26
- 2.6 讨论 27
- 2.6.1 提问 27
- 2.6.2 回答 27
- 2.7 练习 27
- 第3章 坐标系、变换、单位和组织 28
- 3.1 理解笛卡儿坐标系 28
- 3.2 使用变换 29
- 3.2.1 变换工具 29
- 3.2.2 平移变换 30
- 3.2.3 缩放变换 30
- 3.2.4 旋转变换 30
- 3.2.5 交互式变换和手动变换 31
- 3.2.6 世界变换和本地变换 31
- 3.3 评估单位和测量 31
- 3.3.1 网格单位 32
- 3.3.2 对齐到网格 32
- 3.4 组织场景 33
- 3.4.1 世界大纲视图 33
- 3.4.2 文件夹 34
- 3.4.3 组合 35
- 3.4.4 图层 36
- 3.5 附加 36
- 3.6 小结 37
- 3.7 问&答 38
- 3.8 讨论 38
- 3.8.1 提问 38
- 3.8.2 回答 38
- 3.9 练习 39
- 第4章 使用静态网格Actor 40
- 4.1 静态网格资源 40
- 4.2 静态网格物体编辑器 41
- 4.2.1 打开静态网格物体编辑器窗口 41
- 4.2.2 导入静态网格资源 42
- 4.3 查看UV布局 43
- 4.4 碰撞壳 44
- 4.4.1 查看碰撞壳 45
- 4.4.2 编辑碰撞壳 45
- 4.4.3 壳分解 47
- 4.4.4 每多边形碰撞 47
- 4.5 静态网格Actor 48
- 4.5.1 放置静态网格Actor到关卡中 48
- 4.5.2 移动性设置 49
- 4.5.3 为一个静态网格Actor
- 改变网格引用 49
- 4.5.4 在一个静态网格Actor上替换材质 49
- 4.5.5 在一个静态网格Actor上编辑碰撞响应 50
- 4.5.6 碰撞预设 50
- 4.5.7 Collision Enabled 51
- 4.5.8 Object Type 51
- 4.5.9 碰撞响应标签 52
- 4.6 小结 52
- 4.7 问&答 52
- 4.8 讨论 52
- 4.8.1 提问 53
- 4.8.2 回答 53
- 4.9 练习 53
- 第5章 使用光照和渲染 54
- 5.1 学习光照术语 54
- 5.2 理解光源类型 55
- 5.2.1 添加点光源 55
- 5.2.2 添加聚光源 56
- 5.2.3 添加天空光源 57
- 5.2.4 添加定向光源 58
- 5.3 使用光源属性 58
- 5.4 构建光照 59
- 5.4.1 Swarm Agent 59
- 5.4.2 移动性 61
- 5.5 小结 62
- 5.6 问&答 62
- 5.7 讨论 62
- 5.7.1 提问 62
- 5.7.2 回答 63
- 5.8 练习 63
- 第6章 使用材质 64
- 6.1 理解材质 64
- 6.2 基于物理渲染 65
- 6.3 材质输入类型 65
- 6.3.1 基础颜色 65
- 6.3.2 金属 66
- 6.3.3 粗糙度 66
- 6.3.4 法线 66
- 6.4 创建贴图 67
- 6.4.1 贴图尺寸 67
- 6.4.2 2的幂 68
- 6.4.3 贴图文件类型 68
- 6.4.4 导入贴图 69
- 6.5 创建一个材质 69
- 6.5.1 输入和输出 70
- 6.5.2 值节点 71
- 6.5.3 材质实例 72
- 6.6 小结 74
- 6.7 问&答 74
- 6.8 讨论 75
- 6.8.1 提问 75
- 6.8.2 回答 75
- 6.9 练习 76
- 第7章 使用音频系统元素 77
- 7.1 介绍音频基础 77
- 7.1.1 Audio Component 77
- 7.1.2 导入音频文件 78
- 7.2 使用音效Actor 79
- 7.2.1 设置Attenuation 80
- 7.2.2 使用Modulation属性 81
- 7.2.3 创建Sound Cue 81
- 7.2.4 高 级Sound Cue 83
- 7.3 使用Audio Volume控制音效 84
- 7.4 小结 85
- 7.5 问&答 85
- 7.6 讨论 85
- 7.6.1 提问 85
- 7.6.2 回答 85
- 7.7 练习 86
- 第8章 创建地貌和植被 87
- 8.1 使用地貌 87
- 8.1.1 地貌工具 87
- 8.1.2 管理标签页 88
- 8.1.3 高度图 88
- 8.1.4 创建地貌 88
- 8.1.5 地貌管理 90
- 8.2 雕刻形状和体积 90
- 8.2.1 工具菜单 91
- 8.2.2 画刷菜单 91
- 8.2.3 衰减菜单 91
- 8.2.4 描画 91
- 8.2.5 地貌材质 92
- 8.3 使用植被 94
- 8.4 小结 96
- 8.5 问&答 96
- 8.6 讨论 96
- 8.6.1 提问 97
- 8.6.2 回答 97
- 8.7 练习 97
- 第9章 游戏世界搭建 98
- 9.1 搭建游戏世界 99
- 9.1.1 环境叙事 99
- 9.1.2 关卡的结构 100
- 9.2 搭建游戏世界流程 100
- 9.2.1 建立比例 100
- 9.2.2 建立范围 101
- 9.2.3 壳和阻挡 102
- 9.2.4 放置道具和资源 104
- 9.2.5 视觉复杂性和取景 104
- 9.2.6 光照和音效 107
- 9.2.7 试玩和完善 109
- 9.3 小结 111
- 9.4 问&答 111
- 9.5 讨论 112
- 9.5.1 提问 112
- 9.5.2 回答 112
- 9.6 练习 112
- 第 10章 制作粒子效果 114
- 10.1 理解粒子和数据类型 114
- 10.2 使用Cascade编辑器 115
- 10.2.1 使用发射器和模块 116
- 10.2.2 使用曲线编辑器 118
- 10.3 使用常见模块 119
- 10.3.1 Required模块 119
- 10.3.2 Spawn模块 120
- 10.3.3 Lifetime模块 121
- 10.3.4 Initial Size和Size By Life模块 121
- 10.3.5 Initial Color, Scale Color/Life和Color Over Life模块 121
- 10.3.6 Initial Velocity、Inherit Parent Velocity和Const Acceleration模块 122
- 10.3.7 Initial Location和Sphere模块 122
- 10.3.8 Initial Rotation和Rotation Rate模块 123
- 10.4 为粒子设置材质 123
- 10.5 触发粒子系统 125
- 10.5.1 自动激活 125
- 10.5.2 通过关卡蓝图激活粒子系统 126
- 10.6 小结 126
- 10.7 问&答 126
- 10.8 讨论 127
- 10.8.1 提问 127
- 10.8.2 回答 127
- 10.9 练习 127
- 第11章 使用Skeletal Mesh Actor 128
- 11.1 定义Skeletal Mesh 128
- 11.2 导入Skeletal Mesh 131
- 11.3 学习Persona 134
- 11.3.1 Skeleton模式 134
- 11.3.2 Mesh模式 135
- 11.3.3 Animation模式 136
- 11.3.4 Graph模式 138
- 11.4 使用Skeletal Mesh Actor 139
- 11.5 小结 141
- 11.6 问&答 141
- 11.7 讨论 141
- 11.7.1 提问 141
- 11.7.2 回答 142
- 11.8 练习 142
- 第 12章 Matinee和影片 143
- 12.1 Matinee Actor 143
- 12.2 Matinee编辑器 145
- 12.2.1 轨迹面板 145
- 12.2.2 设置序列帧长度 146
- 12.2.3 播放条 146
- 12.2.4 Groups 146
- 12.2.5 轨迹 147
- 12.2.6 文件夹 148
- 12.3 曲线编辑器 149
- 12.4 使用其他轨迹 151
- 12.5 在Matinee中使用摄像机 152
- 12.5.1 Camera Group和Actor 152
- 12.5.2 Director Group 154
- 12.5.3 使用Matinee数据资源 155
- 12.6 小结 156
- 12.7 问&答 156
- 12.8 讨论 156
- 12.8.1 提问 156
- 12.8.2 回答 157
- 12.9 练习 157
- 第 13章 学习使用物理系统 158
- 13.1 在UE4中使用物理 158
- 13.1.1 常见物理术语 159
- 13.1.2 分配物理Game Mode给一个关卡 159
- 13.1.3 项目设置和世界物理设置 160
- 13.2 模拟物理 161
- 13.3 使用物理材质 162
- 13.3.1 创建一个物理材质资源 163
- 13.3.2 分配一个物理材质给一个
- Static Mesh Actor 163
- 13.3.3 分配一个物理材质给一个材质 164
- 13.4 使用约束 165
- 13.4.1 附加Physics Actor 165
- 13.4.2 Physics Constraint Actor 166
- 13.5 Force Actor 168
- 13.5.1 Physics Thruster Actor 168
- 13.5.2 Radial Force Actor 169
- 13.6 小结 170
- 13.7 问&答 170
- 13.8 讨论 171
- 13.8.1 提问 171
- 13.8.2 回答 171
- 13.9 练习 171
- 第14章 介绍蓝图可视化脚本系统 173
- 14.1 可视化脚本基础 173
- 14.2 理解蓝图编辑器 174
- 14.3 脚本中的基本概念 178
- 14.3.1 事件 178
- 14.3.2 函数 180
- 14.3.3 变量 181
- 14.3.4 运算符和条件 184
- 14.3.5 脚本组织和注释 185
- 14.4 小结 186
- 14.5 问&答 186
- 14.6 讨论 186
- 14.6.1 提问 186
- 14.6.2 回答 187
- 14.7 练习 187
- 第15章 使用关卡蓝图 189
- 15.1 Actor碰撞设置 190
- 15.2 分配Actor给事件 191
- 15.3 分配Actor给引用变量 193
- 15.3.1 Actor组件 193
- 15.3.2 获得和设置Actor的属性 194
- 15.3.3 函数目标 194
- 15.3.4 Activate属性 196
- 15.3.5 Play Sound at Location函数 197
- 15.3.6 使用物理Actor激活事件 199
- 15.4 小结 199
- 15.5 问&答 200
- 15.6 讨论 200
- 15.6.1 提问 200
- 15.6.2 回答 201
- 15.7 练习 201
- 第 16章 使用蓝图类 202
- 16.1 使用蓝图类 202
- 16.2 蓝图编辑器界面 204
- 16.3 使用组件 205
- 16.3.1 添加组件 205
- 16.3.2 Viewport面板 205
- 16.3.3 编写组件蓝图脚本 207
- 16.4 使用Timeline 209
- 16.5 编写一个脉冲光源 212
- 16.6 小结 217
- 16.7 问&答 217
- 16.8 讨论 217
- 16.8.1 提问 217
- 16.8.2 回答 218
- 16.9 练习 218
- 第17章 使用可编辑变量和Construction Script 219
- 17.1 设置 219
- 17.2 可编辑变量 219
- 17.3 使用Construction Script 221
- 17.3.1 添加Static Mesh Component 222
- 17.3.2 添加Static Mesh Component 224
- 17.4 小结 226
- 17.5 问&答 227
- 17.6 讨论 227
- 17.6.1 提问 227
- 17.6.2 回答 227
- 17.7 练习 228
- 第18章 制作按键输入事件和生成Actor 229
- 18.1 为什么生成特别重要 229
- 18.2 创建一个要生成的蓝图类 230
- 18.2.1 使用Construction Script 230
- 18.2.2 使用Expose on Spawn变量属性 232
- 18.3 设置生成器蓝图 232
- 18.4 从一个类生成一个Actor 234
- 18.5 小结 237
- 18.6 问&答 237
- 18.7 讨论 237
- 18.7.1 提问 237
- 18.7.2 回答 238
- 18.8 练习 238
- 第19章 制作一个遭遇战 240
- 19.1 项目的Game Mode 240
- 19.1.1 平视显示器 241
- 19.1.2 游戏计时器和重生系统 241
- 19.2 了解角色的能力 241
- 19.3 使用蓝图类 242
- 19.3.1 BP_Common文件夹 243
- 19.3.2 BP_Turrets文件夹 245
- 19.3.3 BP_Respawn文件夹 245
- 19.3.4 BP_Pickup文件夹 246
- 19.3.5 BP_Levers文件夹 246
- 19.4 Actor和组件Tag 247
- 19.5 小结 247
- 19.6 问&答 248
- 19.7 讨论 248
- 19.7.1 提问 248
- 19.7.2 回答 248
- 19.8 练习 248
- 第 20章 创建一个街机射击游戏:输入系统和Pawn 250
- 20.1 通过设计总结确认需求 251
- 20.2 创建一个游戏项目 251
- 20.3 创建一个自定义Game Mode 253
- 20.4 创建一个自定义Pawn和
- Player Controller 255
- 20.5 控制一个Pawn的移动 257
- 20.5.1 禁用默认移动 259
- 20.5.2 设置输入行为和按键绑定 259
- 20.5.3 使用输入事件移动一个Pawn 261
- 20.6 设置一个固定摄像机 263
- 20.7 小结 264
- 20.8 问&答 264
- 20.9 讨论 265
- 20.9.1 提问 265
- 20.9.2 回答 265
- 20.10 练习 265
- 第 21章 创建一个街机射击游戏:障碍物和可拾取物品 267
- 21.1 创建一个障碍物基类 268
- 21.2 让你的障碍物移动 270
- 21.3 伤害Pawn 273
- 21.4 在死亡时重新开始游戏 276
- 21.5 创建一个治疗可拾取物品 278
- 21.6 创建一个Actor Spawner 283
- 21.7 清理旧的障碍物 287
- 21.8 小结 287
- 21.9 问&答 287
- 21.10 讨论 288
- 21.10.1 提问 288
- 21.10.2 回答 289
- 21.11 练习 289
- 第22章 使用UMG 290
- 22.1 创建一个控件蓝图 290
- 22.2 浏览UMG界面 291
- 22.2.1 Designer模式 291
- 22.2.2 Graph模式 292
- 22.2.3 设置分辨率 293
- 22.2.4 锚点和DPI缩放 294
- 22.3 创建一个开始菜单 294
- 22.3.1 导入资源 294
- 22.3.2 放置控件到画布上 296
- 22.4 案例菜单系统 302
- 22.5 小结 303
- 22.6 问&答 303
- 22.7 讨论 303
- 22.7.1 提问 304
- 22.7.2 回答 304
- 22.8 练习 304
- 第 23章 制作一个可执行文件 305
- 23.1 烘焙内容 305
- 23.2 为Windows平台打包一个项目 306
- 23.3 对于安卓和iOS打包的资源 309
- 23.4 访问高 级打包设置 309
- 23.5 小结 310
- 23.6 问&答 311
- 23.7 讨论 311
- 23.7.1 提问 311
- 23.7.2 回答 311
- 23.8 练习 311
- 第 24章 使用移动设备 313
- 24.1 为移动设备开发 314
- 24.1.1 为移动设备预览 314
- 24.1.2 为移动设备优化 316
- 24.1.3 设置编辑器目标 319
- 24.2 使用触摸控制 320
- 24.2.1 虚拟摇杆 321
- 24.2.2 Touch事件 322
- 24.3 使用一个设备的运动数据 324
- 24.4 小结 326
- 24.5 问&答 326
- 24.6 讨论 327
- 24.6.1 提问 327
- 24.6.2 回答 327
- 24.7 练习 328