当前位置: 首页 > news >正文

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 写报告 分析框架 拿到一个专题不知道怎么做&#xff1f;没关系&#xff0c;用ChatGPT列一下框架。 以上分析框架挺像那么回事&#xff0c;如果没思路的话&#xff0c;问问ChatGPT能起到找灵感的作用。 报告框架 报告的框架…...

【Pytorch笔记】4.梯度计算

深度之眼官方账号 - 01-04-mp4-计算图与动态图机制 前置知识&#xff1a;计算图 可以参考我的笔记&#xff1a; 【学习笔记】计算机视觉与深度学习(2.全连接神经网络) 计算图 以这棵计算图为例。这个计算图中&#xff0c;叶子节点为x和w。 import torchw torch.tensor([1.]…...

浏览器安装vue调试工具

下载扩展程序文件 下载链接&#xff1a;链接: 下载连接网盘地址&#xff0c; 提取码: 0u46&#xff0c;里面有两个crx,一个适用于vue2&#xff0c;一个适用于vue3&#xff0c;可根据vue版本选择不同的调试工具 crx安装扩展程序不成功&#xff0c;将文件改为rar文件然后解压 安装…...

C/C++学习 -- RSA算法

概述 RSA算法是一种广泛应用于数据加密与解密的非对称加密算法。它由三位数学家&#xff08;Rivest、Shamir和Adleman&#xff09;在1977年提出&#xff0c;因此得名。RSA算法的核心原理是基于大素数的数学问题的难解性&#xff0c;利用两个密钥来完成加密和解密操作。 特点 …...

基于若依ruoyi-nbcio支持flowable流程增加自定义业务表单(一)

因为需要支持自定义业务表单的相关流程&#xff0c;所以需要建立相应的关联表 1、首先先建表wf_custom_form -- ---------------------------- -- Table structure for wf_custom_form -- ---------------------------- DROP TABLE IF EXISTS wf_custom_form; CREATE TABLE wf…...

面试经典 150 题 1 —(数组 / 字符串)— 88. 合并两个有序数组

88. 合并两个有序数组 方法一&#xff1a; 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());} };方法二&#xff1a; clas…...

【大数据 | 综合实践】大数据技术基础综合项目 - 基于GitHub API的数据采集与分析平台

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…...

超高频RFID模具精细化生产管理方案

近二十年来&#xff0c;我国的模具行业经历了快速发展的阶段&#xff0c;然而&#xff0c;模具行业作为一个传统、复杂且竞争激烈的行业&#xff0c;企业往往以订单为导向&#xff0c;每个订单都需要进行新产品的开发&#xff0c;从客户需求分析、结构确定、报价、设计、物料准…...

FP-Growth算法全解析:理论基础与实战指导

目录 一、简介什么是频繁项集&#xff1f;什么是关联规则挖掘&#xff1f;FP-Growth算法与传统方法的对比Apriori算法Eclat算法 FP树&#xff1a;心脏部分 二、算法原理FP树的结构构建FP树第一步&#xff1a;扫描数据库并排序第二步&#xff1a;构建树 挖掘频繁项集优化&#x…...

Jmeter 分布式压测,你的系统能否承受高负载?

‍你可以使用 JMeter 来模拟高并发秒杀场景下的压力测试。这里有一个例子&#xff0c;它模拟了同时有 5000 个用户&#xff0c;循环 10 次的情况‍。 请求默认配置 token 配置 秒杀接口 ​结果分析 ​但是&#xff0c;实际企业中&#xff0c;这种压测方式根本不满足实际需求。下…...

什么是浮动密封?

浮动密封也称为机械面密封或双锥密封&#xff0c;是一种用于各种行业和应用的特殊类型的密封装置。它旨在提供有效的密封和保护&#xff0c;防止污染物的进入以及旋转设备中润滑剂或液体的润滑剂泄漏。 浮动密封件由相同的金属环组成&#xff0c;这些金属环称为密封环&#xf…...

浅析前端单元测试

对于前端来说&#xff0c;测试主要是对HTML、CSS、JavaScript进行测试&#xff0c;以确保代码的正常运行。 常见的测试有单元测试、集成测试、端到端&#xff08;e2e&#xff09;的测试。 单元测试&#xff1a;对程序中最小可测试单元进行测试。我们可以类比对汽车的测试&…...

线上mysql表字段加不了Fail to get MDL on replica during DDL synchronize,排查记录

某天接近业务高峰期想往表里加字段加不了&#xff0c;报错&#xff1a;Fail to get MDL on replica during DDL synchronize 遂等到业务空闲时操作、还是加不了&#xff0c; 最后怀疑是相关表被锁了&#xff0c;或者有事务一直进行&#xff08;可能这俩是一个意思&#xff09;&…...

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参数估计与假设检验(举例解释)

参数估计分为点估计和区间估计&#xff0c;在matlab中可以调用namefit()函数来计算参数的极大似然估计值和置信区间。而数据分析中用得最多的是正态分布参数估计。 例1 从某厂生产的滚珠中抽取10个&#xff0c;测得滚珠的直径&#xff08;单位&#xff1a;mm&#xff09;为x[…...

qt响应全局热键

QT5 QWidget响应全局热键-百度经验...

android 代码设置静态Ip地址的方法

在Android中&#xff0c;可以使用以下代码示例来设置静态IP地址&#xff1a; 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 的分布式搜索和分析引擎&#xff0c;设计用于云计算环境中&#xff0c;能够实现实时的、可扩展的搜索、分析和探索全文和结构化数据。它具有高度的可扩展性&#xff0c;可以在短时间内搜索和分析大量数据。 Elasticsearch 不仅仅是一个…...

RestClient

什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端&#xff0c;它允许HTTP与Elasticsearch 集群通信&#xff0c;而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级&#xff…...

python打卡day49

知识点回顾&#xff1a; 通道注意力模块复习空间注意力模块CBAM的定义 作业&#xff1a;尝试对今天的模型检查参数数目&#xff0c;并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...

Admin.Net中的消息通信SignalR解释

定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...

2025 后端自学UNIAPP【项目实战:旅游项目】6、我的收藏页面

代码框架视图 1、先添加一个获取收藏景点的列表请求 【在文件my_api.js文件中添加】 // 引入公共的请求封装 import http from ./my_http.js// 登录接口&#xff08;适配服务端返回 Token&#xff09; export const login async (code, avatar) > {const res await http…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中&#xff0c;UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...