代码改变世界

随笔分类 -  UE4

深入剖析GPU Early Z优化

2018-12-23 22:48 by 风恋残雪, 11173 阅读, 收藏, 编辑
摘要: 最近在公司群里同事发了一个UE4关于Mask材质的优化,比如在场景中有大面积的草和树的时候,可以在很大程度上提高效率。这其中的原理就是利用了GPU的特性Early Z,但是它的做法跟我最开始的理解有些出入,因为Early Z是GPU硬件实现的,每个厂商在实现的时候也有所不同。这次在查阅了一些资源和通 阅读全文

UE4联机编译光照

2018-03-16 13:37 by 风恋残雪, 2854 阅读, 收藏, 编辑
摘要: UE4联机编译光照需要SwarmCoordinator以及SwarmAgent,在Engine\Binaries\DotNET目录下。 SwarmAgent 我们主要关注Distribution Setting中的内容。 AgentGroupName 组名,这里简化起见,所有Agent都在同一组。需 阅读全文

扩展SQLite使其能从apk文件中读取db

2017-07-17 08:16 by 风恋残雪, 1804 阅读, 收藏, 编辑
摘要: 游戏中会大量使用到配置文件,每个项目组根据自己不同的需求会选择不同的存储格式,比如使用Json或者SQLite来存储数据。此处我们只对使用SQLite的情况来做讨论。一般情况下会选择把它放在可读写目录里面,这样SQLite可以直接使用它原来的io API来对db文件进行读取。在PC或者iOS平台上这 阅读全文

虚幻4垃圾回收剖析

