UE4游戏客户端开发进阶学习指南
前言
两年多前写过一篇入门指南,教大家在短时间内快速入门UE4的使用,在知乎被很多人收藏了。如今鸡佬使用UE快三年了,是时候更新一下进阶版本的学习指南。本文对于读者的要求:
- 有一定的C++基础
- 已经入门UE,能够用蓝图和C++做一些简单的功能
对于学习资料,首先本文列举的所有学习资料都是鸡佬经过精挑细选的,会综合考虑文章质量、学习难度、重要性等各个维度。其中会分为必修和选修两个部分。必修是很重要且强烈推荐看的学习资料。选修的话,有些学习难度比较大,有些相对来说不是那么重要。推荐的学习顺序是先把必修的全部看完,再根据个人需要学习选修部分的资料。
框架图解
在深入学习UE之前,需要对UE包含哪些东西有一个大概的了解。正好UE官方自己曾出过一个关于UE各个模块的引擎架构图,是非常好的学习资料。如下图是Character模块的部分架构图。全模块完整架构图见Gitub地址。

Programming
必修
官方文档——编程与脚本编写
UProperty关键字全说明
《InsideUE4》UObject类型系统-反射实战
选修
深入蓝图开发——理解蓝图架构
深入蓝图开发——理解异步节点
一文搞懂StaticClass、GetClass和ClassDefaultObject
一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass
《InsideUE4》UObject类型系统系列
这个模块选择了一些C++编程和蓝图开发相关的资料。对于蓝图和UE的UObject整个框架的理解将帮助你更好的开发上层玩法系统。另外还加了一个UProperty关键字的说明文章,方便查阅。
GamePlay
必修
《InsideUE4》GamePlay架构系列
GAS入门
官方文档——GAS
GAS各个模块的介绍和使用
选修
移动组件源码解读
GAS预测机制讲解
这个模块是玩法相关的学习资料。首先要做的肯定是配合前面的框架图来理解UE的GamePlay架构。然后就是学习GAS(Game Ability System)了,即UE的技能系统。虽然GAS叫作技能系统,但是可以使用的地方远远不止角色技能。比如一局pvp游戏阶段的切换也是可以用GAS来做的。可以说满足需要复制、可以用Tag表示状态、有开始和结束时机的一切事情都可以考虑用GAS来实现。
Animation
必修
官方文档——骨骼网格动画
深入浅出学习ALS高级运动系统视频教程
选修
过场动画Sequencer系列教程
UE4/UE5 动画的原理和性能优化
RootMotion原理分析
动画蓝图的初始化和更新流程解析
动画方面还是一样先看官方文档,然后是ALS的视频教程。ALS高级运动系统,是UE的一个动画插件,实现了3A级别水准的走跑跳蹲的各种基础移动姿势,以及换武器、攀爬、八方向移动、IK等各种动画相关的功能,而且是纯蓝图实现的。学习ALS能够对UE的动画蓝图能够做什么功能以及怎么做有一个非常清晰的了解。基本上你跟着第二个视频教程完整学一遍,UE动画蓝图的所有功能你就可以掌握了。选修部分包含了一个制作过场动画的教程(一般客户端涉及这方面的需求比较少有需要再看),还有动画底层的实现细节源码解析(比较难懂,根据个人需要学习)。
UI
必修
UMG各个控件使用讲解
- CanvasPanel、HorizontalBox、Overlay、UniformGrid Panel、GridPanel
- WrapBox、ScrollBox、SizeBox、Switcher、SafeZone
- ListView、TileView、TreeView
- DynamicEntryBox、InvalidationBox、RetainerBox、TextBox、RichTextBlock
- Border、Button、CheckBox、Image、NamedSlot
- ProgressBar、Slider、ExpandableArea、SpinBox、CircularThrobber
- MenuAnchor、Space、BackgroundBlur
ListView踩坑
UMG生命周期
Geometry应用——获得UMG屏幕位置
选修
UI的制作与优化
Slate源码分析——点击事件的触发流程
动态创建UMG的Animation
UI方面先看各种控件的使用细节。熟练之后就是研究Slate,或者是实现一些根据项目定制比较骚的功能。比如说想让一个按钮既可以拖动,又可以点击,又可以在列表里面滑动。或者是双层嵌套LIstview,里面和外面的ListView都可以滚。
AI
必修
官方文档——AI
对行为树几个特性的理解
选修
AI_Perception感知模块的使用和部分源码讲解
AI行为树源码解读
Navmesh底层(Recast基础和寻路算法)
状态树介绍
AI的话先跟官方文档过一遍熟悉行为树。UE的行为树多了Service节点的概念。熟练之后研究行为树源码和寻路底层。值得一提的UE5新增加的状态树也值得了解一下。状态树是一个通用的分层状态机结构,是以状态为维度去设计的。用行为树来做AI有时候会发现状态之间的切换条件不够清晰,以及不容易知道对象处于哪个状态。而且行为树不能挂在非Actor身上。所以UE5引入了状态树解决了前面的问题。但是行为树也有行为树的好处。个人认为行为树和状态树是互相补充的,没有谁可以替代谁。状态树可以用来做一些状态清晰,逻辑相对简单的机制。比如一个门它有锁住、可开门、已开门这几种状态,就比较适合用状态树来做。
Network
必修
官方文档——多人联网
多人游戏的调试技巧
(如何理解属性复制)How to Understand Network Replication
选修
网络同步原理深入
详解ReplicationGraph方案
网络方面的话肯定是研究UE自己的网络架构,包括DS架构以及属性复制、Actor复制这些。用UE做网游如果不用DS而是自己研发一套服务器架构是非常麻烦且低效的,鸡佬所在项目曾经尝试过不用DS,做了一年各种蛋疼,转DS后才发现香的一批。必修第三个链接是一个非常优秀的视频,把属性复制讲的非常清晰,看完之后会觉得打通了任督二脉。选修部分还加了一个ReplicationGraph插件的使用。ReplicationGraph插件是用来解决大世界Actor复制效率低下的问题。如果是做地图比较大的游戏强烈推荐使用这个插件。
Editor
选修
Plugin开发概要
自定义菜单栏
关卡编辑器扩展
ContentBrowser拓展
资源类型扩展
属性面板拓展
创建自定义Filter
创建一个预览视窗
Editor方面主要是编辑器扩展了。UE的编辑器扩展比Unity比起来难搞了不少,你不光要懂Slate还得熟悉反射系统。一般对于客户端来说工具向的需求不多,所以这整个模块的内容我都列为了选修。上面这个文章也只是编辑器扩展的冰山一角,如果要深入学习还是建议看UE它自己的一些编辑器是怎么做的。
Render & Effect
选修
材质编辑器入门Intro to Materials
Cascade粒子系统入门Into to Cascade
Niagara粒子系统官方文档
渲染视觉效果方面我只列了材质编辑器和粒子系统的使用。毕竟我们是客户端路线,不是TA路线,看太多渲染相关的东西有点本末倒置了。
UE5
必修
官方文档——Lyra工程
选修
Lyra解读大纲
UE5 Lyra示例项目解读(输入、移动、属性)
UE5 Lyra示例项目解读(武器射击、资源管理)
Lyra的动画蓝图
GameFeature框架
ControlFlows插件
Lyra是UE5官方做的第三人称多人射击游戏学习项目。包含了基础的3C(Character,Controller,Camera)功能,输入(EnhancedInputSystems),GAS技能,动画,消息转发(GameplayMessageRouter),多人联网等很多可以学习的内容。即使你是使用UE4的开发者也强烈建议学习。GameFeature和ControlFlows都是在Lyra里面使用的插件,根据个人需要去看吧。
优秀个人博客
- vj东
- 南京周润发
- 大钊
- Jerish
- stone
- quabqi
- 查里鹏
- (日)alwei
- (英)Noah zuo
- (英)ben
关于作者:
- 水曜日鸡,喜欢ACG的游戏程序员。曾参与索尼中国之星项目《硬核机甲》的开发。 目前在某大厂做UE4项目。
CSDN博客:https://blog.csdn.net/j756915370
知乎专栏:https://zhuanlan.zhihu.com/c_1241442143220363264
相关文章:
UE4游戏客户端开发进阶学习指南
前言 两年多前写过一篇入门指南,教大家在短时间内快速入门UE4的使用,在知乎被很多人收藏了。如今鸡佬使用UE快三年了,是时候更新一下进阶版本的学习指南。本文对于读者的要求: 有一定的C基础已经入门UE,能够用蓝图和…...
javaee SpringMVC 乱码问题解决
方法一 在web.xml文件中注册过滤器 <!-- 注册过滤器 设置编码 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param&…...
用ChatGPT做数据分析,提升10倍工作效率
目录 写报告分析框架报告框架指标体系设计 Excel 写报告 分析框架 拿到一个专题不知道怎么做?没关系,用ChatGPT列一下框架。 以上分析框架挺像那么回事,如果没思路的话,问问ChatGPT能起到找灵感的作用。 报告框架 报告的框架…...
【Pytorch笔记】4.梯度计算
深度之眼官方账号 - 01-04-mp4-计算图与动态图机制 前置知识:计算图 可以参考我的笔记: 【学习笔记】计算机视觉与深度学习(2.全连接神经网络) 计算图 以这棵计算图为例。这个计算图中,叶子节点为x和w。 import torchw torch.tensor([1.]…...
浏览器安装vue调试工具
下载扩展程序文件 下载链接:链接: 下载连接网盘地址, 提取码: 0u46,里面有两个crx,一个适用于vue2,一个适用于vue3,可根据vue版本选择不同的调试工具 crx安装扩展程序不成功,将文件改为rar文件然后解压 安装…...
C/C++学习 -- RSA算法
概述 RSA算法是一种广泛应用于数据加密与解密的非对称加密算法。它由三位数学家(Rivest、Shamir和Adleman)在1977年提出,因此得名。RSA算法的核心原理是基于大素数的数学问题的难解性,利用两个密钥来完成加密和解密操作。 特点 …...
基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(一)
因为需要支持自定义业务表单的相关流程,所以需要建立相应的关联表 1、首先先建表wf_custom_form -- ---------------------------- -- Table structure for wf_custom_form -- ---------------------------- DROP TABLE IF EXISTS wf_custom_form; CREATE TABLE wf…...
面试经典 150 题 1 —(数组 / 字符串)— 88. 合并两个有序数组
88. 合并两个有序数组 方法一: class Solution { public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {for(int i 0; i<n;i){nums1[mi] nums2[i];}sort(nums1.begin(),nums1.end());} };方法二: clas…...
【大数据 | 综合实践】大数据技术基础综合项目 - 基于GitHub API的数据采集与分析平台
🤵♂️ 个人主页: AI_magician 📡主页地址: 作者简介:CSDN内容合伙人,全栈领域优质创作者。 👨💻景愿:旨在于能和更多的热爱计算机的伙伴一起成长!!&…...
超高频RFID模具精细化生产管理方案
近二十年来,我国的模具行业经历了快速发展的阶段,然而,模具行业作为一个传统、复杂且竞争激烈的行业,企业往往以订单为导向,每个订单都需要进行新产品的开发,从客户需求分析、结构确定、报价、设计、物料准…...
FP-Growth算法全解析:理论基础与实战指导
目录 一、简介什么是频繁项集?什么是关联规则挖掘?FP-Growth算法与传统方法的对比Apriori算法Eclat算法 FP树:心脏部分 二、算法原理FP树的结构构建FP树第一步:扫描数据库并排序第二步:构建树 挖掘频繁项集优化&#x…...
Jmeter 分布式压测,你的系统能否承受高负载?
你可以使用 JMeter 来模拟高并发秒杀场景下的压力测试。这里有一个例子,它模拟了同时有 5000 个用户,循环 10 次的情况。 请求默认配置 token 配置 秒杀接口 结果分析 但是,实际企业中,这种压测方式根本不满足实际需求。下…...
什么是浮动密封?
浮动密封也称为机械面密封或双锥密封,是一种用于各种行业和应用的特殊类型的密封装置。它旨在提供有效的密封和保护,防止污染物的进入以及旋转设备中润滑剂或液体的润滑剂泄漏。 浮动密封件由相同的金属环组成,这些金属环称为密封环…...
浅析前端单元测试
对于前端来说,测试主要是对HTML、CSS、JavaScript进行测试,以确保代码的正常运行。 常见的测试有单元测试、集成测试、端到端(e2e)的测试。 单元测试:对程序中最小可测试单元进行测试。我们可以类比对汽车的测试&…...
线上mysql表字段加不了Fail to get MDL on replica during DDL synchronize,排查记录
某天接近业务高峰期想往表里加字段加不了,报错:Fail to get MDL on replica during DDL synchronize 遂等到业务空闲时操作、还是加不了, 最后怀疑是相关表被锁了,或者有事务一直进行(可能这俩是一个意思)&…...
vue3使用element plus的时候组件显示的是英文
问题截图 这是因为国际化导致的 解决代码 import zhCn from "element-plus/es/locale/lang/zh-cn"; 或者 import zhCn from "element-plus/lib/locale/lang/zh-cn";const localezhCn<el-config-provider :locale"locale"><el-date-pic…...
Matlab参数估计与假设检验(举例解释)
参数估计分为点估计和区间估计,在matlab中可以调用namefit()函数来计算参数的极大似然估计值和置信区间。而数据分析中用得最多的是正态分布参数估计。 例1 从某厂生产的滚珠中抽取10个,测得滚珠的直径(单位:mm)为x[…...
qt响应全局热键
QT5 QWidget响应全局热键-百度经验...
android 代码设置静态Ip地址的方法
在Android中,可以使用以下代码示例来设置静态IP地址: import android.content.Context import android.net.ConnectivityManager import android.net.LinkAddress import android.net.Network import android.net.NetworkCapabilities import android.ne…...
Elasticsearch安装访问
Elasticsearch 是一个开源的、基于 Lucene 的分布式搜索和分析引擎,设计用于云计算环境中,能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性,可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…...
ClawRouter:智能流量路由与内容处理工具的设计与实践
1. 项目概述与核心价值 最近在折腾一些网络相关的自动化任务时,发现了一个挺有意思的项目,叫 ClawRouter。乍一看这个名字,可能会联想到“爪子”和“路由器”,感觉像是某种抓取工具和网络设备的结合体。实际上,这个项目…...
别再死记硬背了!用一块74283芯片搞定所有BCD码转换(附实战练习题)
用74283芯片玩转BCD码转换:从原理到实战的终极指南 在数字电路设计与计算机组成原理的学习中,BCD码转换一直是让许多学生头疼的"拦路虎"。传统的死记硬背方法不仅效率低下,更无法应对考试中千变万化的题型。本文将彻底改变这一现状…...
macOS OBS虚拟摄像头技术实现指南:CoreMediaIO架构与DAL插件开发
macOS OBS虚拟摄像头技术实现指南:CoreMediaIO架构与DAL插件开发 【免费下载链接】obs-mac-virtualcam ARCHIVED! This plugin is officially a part of OBS as of version 26.1. See note below for info on upgrading. 🎉🎉🎉Cr…...
WarcraftHelper 2024:魔兽争霸3终极优化指南
WarcraftHelper 2024:魔兽争霸3终极优化指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为《魔兽争霸3》在现代电脑上运行卡顿、画…...
如何在Windows、Mac和Ubuntu上实现iOS虚拟定位的完整指南
如何在Windows、Mac和Ubuntu上实现iOS虚拟定位的完整指南 【免费下载链接】iFakeLocation Simulate locations on iOS devices on Windows, Mac and Ubuntu. 项目地址: https://gitcode.com/gh_mirrors/if/iFakeLocation iFakeLocation是一款革命性的开源工具࿰…...
【MySQL】《MySQL索引核心分类面试高频考点问答清单》(附:《一页纸速记版》)
文章目录《MySQL索引核心分类面试高频考点问答清单》一、基础概念类(入门必问)Q1:MySQL索引的本质是什么?核心作用有哪些?Q2:MySQL常用的索引数据结构有哪些?各自特点是什么?Q3&…...
weclaw:面向生产环境的现代化Python爬虫框架设计与实战
1. 项目概述与核心价值最近在开源社区里,一个名为weclaw的项目引起了我的注意。这个项目由shp-ai组织维护,从名字上乍一看,可能有点摸不着头脑——“weclaw”听起来像“we claw”(我们抓取)的变体。点进去一看…...
AI智能体自我进化:基于Diff机制的自动化优化实践
1. 项目概述:当AI智能体学会“自我进化”最近在开源社区里,一个名为agentdiff的项目引起了我的注意。它的核心想法非常有趣:让AI智能体(Agent)能够像我们人类一样,通过“反思”和“对比”来学习和进化。简单…...
量子机器学习框架互操作性挑战与解决方案
1. 量子机器学习框架互操作性挑战与解决方案量子机器学习(QML)作为量子计算与经典机器学习的交叉领域,近年来在理论和实践层面都取得了显著进展。变分量子算法(VQAs)和参数化量子电路(PQCs)已成…...
主动学习:让AI主动挑选最有价值的样本进行标注
1. 主动学习:不是AI在“等喂饭”,而是在“主动点菜”你有没有遇到过这种场景:手头有个图像分类项目,标注一张医学影像要花资深放射科医生15分钟,而你手上有5万张未标注CT切片——但预算只够标300张。或者在做客服对话意…...
