摘要:
《Inside UE4》目录 InsideUE4 UE4无疑是非常优秀的世界上最顶尖的引擎之一,性能和效果都非常出众,编辑器工作流也非常的出色,更难得宝贵的是完全的开源让我们有机会去从中吸取营养,学习世界上第一流游戏引擎的架构思想。 本系列教程《Inside UE4》,希望从最最底层的C++源码剖析 阅读全文
摘要:
读的不如写的快 引言 在之前的 "《InsideUE4》UObject(四)类型系统代码生成" 和 "《InsideUE4》UObject(五)类型系统收集" 章节里,我们介绍了UE4是如何根据我们的代码和元标记生成反射代码,并在Main函数调用之前,利用静态变量的初始化来收集类型的元数据信息。经过 阅读全文
摘要:
在一起!在一起! 引言 前文中我们阐述了类型系统构建的第一个阶段:生成。UHT分析源码的宏标记并生成了包含程序元信息的代码,继而编译进程序,在程序启动的时候,开始启动类型系统的后续构建阶段。而本文我们将介绍类型信息的收集阶段。 C++ Static 自动注册模式 另一种常用的C++常用的设计模式:S 阅读全文
摘要:
你想要啊?想要你就说出来嘛,你不说我怎么知道你想要呢? 引言 上文讲到了UE的类型系统结构,以及UHT分析源码的一些宏标记设定。在已经进行了类型系统整体的设计之后,本文将开始讨论接下来的步骤。暂时不讨论UHT的细节,假设UHT已经分析得到了足够的类型元数据信息,下一步就是利用这个信息在程序内存中构建 阅读全文
摘要:
垃圾分类,从我做起! 引言 上篇我们谈到了为何设计一个Object系统要从类型系统开始做起,并探讨了C 的实现,以及C++中各种方案的对比,最后得到的结论是UE采用UHT的方式搜集并生成反射所需代码。接下来我们就应该开始着手设计真正的类型系统结构。 在之后的叙述中,我会同时用两个视角来考察UE的这套 阅读全文
摘要:
曾子曰:吾日三省吾身——为人谋而不忠乎?与朋友交而不信乎?传不习乎? 引言 上一篇我们谈到了在游戏引擎,或者在程序和高级编程语言中,设计一个统一对象模型得到的好处,和要付出的代价,以及在UE里是怎么对之尽量降低规避的。那么从本篇开始,我们就开始谈谈如何开始构建这么一个对象模型,并在此之上逐渐扩展以适 阅读全文
摘要:
UE生UObject,UObject生万物 引言 在上个GamePlay专题,谈到UE创建游戏世界的时候( "GamePlay架构(一)Actor和Component" ),简单的介绍了一下UObject的功能: ![UObjectAndActor.jpg 21.2kB][1] 藉着UObject提 阅读全文
摘要:
世界那么大,我想去看看 引言 通过对前九篇的介绍,至此我们已经了解了UE里的游戏世界组织方式和游戏业务逻辑的控制。行百里者半九十,前述的篇章里我们的目光往往专注在于特定一个类或者对象,一方面固然可以让内容更有针对性,但另一方面也有了身在山中不见山的困惑。本文作为GamePlay章节的最终章,就是要回 阅读全文
摘要:
一人之下,万人之上 引言 上篇我们讲到了UE在World之上,继续抽象出了Player的概念,包含了本地的ULocalPlayer和网络的UNetConnection,并以此创建出了World中的PlayerController,从而实现了不同的玩家模式策略。一路向上,依照设计里一个最朴素的原理:自 阅读全文
摘要:
你们对力量一无所知 引言 回顾上文,我们谈完了World和Level级别的逻辑操纵控制,如同分离组合的AController一样,UE在World的层次上也采用了一个分离的AGameMode来抽离了游戏关卡逻辑,从而支持了逻辑的组合。本篇我们继续上升一个层次,考虑在World之上,游戏还需要哪些逻辑 阅读全文
摘要:
我的世界,我做主 引言 上文我们说到在Actor层次,UE用Controller来充当APawn的逻辑控制者,也有了可以接受玩家输入的PlayerController,和能自行行动的AIController。Actor的逻辑编写介绍完了,那么本篇,我们继续爬升,对于由Actors组成的Level这一 阅读全文