2016-11-29 08:01 by 风恋残雪, 21259 阅读, 收藏, 编辑
摘要: 上一个系列的文章我们已经对虚幻4中的反射实现原理进行了一个简单得讲解,反射的用途非常多,其中一个就是用来做垃圾回收用的,我们这个系列就对虚幻4中的垃圾回收机制做一个讲解。注:本系列文章对应的虚幻4版本是4.14.1 垃圾回收 在计算机科学中,垃圾回收(garbage collection, 缩写GC 阅读全文

虚幻4蓝图虚拟机剖析

2016-11-13 23:22 by 风恋残雪, 8292 阅读, 收藏, 编辑
摘要: 前言 这里,我们打算对虚幻4 中蓝图虚拟机的实现做一个大概的讲解,如果对其它的脚本语言的实现有比较清楚的认识,理解起来会容易很多,我们先会对相关术语进行一个简单的介绍,然后会对蓝图虚拟机的实现做一个讲解。 术语 编程语言一般分为编译语言和解释型语言。 编译型语言 程序在执行之前需要一个专门的编译过程 阅读全文

虚幻4蓝图编译剖析(三)

2016-10-31 08:26 by 风恋残雪, 5322 阅读, 收藏, 编辑
摘要: 编译 上面基本的术语已经介绍完了,下面我们进入来进入蓝图编译过程分析。蓝图的编译过程都在FKismetCompilerContext::Compile()函数中。它根据编译的类型不同(上文编译选项中提到的只编译Skeleton、只生成字节码、只生成cpp代码等等)会走不同的分支。我们这里以完全编译来 阅读全文

虚幻4蓝图编译剖析(二)

2016-10-25 23:10 by 风恋残雪, 5315 阅读, 收藏, 编辑
摘要: 虚幻4编译相关术语和类图 虚幻引擎中的蓝图编译跟常规的程序编译多少是有一些不同的地方,但是基本原理是相通的。我们以普通的类蓝图为例,一个类中包含多个图,每个图中又可以包含一些子图。一个图会包含很多的节点(UEdGraphNode),每个节点可以包含若干引脚(UEdGraphPin)用来连接两个节点。 阅读全文

虚幻4蓝图编译剖析(一)

2016-10-24 22:58 by 风恋残雪, 8243 阅读, 收藏, 编辑
摘要: 前言 虚幻引擎中的 蓝图 - 可视化脚本系统 是一个完整的游戏脚本系统, 其理念是,在虚幻编辑器中,使用基于节点的界面创建游戏可玩性元素。 和其他一些常见的脚本语言一样,蓝图的用法也是通过定义在引擎中的面向对象的类或者对象。 在使用虚幻 4 的过程中,常常会遇到在蓝图中定义的对象,并且这类对象常常也 阅读全文

虚幻4蓝图快速入门(四)

2016-10-01 08:29 by 风恋残雪, 8548 阅读, 收藏, 编辑
摘要: 蓝图跟C++交互 概述 蓝图可以继承C++类,从而使得程序员可以在代码中创建新的游戏性类,而关卡设计人员可以使用蓝图来继承该类并对其进行修改。 有很多种修饰符可以改变C++类和蓝图系统间交互方式,其中某些修饰符会在本示例中突出介绍。 可以通过查看以下内容来快速了解: 虚幻引擎快速入门视频教程第五章, 阅读全文

虚幻4蓝图快速入门(三)

2016-09-30 21:32 by 风恋残雪, 9115 阅读, 收藏, 编辑
摘要: 数学表达式节点 概述 要想创建一个数学表达式节点,请右击图表并从关联菜单中选择 Add Math Expression(添加数学表达式)... 。 数学表达式节点就像一个合并的图表。它是一个独立的节点,您可以双击它来打开构成其功能的子图表。 最初,该名称/表达式是空的。任何时候,当您重命名该节点时, 阅读全文

虚幻4蓝图快速入门(二)

2016-09-29 22:20 by 风恋残雪, 12916 阅读, 收藏, 编辑
摘要: 蓝图用户指南 由于蓝图就是个可视化的脚本系统,那么一个程序语言中的基本概念也就都存在。下面我们简单来介绍下蓝图中的一些基本概念。 变量 概述 Variables(变量) 是存放一个值或引用世界中的一个Object或Actor的属性。这些用户界面 内部访问,或者通过设置使得可以在外部进行访问, 以便应 阅读全文

虚幻4蓝图快速入门(一)

2016-09-29 22:01 by 风恋残雪, 38759 阅读, 收藏, 编辑
摘要: 蓝图快速入门 序言 本文依据官方教程总结而来,只是带你对蓝图有一个快速的认识,如果想对蓝图有一个比较深入的了解,那么可以看官方的视频或者是做一些小项目练手,如果你有编程经验的话,上手还是很容易的。 蓝图快速入门 什么是蓝图 虚幻引擎中的蓝图可视化系统是一个完整的游戏脚本系统,其理念是使用基于节点的界 阅读全文

蓝图编译器概述(翻译)

2016-08-24 21:47 by 风恋残雪, 3809 阅读, 收藏, 编辑
摘要: 本文依据官方文档翻译而来,注意官方版本的文档较旧(UE 4 4.9),新版本的类名已经改变。本文是直接翻译而来,并没有做相应改动。 蓝图,像常规的C++类一样,需要编译后才能在运行的时候使用。当你在蓝图编辑器中按下编译按钮时,那么编译器就会把蓝图资源的属性和图转换成类。 术语 FkismetComp 阅读全文

蓝图编程指南(翻译)

2016-08-11 23:43 by 风恋残雪, 5854 阅读, 收藏, 编辑
摘要: 决定什么时候使用C++或者蓝图有两个主要考虑的因素: 速度 表达式复杂度 除了这两个因素外,还有整个游戏的复杂程度和团队的组成。如果你的团队中有比程序员更多的美术人员,那么使用的蓝图可能会比C++代码要多很多。相反,如果团队中有很多的程序员,那么他们可能会更喜欢用C++来编写逻辑。而我们希望人们在中 阅读全文

深入研究虚幻4反射系统实现原理(三)

2016-08-07 19:31 by 风恋残雪, 5279 阅读, 收藏, 编辑
摘要: "前面两篇文章" 介绍了虚幻引擎中对于反射的支持(如果没读过前两篇文章,推荐你仔细看下,否则你可能不知道我在讲什么),不过还差一点内容,就是这些信息是如何 加入到运行时的,讲完这些那么这个系列也就算是基本结束了,下面进入正文。 信息注册 虚幻引擎使用一系列静态变量来注册需要生成反射信息的函数,这个我 阅读全文

深入研究虚幻4反射系统实现原理(二)

2016-07-28 22:36 by 风恋残雪, 5997 阅读, 收藏, 编辑
摘要: 上一篇文章中讲解了UE4中对类(UCLASS)的反射支持,这篇文章我们还是以实例的形式来讲解虚幻4对结构体(USTRUCT)以及枚举(UENUM)的支持。 结构体 首先让我们看一下测试结构体反射支持的代码,我们用USTRUCT声明了一个结构体,告诉虚幻4 要对这个类型支持反射类型,我们向其中添加了一 阅读全文

深入研究虚幻4反射系统实现原理(一)

2016-07-24 22:44 by 风恋残雪, 22125 阅读, 收藏, 编辑
摘要: 上一篇翻译的文章里面提到了UE4反射系统的基本原理与应用,这次我们通过代码来深入研究一下UE4的反射系统,因为反射系统在UE4中牵扯的东西较多,所以我打算分几篇文章分析。我这里假定读者对UE4有一定的了解并且有一定的C++基础,如果不了解UE4如何使用,那么请先学会如何使用UE4引擎,否则看起来可能 阅读全文

虚幻4属性系统(反射)翻译

2016-07-23 12:50 by 风恋残雪, 16943 阅读, 收藏, 编辑
摘要: 反射是程序在运行时进行自检的一种能力。它非常有用且在虚幻引擎中基础技术,支撑了诸如 编辑器中的细节面板、序列化、垃圾回收、网络复制、以及蓝图与C++交互等功能。然而,C++原生并不支持任意形式的反射,因此 虚幻引擎有它自己的系统用来 利用、查询以及操作关于C++类、结构体、函数 、成员变量以及枚举的 阅读全文

UE4中使用数据表(Data Table)

2016-07-16 21:13 by 风恋残雪, 24796 阅读, 收藏, 编辑
摘要: 本文依据官方文档数据驱动游戏性元素整理而来。 做过游戏的应该都清楚,如果游戏稍微有点规模,那么使用数据驱动来做游戏一般是必不可少的一步,一般也就是策划通过本表的方式来解决。下面我们来简单说一下UE4中如何使用DataTable来实现数据驱动开发。 顾名思义,数据表就是以有意义且有用的方式将各种相关的 阅读全文

UE4 自定义物理表面类型(Surface Type)

2016-05-21 12:40 by 风恋残雪, 7620 阅读, 收藏, 编辑
摘要: 如果想在UE4中实现在接触到不同物体表面时发出不同的声音或者效果时,比如人在不同的表面上速度会不同,子弹打到不同的表面时会出现不同的特效等,我们可以使用UE4中的表面类型来实现(Surface Type),基础的使用已经在官方文档里面有比较清楚的描述,这里记录下使用中遇到的问题。 如果layer中没 阅读全文