【UE5】网络同步原理探究 (Actor同步流程)
交界地第一糕手。 前言注意:本篇文章使用的源码版本是 UE5.5.3 细节比较多,后续会继续更新补充本篇文章。本文参考了许多技术文章 (见参考),有些参考由于各种原因不方便列出下面是结合个人实操的 UE5 中 Actor 同步的探究记录当然这只是 Actor 同步,后面还有 ReplicationGraph 以及 UE5 新出的 Iris 下面先给出一些总结,再开始探究细节,好有个思路又或方便回忆。 Actor 同步流程【总结】UE 是被动式同步方式,这也导致了网络同步时的性能消耗: GatherActor 阶段:在收集 Actor 时,收集所有相关的 Actor 列表,遍历 Actor 列表去一个个处理,处理之前是不知道哪些 Actor 在这一帧内同步属性被修改了,需要后续更多的逻辑去判断是否这个 Actor 在这一帧需要同步 属性对比阶段:针对一个 Actor 或 Component,引擎同样也是不能提前知道这个 Actor 有哪些属性改变,同样得遍历所有属性去做对比才知道是否发生了改变,发生了改变才需要去同步。当然这里说的是 PushModel...
【UE5.5】Lyra工程为例,启用或指定ReplicationGraph类
一次调试经历记录 ✨Replication Graph (UE官方文档) 这块又被坑到,如果走修改配置文件的话需要注意: 1ReplicationDriverClassName="/Script/ModuleName.ClassName" 这里填的是模块名,而不是项目名 不过修改了但发现对 Lyra 不起效果,于是打开 ProjectSettings 查看设置发现这块禁用了,手动启用后不会保存?后来在配置文件中发现了: Lyra 是在编辑器运行时 New 出来的 ReplicationGraph 设置: 所以这里直接改配置就行 The end.
StarUML破解-v6.3.1
前言 独乐乐不如众乐乐。 这边上传了一份该版本安装包到百度网盘供大家学习:✨https://pan.baidu.com/s/1UN4-e8xkc5wpbCOPB53NPg?pwd=2025 安装并破解 安装后直接退出应用 下载 Node.js 并验证是否安装成功:✨https://nodejs.org/en 12C:\Users\AnnihilateSword>npm -v10.9.0 使用 npm 安装 asar: 1npm install -g asar 验证是否安装成功: 12C:\Users\AnnihilateSword>asar -Vv3.2.0 打开 StarUML 文件安装目录下的 resources 文件夹:C:\Program Files\StarUML\resources 以管理员打开 cmd 然后执行以下操作: 12cd C:\Program Files\StarUML\resourcesasar e app.asar app 打开 C:\Program...
【UE5】UBT的具体工作流程
前言 一知半解永远无法深入. 一、前置知识GenerateProjectFilesUE 中构建项目之前,都需要先执行 GenerateProjectFiles,这样 UE 会通过 mono 执行 UnrealBuildTool (UBT) 收集所有模块的 Build.cs,然后生成各种编译所需要的文件。比如 .generated.h 、 .gen.cpp 等等。 在不同平台、不同 IDE 下还需要生成不同结构的配置,因为 Xcode、VS、Rider 的工程配置文件是各不相同的,UBT 源码中需要分类去处理。 以 VS 为例,UBT 会为 VS 生成 .sln 以及各种模块 .vcxproj 文件,里面包含了各个模块的宏定义以及 include path,都是由 Build.cs 生成出来的。这样 IDE 在打开工程时才知道模块的宏是什么,引用的路径有哪些,也就是常说的 IntelliSense 功能。当然,更重要的是能让编译器在编译时找到。 UBT 命令行参数 官方文档没有准确给出这部分内容 (命令行参数) GenerateProjectFiles.bat 脚本是...
TinyRenderer 学习笔记 (上)
前言本文配套代码: 👉https://github.com/AnnihilateSword/TinyRenderer 其中添加了更为详细的注释,帮助更快理解掌握知识! 前置知识 (如果了解可跳过)Bresenham’s line algorithm 简介Bresenham’s line algorithm 是一种绘制线条的算法,它确定了 n 维栅格中应该选择的点,以便在两点之间形成近似直线。它通常用于在位图图像中绘制线原语 (例如在计算机屏幕上),因为它只使用整数加法,减法和位移位,所有这些操作在历史上常见的计算机体系结构中都是非常便宜的操作。它是一种增量误差算法,是计算机图形学领域发展最早的算法之一。原始算法的扩展称为中点圆算法可用于绘制圆。 虽然 Wu 算法等算法也经常用于现代计算机图形学,因为它们可以支持抗锯齿,但 Bresenham 的线算法仍然很重要,因为它的速度和简单性。该算法用于绘图仪等硬件和现代图形卡的图形芯片中。它也可以在许多软件图形库中找到。由于该算法非常简单,因此通常在现代显卡的固件或图形硬件中实现。 “Bresenham” 标签今天用于扩展或修改...
(译) What Is A Vertical Slice In Game Development (什么是游戏开发中的垂直切片)
前言原文地址:👉https://thelongreachgame.com/vertical-slice-game-development/ 一、What Is A Vertical Slice In Game Development (什么是游戏开发中的垂直切片)In this section, we will delve into the concept of vertical slice game development and uncover its significance in the world of game production. Discover how this strategy can unlock the full potential of your next gaming project. 在本节中,我们将深入探讨垂直切片游戏开发的概念,并揭示其在游戏制作领域的重要性。了解这种策略如何释放你下一个游戏项目的全部潜力。 Vertical slice game development is a game production strategy...
【UE大象无形总结】第三部分扩展虚幻引擎【终篇】
前言 三千弱水,只取一瓢饮。 参考书籍:《大象无形:虚幻引擎程序设计浅析 (罗丁力 [罗丁力])》补充说明:本系列是个人对书中内容的实践 十四、引擎独立应用程序 我该如何写出 UHT 这样,能够引用虚幻引擎的 API,又不需要依赖引擎运行的程序呢? 14.1 简介什么是引擎独立应用程序?让我们首先看一下虚幻引擎的 Launcher 运行器。不知道大家是否曾经好奇,虚幻引擎的 Launcher 运行器是用什么写的呢?如果你曾经仔细观察过虚幻引擎的运行器的文件结构,你会惊讶地发现,这个文件结构非常类似于虚幻引擎本身的文件结构,而非虚幻引擎编译打包形成的游戏的文件结构。这意味着,虚幻引擎的运行器是一个微型虚幻引擎 ,而不是一个打包形成的游戏! 如何开发这样的东西呢?如果我们希望在一个小型的、不是游戏的应用程序中继续使用虚幻引擎的一部分API,那么我们就需要学习虚幻引擎运行器这样的技术。 14.2 如何开始关于如何撰写这样的应用程序的介绍,虚幻引擎的官方文档语焉不详,几乎没有说明什么。但是虚幻引擎提供了几个案例性的程序,如 BlankProgram 和...
【UE大象无形总结】第二部分虚幻引擎浅析【下卷】
前言 恭迎大帅! 参考书籍:《大象无形:虚幻引擎程序设计浅析 (罗丁力 [罗丁力])》补充说明:本系列是个人对书中内容的实践 十二、Slate界面系统作为核心界面系统,Slate 是一个跨平台的、硬件加速的图形界面框架,采用了 C++ 的泛型编程来允许直接使用 C++ 语言撰写界面。 12.1 Slate的两次排布Slate 是一个分辨率自适应的相对界面布局系统,为了能够完成这样的目的,Slate 实质上采用了一个 “两次” 排布的思路。 首先,递归计算每个控件的大小,父控件会根据子控件来计算自己的大小。 然后,根据控件大小,具体计算出每个控件的绘制位置。 由于有部分控件是 “大小可改变” 的,因此必须先计算出 “固定大小”,才可能实际排布这些控件。 12.2 Slate的更新Slate 系统的更新,实质上是与引擎内部更新分开的。FEngineLoop 类会首先更新引擎,随后在确保 FSlateApplication 已经初始化后,调用 FSlateApplication 的 Tick 函数进行更新。 FSlateApplication 代表了当前正在运行的...
【UE大象无形总结】第二部分虚幻引擎浅析【中卷】
前言 若留得性命归来,在下愿救天下人。 参考书籍:《大象无形:虚幻引擎程序设计浅析 (罗丁力 [罗丁力])》补充说明:本系列是个人对书中内容的实践 十一、虚幻引擎的渲染系统 虚幻引擎这么厉害的画面,是通过什么样的过程产生的呢?从哪里开始渲染,从何处取回渲染结果? 虚幻引擎的渲染系统是一套非常庞大的系统,跨越多个线程,由大量的类辅助完成。因此本章的讲解将会采用 “从大笔泼墨的结构性描述,到工笔细描的细节性描述” 这样的思路。 11.1 渲染线程对虚幻引擎有一定研究的读者一定曾听说 “游戏线程(逻辑线程)” 与 “渲染线程” 的说法。而笔者认为,对渲染线程的理解可以从这一句话入手:“渲染线程是游戏线程的奴隶”...
【UE大象无形总结】第二部分虚幻引擎浅析【上卷】
前言 幸得识君桃花面,从此阡陌多暖春。 最近一口气看完了不良人1~6季,目前最喜欢的国漫了,期待第七季!参考书籍:《大象无形:虚幻引擎程序设计浅析 (罗丁力 [罗丁力])》补充说明:本系列是个人对书中内容的实践 考虑到篇幅,这里将虚幻引擎浅析分成上中下三卷记录。 对于 Windows 平台而言,你可以在 Launch 模块下的 LaunchWindows.cpp 中找到你熟悉的 WinMain 函数。 八、模块机制8.1 模块简介 虚幻引擎为什么需要引入模块机制? 任何一名 C++ 程序员,一定被 C++ 的项目配置所困扰过。你需要添加头文件目录、lib 目录等。还需要对 Debug 模式、Release 模式下不同的包含做出控制。这是相当复杂的一个问题。更不用说对于虚幻引擎来说,需要的编译模式远远不止这么几种。在编辑器模式下,有些类会被引入,在最终发布的游戏中,这些类又完全不再需要,如何处理这样的问题呢? 在 UE3 的时代,使用 MakeFile 来模拟模块,而到了 UE4 的时代,为了彻底解决这样的问题,虚幻引擎借助 UnrealBuildTool...