新書推薦:
《
汉字理论与汉字阐释概要 《说解汉字一百五十讲》作者李守奎新作
》
售價:NT$
347.0
《
汗青堂丛书144·决战地中海
》
售價:NT$
765.0
《
逝去的武林(十周年纪念版 武学宗师 口述亲历 李仲轩亲历一九三零年代武人言行录)
》
售價:NT$
250.0
《
唐代冠服图志(百余幅手绘插画 图解唐代各类冠服 涵盖帝后 群臣 女官 士庶 军卫等 展现唐代社会风貌)
》
售價:NT$
398.0
《
知宋·宋代之科举
》
售價:NT$
454.0
《
那本书是(吉竹伸介与又吉直树 天才联动!)
》
售價:NT$
454.0
《
传播的跃迁:人工智能如何革新人类的交流
》
售價:NT$
505.0
《
纯粹·古代中国的历史与制度
》
售價:NT$
286.0
編輯推薦:
虽然Unreal Engine 4时代推出的蓝图功能使得虚幻引擎变得更加新手友好,但是如果想要全面探索虚幻引擎的强大功能,学会使用C 语言是无法绕开的关键部分。利用C 语言,可以制作出更加精美的游戏作品,为你打开新世界的大门。
通过教读者构建几个功能完备的可执行游戏,全面讲解UE5 C 游戏开发方法,步骤都有图片参考和详细参数标注,即使是新手也能轻松掌握游戏开发的诀窍!
內容簡介:
本书可以让我们沉浸在虚幻的游戏项目中,由行业内四位经验丰富的专业人士撰写,他们有着多年的虚幻引擎开发经验。本书将帮助我们亲身体验游戏项目创作,并了解最新版本的虚幻引擎。首先介绍了虚幻编辑器和关键概念,如Actor、蓝图、动画、继承和玩家输入。然后,进入第一个项目:构建躲避球游戏。在此过程中,我们将学习射线检测、碰撞、投射物、用户界面和音效的概念。第二个项目是横版动作游戏,在游戏的制作过程中我们将理解动画混合、敌人人工智能(AI)、生成对象和收集物品等概念。第三个项目是一款第一人称射击游戏,游戏涵盖创建多人游戏的关键概念。学完本书,我们将对如何使用虚幻引擎提供的工具来构建自己的游戏有一个全面的了解。
卖点1 全面实用,168个知识重、难点讲解,覆盖Unreal Engine 5C 必掌握知识点,助您全面了解UE5 C 游戏开发的逻辑和实操方法。
卖点2 构建三个完整的可玩游戏,让读者在实践中逐步掌握游戏开发方法,通过完成躲避球游戏、横版动作游戏、第一人称游戏,三款功能完备的游戏来巩固读者所学知识并提升学习信心。
卖点3 全彩印刷,详尽步骤讲解,配以丰富操作演示图例,参数设置、操作效果一目了然,适合新手读者模仿操作。
卖点4 提供本书配套代码资源、全书图片、部分章节教学视频以及额外赠送资源的下载服务(读者也可以自行从GitHub下载)
關於作者:
[英]贡萨洛·马克斯(Gon?alo Marques)从6岁起就是一名活跃的游戏玩家。自2016年以来,他一直在使用虚幻引擎,并使用虚幻引擎从事自由职业和咨询工作。贡萨洛还发布了一个名为UI Navigation的免费开源的插件,该插件获得了极高的评价,下载量超过10万次,并且仍在不断地更新和修复。正是这个插件的开发,使他成为Epic MegaGrant的获得者。他目前在里斯本(葡萄牙的首都)的游戏工作室Funcom ZPX工作,该工作室参于了《流放者柯南》(ConanExiles)、《突变元年:伊甸园之路》(Mutant Year Zero)和《疯狂之月》(Moons of Madness)等游戏的开发。目前,贡萨洛正在开发一款基于《沙丘》(Dune)宇宙的新游戏。
德文·谢里(Devin Sherry)是波兰People Can Fly公司的首席技术设计师,曾使用虚幻引擎4开发《先驱者》(Outriders)和《先驱者:世界杀手》(Outriders: Worldslayer)。在此之前,他在塞尔维亚的Digital Arrow工作室担任技术设计师,专注于《未来水世界:深度侵袭》( Aquanox: Deep Descent)的开发。德文拥有从虚幻开发者工具包到最新发布的虚幻引擎5十年的使用经验,他致力于为玩家创造难忘的游戏体验,并将游戏机制变得栩栩如生。
[英]大卫·佩雷拉(Da v i d P e r e i r a )从1998年开始制作游戏,当时他学会了如何使用Clickteam(游戏制作工具的公司名称)的游戏工厂(The Games Factory)(Clickteam的一款产品,用于制作游戏的工具)。他毕业于FCT-UNL的计算机科学专业,在那里他学习了C 、OpenGL和DirectX,这让他能够制作出更复杂的游戏。在IT咨询行业工作了几年后,他加入了葡萄牙的Miniclip游戏公司,参与开发了多款流行的移动游戏,如《8球台球》(8 Ball Pool)、《重力小子1》(Gravity Guy 1)、《重力小子2》(Gravity Guy 2)、《极限滑板》(Extreme Skater)、《 特技滑雪2》(iStunt 2)和《英雄哈勃》(Hambo)以及许多其他游戏。从那时起,他担任MPC的首席开发人员,参与开发了约翰·路易斯圣诞虚拟现实(John Lewis Christmas VR)体验。他还参与了《致命躯壳》(Mortal Shell)早期版本的开发。大卫积极从事志愿者工作,教授患有阿斯伯格综合征的人使用虚幻引擎4制作游戏。现在,他正在开发自己的游戏,这是一款即将公布的第一人称动作角色扮演游戏。
[英]哈马德·福齐(Hammad Fozi)具有深厚的游戏开发背景,自2017年以来一直使用虚幻引擎进行工作。他参与了一些非常成功的AAA项目,如Virtua FanCave(元宇宙)、未命名的AAA级科幻DJ体验、《英雄与将军》(Heroes and Generals)和《VR拳击游戏》(Creed: Riseto Glory VR)。哈马德与曾在育碧娱乐软件公司(Ubisof)、华纳兄弟游戏公司(Warner Bros.Games)、2K Games(一家游戏制作公司)等公司工作过的团队合作!在短暂而令人印象深刻的职业生涯中,他成功地帮助由10—30人组成的团队扩大到150余人的规模。目前,哈马德是一名高级C 游戏开发工程师,在虚拟现实(VR)和增强现实、PC/PS5/Xbox/Android/iOS/macOS游戏开发和Web3/Metaverse/NFT系统(在虚幻引擎内)方面拥有丰富的工作经验。
目錄 :
第1章 虚幻引擎简介
1.1 技术要求
练习1.01 创建虚幻引擎5项目
1.2 了解虚幻引擎编辑器
1.3 浏览编辑器窗口
1.4 “视口”选项卡
1.5 操作actor
练习1.02 在关卡中添加和删除actor
1.6 理解蓝图actor
练习1.03 创建蓝图actor
1.7 蓝图编辑器
1.8 “事件图表”选项卡
练习1.04 创建蓝图变量
练习1.05 创建蓝图函数
1.9 理解Multiply节点
1.10 探索BeginPlay和Tick事件
练习1.06 在Z 轴上偏移TestActor类
1.11 BP_ThirdPersonCharacter蓝图类
1.12 探索网格体和材质的使用
1.12.1 网格体
1.12.2 材质
1.13 在虚幻引擎5中设置材质
活动1.01 在Z 轴上无限推动TestActor
1.14 本章总结
第2章 使用虚幻引擎
2.1 技术要求
2.2 创建并设置一个空白C 项目
练习2.01 创建一个空的C 项目
2.3 在虚幻引擎中内容文件夹的结构
2.4 使用Visual Studio解决方案
在Visual Studio中调试代码
练习2.02 调试第三人称游戏模板代码
2.5 导入所需资产
练习2.03 导入角色FBX文件
2.6 虚幻引擎游戏模式类
2.6.1 游戏模式的默认类
2.6.2 游戏事件
2.6.3 网络
2.6.4 游戏模式基础与游戏模式
2.6.5 关卡和关卡蓝图
2.6.6 虚幻引擎Pawn类
2.6.7 玩家控制器类
练习2.04 设置游戏模式、玩家控制器和Pawn类
2.7 使用动画
2.7.1 动画蓝图
2.7.2 “事件图表”选项卡
2.7.3 AnimGraph
2.7.4 状态机
2.7.5 过渡规则
2.7.6 混合空间
练习2.05 创建人体模型动画
活动2.01 将动画链接到角色
2.8 本章总结
第3章 角色类组件和蓝图设置
3.1 技术要求
3.2 虚幻引擎角色类
扩展角色类
练习3.01 创建和设置第三人称角色C 类
3.3 用蓝图扩展C 类
练习3.02 使用蓝图扩展C
活动3.01 在动画项目中使用蓝图扩展C 角色类
3.4 本章总结
第4章 玩家输入入门
4.1 技术要求
4.2 理解输入操作和输入映射情境
练习4.01 创建移动和跳跃输入操作
4.3 处理玩家输入 77
练习4.02 监听移动和跳跃输入操作
围绕角色转动摄像机
活动4.01 为角色添加行走逻辑
4.4 本章总结
第5章 射线检测
5.1 技术要求
5.2 碰撞简介
5.3 设置项目
练习5.01 将DodgeballCharacter转换为俯视的视角
5.4 理解射线检测
5.5 创建EnemyCharacter C 类
练习5.02 创建执行射线检测的CanSeeActor函数
5.6 可视化射线检测
练习5.03 创建LookAtActor函数
5.7 创建EnemyCharacter蓝图类
5.8 扫掠检测
练习5.04 执行扫掠检测
5.8.1 更改可见性检测响应
5.8.2 多射线检测
5.8.3 摄像机检测通道
练习5.05 创建一个自定义的EnemySight检测通道
活动5.01 创建SightSource属性
5.9 本章总结 109
第6章 设置碰撞对象
6.1 技术要求 111
6.2 理解虚幻引擎5中的物体碰撞 111
6.2.1 理解碰撞组件
6.2.2 理解碰撞事件
6.2.3 理解碰撞通道
练习6.01 创建Dodgeball类
6.3 创建物理材质
练习6.02 将ProjectleMovementComponent添加到
DodgeballProjectile中
6.3.1 定时器简介
6.3.2 理解如何生成actor
练习6.03 向EnemyCharacter类添加投掷逻辑
6.4 创建Wall类
练习6.04 创建Wall类
6.5 创建VictoryBox actor
练习6.05 创建VictoryBox类
练习6.06 给DodgeballProjectile类中添加ProjectileMovementComponent的
getter函数
活动6.01 将SpawnActor函数替换为EnemyCharacter中引用的
SpawnActorReference函数
6.6 本章总结
第7章 使用虚幻引擎5中的实用工具
7.1 技术要求
7.2 好的实践——松耦合
7.3 蓝图函数库
练习7.01 将CanSeeActor函数移动到蓝图函数库中
7.4 Actor组件
练习7.02 创建HealthComponent的Actor组件
练习7.03 集成HealthComponent Actor组件
7.5 探索接口
7.6 蓝图本地事件
练习7.04 创建HealthInterface类
活动7.01 将LookAtActor逻辑移到Actor组件
7.7 本章总结
第8章 使用UMG创建用户界面
8.1 技术要求
8.2 游戏用户界面
8.3 UMG基础知识
练习8.01 创建控件蓝图
8.3.1 锚点的简介
练习8.02 编辑UMG锚点
练习8.03 创建RestartWidget C 类
练习8.04 创建将RestartWidget类添加到屏幕的逻辑
练习8.05 创建DodgeballPlayerController蓝图类
8.3.2 理解进度条
练习8.06 创建生命值进度条的C 逻辑
活动8.01 改进RestartWidget类
8.4 本章总结
第9章 添加音视频元素
9.1 技术要求
9.2 虚幻引擎5中的音频
练习9.01 导入音频文件
练习9.02 当躲避球从地面反弹时播放声音
音效衰减
练习9.03 将反弹声音转换成3D声音
练习9.04 为游戏添加背景音乐
9.3 理解粒子系统
练习9.05 当躲避球击中玩家时生成粒子系统.
活动9.01 躲避球击中玩家时播放声音
9.4 探索关卡设计
练习9.06 创建关卡框架
9.5 额外的功能
9.6 本章总结
第10章 创建超级横版动作游戏
10.1 技术要求
10.2 项目分解
玩家角色
10.3 将第三人称游戏模板转换为横版动作
练习10.01 创建横版动作项目并使用角色移动组件
活动10.01 让角色跳得更高
10.4 探索横版动作游戏的功能
10.4.1 敌人角色
10.4.2 升级
10.4.3 收集品
练习10.02 探索人物角色编辑器并操作默认的人体模型骨骼权重
活动10.02 骨骼的操作和动画
10.5 理解虚幻引擎5中的动画
10.5.1 骨骼
10.5.2 骨骼网格体
10.5.3 动画序列
练习10.03 导入和设置角色和动画
活动10.03 导入更多自定义动画以预览角色运行
10.6 本章总结
第11章 使用混合空间1D、键绑定和状态机
11.1 技术要求
11.2 创建混合空间
混合空间1D与普通混合空间
练习11.01 创建角色移动混合空间1D
活动11.01 添加Walking和Running动画到混合空间
11.3 主角动画蓝图
动画蓝图
练习11.02 将混合空间添加到角色动画蓝图
11.4 速度向量是什么
练习11.03 将角色的Speed变量传递到混合空间
活动11.02 预览在游戏中运行的动画
11.5 增强型输入系统
练习11.04 为冲刺添加输入
练习11.05 修改角色蓝图
练习11.06 编码角色的冲刺功能
活动11.03 实现投掷输入
11.6 使用动画状态机
练习11.07 玩家角色移动和跳跃状态机
过渡规则
练习11.08 将状态和过渡规则添加到状态机
练习11.09 Time Remaining Ratio函数
活动11.04 完成Movement和Jumping状态机
11.7 本章总结
第12章 动画混合和蒙太奇
12.1 技术要求
12.2 动画混合、动画插槽和动画蒙太奇
练习12.01 设置动画蒙太奇
12.3 动画蒙太奇
练习12.02 在蒙太奇中添加Throw动画
12.4 动画插槽管理器
练习12.03 添加新的动画插槽
12.5 Save Cached Pose节点
练习12.04 移动状态机中应用Save Cached Pose节点
12.6 Layered blend per bone
练习12.05 将动画与上半身动画插槽混合
练习12.06 预览Throw动画
12.7 超级横版动作游戏中的敌人
练习12.07 创建敌人基础C 类
练习12.08 创建和应用敌人动画蓝图
12.8 材质和材质实例
练习12.09 创建并应用敌人材质实例
活动12.01 更新混合权重
12.9 本章总结
第13章 创建和添加敌人人工智能
13.1 技术要求
13.2 敌人人工智能
13.3 AI控制器
自动拥有人工智能
练习13.01 实现AI控制器
13.4 导航网格体
练习13.02 为人工智能敌人实现导航网格体
13.5 重新生成导航网格体
练习13.03 重新生成导航网格体体积参数
活动13.01 创建新关卡
13.6 行为树和黑板
13.6.1 任务
13.6.2 装饰器
13.6.3 服务
练习13.04 创建人工智能行为树和黑板
练习13.05 创建新的行为树任务
练习13.06 创建行为树逻辑
活动13.02 人工智能移动到玩家的位置
练习13.07 创建敌人巡逻点
13.7 向量变换
练习13.08 在数组中选择一个随机点
练习13.09 引用巡逻点actor
练习13.10 更新BTTask_FindLocation任务
13.8 玩家投射物
练习13.11 创建玩家投射物
练习13.12 初始化PlayerProjectile类的设置
活动13.03 创建玩家投射物蓝图
13.9 本章总结
第14章 生成玩家投射物
14.1 技术要求
14.2 动画通知和动画通知状态
练习14.01 创建UAnimNotify类
练习14.02 将新通知添加到Throw动画蒙太奇
14.3 播放动画蒙太奇 322
14.3.1 在蓝图中播放动画蒙太奇
14.3.2 在C 中播放动画蒙太奇
练习14.03 在C 中播放Throw动画
练习14.04 创建投射物生成插槽
练习14.05 准备SpawnProjectile()函数
练习14.06 更新Anim_ProjectleNotify类
14.4 摧毁actor
练习14.07 创建DestroyEnemy()函数
练习14.08 摧毁投射物
活动14.01 允许投射物摧毁敌人
14.5 理解和实现视觉和音频特效
14.5.1 视觉特效(VFX)
14.5.2 音频特效(SFX)
练习14.09 添加敌人被摧毁时的效果
练习14.10 为玩家的投射物添加效果
练习14.11 为投射物添加视觉特效和音频特效
活动14.02 增加投射物被摧毁时的效果..
14.6 本章总结
第15章 探索收集品、能量升级和拾取物
15.1 技术要求 3
15.2 理解URotatingMovementComponent
练习15.01 创建PickableActor_Base类并添加URotatingMovement-Component
活动15.01 在PickableActor_Base中检测玩家重叠和生成效果
练习15.02 创建PickableActor_Collectable类
活动15.02 完成PickableActor_Collectable actor
15.3 使用UE_LOG记录变量
练习15.03 记录玩家金币的数量
15.4 介绍虚幻动态图形UI
理解“文本”控件
练习15.04 创建金币计数器UI HUD元素
15.5 添加和创建UMG用户控件
练习15.05 添加金币计数器UI到玩家屏幕
15.6 使用计时器
练习15.06 为玩家添加药剂的能量升级行为
活动15.03 创建药剂升级actor
练习15.07 创建Brick类
练习15.08 添加Brick类的C 逻辑
15.7 本章总结
15.8 额外的挑战
第16章 多人游戏基础
16.1 技术要求
16.2 多人游戏基础知识
16.3 理解服务器
16.3.1 专用的服务器
16.3.2 监听服务器
16.4 理解客户端394
练习16.01 在多人游戏中测试第三人称游戏模板
16.5 打包项目
16.6 探索连接和所有权
16.7 理解角色
16.7.1 服务器上生成actor
16.7.2 客户端上生成actor
16.7.3 服务器上生成玩家拥有的pawn
16.7.4 客户端上生成玩家拥有的pawn
练习16.02 实现所有权和角色
16.7.5 服务器窗口的输出
16.7.6 服务器角色(Server Character)
16.7.7 客户端1角色(Client 1 Character)
16.7.8 OwnershipTest actor
16.7.9 客户端(Client 1)窗口的输出
16.8 理解变量复制
16.8.1 复制变量
练习16.03 使用Replicated、ReplicatedUsing、DOREPLIFETIME和DOREPLIFETIME_CONDITION复制变量
16.8.2 服务器窗口的输出
16.8.3 客户端1窗口的输出
16.9 探索2D混合空间
练习16.04 创建一个运动的2D混合空间
16.10 Transform (Modify) Bone节点
练习16.05 创建能上下查看的角色
活动16.01 为多人第一人称射击游戏项目创建角色
16.11 本章总结
第17章 使用远程过程调用
17.1 技术要求
17.2 理解远程过程调用
17.2.1 服务器RPC.
17.2.2 多播RPC
17.2.3 客户端RPC
17.2.4 使用RPC时的重要注意事项
练习17.01 使用远程过程调用
17.3 向编辑器公开枚举
17.3.1 TEnumAsByte
17.3.2 UMETA
17.3.3 BlueprintType
练习17.02 在编辑器中使用C 枚举
17.4 使用数组索引包装
练习17.03 使用数组索引包装在枚举之间循环
活动17.01 为多人第一人称射击游戏添加武器和弹药.
17.5 本章总结
第18章 在多人游戏中使用游戏玩法框架类
18.1 技术要求
18.2 在多人游戏中访问游戏玩法框架实例
练习18.01 显示游戏玩法框架实例值
18.2.1 服务器窗口的输出
18.2.2 客户端1窗口的输出
18.3 使用游戏模式、玩家状态和游戏状态
18.3.1 游戏模式
18.3.2 玩家状态
18.3.3 游戏状态.
18.3.4 有用的内置函数
练习18.02 制作一个简单的多人拾取游戏
活动18.01 在多人第一人称射击游戏中添加死亡、重生、计分板、杀戮限制和拾取
18.4 本章总结