Engine Source Analysis: Module Loading and Startup

UE是模块化的架构,Engine/Game Project/StandaloneApplication/Plugins都是Module(Unreal Engine API Reference列出了Engine提供的Module列表),本篇文章从FModuleManager的代码来分析一下UE的Module是如何通过FModuleManager::LoadModule加载和启动的。

阅读全文 »

UE通过UBT来构建项目(不管是VS里的Build也好,Editor里的Compile也好,最终都会调用UBT)。UBT和UHT是UE工具链的基石,内容太多,没办法一次性分析全部,先梳理出一个大致的轮廓,有时间再慢慢补充。

阅读全文 »

C++ Polymorphism and Virtual Function Table

C++是一门支持面向对象编程(object-oriented Programming)的语言,继承和多态(Polymorphic)是其最重要的特性。
关于C++的继承和类内成员的各种内容在之前的文章中已经有了不少介绍,本篇文章主要是研究一下编译器对C++多态的一个实现方式:虚函数表
C++标准([IOS/IEC 14882:2014])中写道:

Virtual functions support dynamic binding and object-oriented programming. A class that declares or inherits a virtual function is called a polymorphic class.

注意:C++标准并没有规定如何实现多态,所以编译器对多态的实现是Implementation-defined Behavior,意思就是不同的编译器可能对多态的实现是不一样的,在不同的平台可能会无法得到相同的实验结果

阅读全文 »

最近项目打包时遇到一个非常奇怪的错误:

1
2
// package log
Ensure condition failed: ObservedKeyNames.Num() > 0 [File:D:\Build\++UE4+Release-4.18+Compile\Sync\Engine\Source\Runtime\AIModule\Private\BehaviorTree\Decorators\BTDecorator_BlueprintBase.cpp] [Line: 67]


我调试了一下UE4的代码,分析了一下原因和解决过程。

阅读全文 »

UE4引擎里面定义了很多引擎中的宏和一些处理逻辑,如WITH_ENGINE/WITH_EDITOR等,它们部分是UBT通过读取*.target.cs文件中的配置来定义的,有些逻辑是通过读取*.Build.cs的配置处理的。
我读了一下UBT的代码,抽出来部分UBT中配置文件(Target.cs/Build.cs)参数与MACRO的相互定义,作为速查手册。
*.Target.cs的参数可以看:UnrealBuildSystem/Targets
*.Build.cs的参数可以看:UnrealBuildSystem/ModuleFiles
UE的构建系统文档:Build Tools

阅读全文 »

Extract Tor and build Tor Bridge

Tor的Bridge如果传播的范围比较广,可能隔几天就被和谐掉了,频繁地换有点麻烦(恍惚间让我想到了当年改host上Google的时光)。今天折腾了一下,自己在VPS上搭建tor的Bridge来自用。
而且也从Tor Browser里提取出tor,使其不依赖Tor Browser,可以供其他浏览器使用。
警告:部署Bridge可能会增加服务器被墙的概率。

阅读全文 »

Use of dynamic link libraries: loading and linking

在部分SDK的对接中,有些平台除了DLL外并没有提供导入库来供我们使用,那就只能使用代码中加载DLL的办法来调用DLL内的函数,本文来记录一下两种用法,再分析一下优劣。

阅读全文 »

Crawl UE API and generate Dash documents with indexes

不知为何,UE API现在已经不随引擎发布chm的离线文档了,官方发布的最新版本还是2014年的,UE发展到现在有了很多变化,显然四年前的API文档已经丧失部分参考价值了。但是UE文档站自身的搜索功能就我的体验而言,十分的烂。
所以折腾了一下把UE API的所有页面爬了下来,并且生成了Dash支持的文档,检索起来十分酸爽。(文后附下载链接)

2022.06.07更新:把API文档更新至UE 5.0.2,可在文末下载。。

阅读全文 »

Use frp to penetrate the intranet

最近想到还有块树莓派在吃灰,今天使用frp折腾了一下内网穿透,把放在家里的树莓派也可以通过外网访问。

阅读全文 »

UE and VR Development Technical Notes

平时随笔写下的一些UE4和VR开发中的技术笔记,以及一些相关资料的收录,之前零零散散放在imzlp.com/notes中,今天整理了一下,后续的笔记都会放到这篇文章中。

阅读全文 »