<%- jump_to_l10n_link = url_for(path).replace(theme.post_l10n.from, theme.post_l10n.to) %> EN

UE builds projects through UBT (whether using Build in VS or Compile in the Editor, it eventually calls UBT). UBT and UHT are the cornerstones of the UE toolchain, and due to the vast amount of content, it is impossible to analyze everything at once. Let’s outline the main points now and supplement them later as time allows.

Read more »

C++ is a language that supports object-oriented programming (object-oriented Programming), with inheritance and polymorphism (Polymorphic) being its most important features. There has been considerable discussion in previous articles about various aspects of C++ inheritance and class member content. This article primarily investigates one implementation method of C++ polymorphism by the compiler: virtual function tables.

The C++ standard ([IOS/IEC 14882:2014]) states:

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

Note: The C++ standard does not specify how polymorphism is implemented, so the implementation of polymorphism by the compiler is Implementation-defined Behavior, meaning different compilers may implement polymorphism differently, and different platforms may yield different experimental results.

Read more »

Recently, I encountered a very strange error during the project packaging:

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]


I debugged the UE4 code and analyzed the cause and solution process.

Read more »

UE4 Engine defines many macros and some processing logic within the engine, such as WITH_ENGINE/WITH_EDITOR, etc. Some of these are defined by UBT through reading the configurations in *.target.cs files, and some logic is processed by reading configurations in *.Build.cs.

I have read some of the UBT code and extracted part of the configuration files (Target.cs/Build.cs) parameters and their mutual definitions with MACROs as a quick reference manual.
You can view the parameters in *.Target.cs here: UnrealBuildSystem/Targets
You can view the parameters in *.Build.cs here: UnrealBuildSystem/ModuleFiles
UE’s build system documentation: Build Tools

Read more »

Tor’s Bridge, if widely disseminated, may get blocked within a few days, so frequently changing it can be a hassle (this reminds me of the days when I modified the hosts file to access Google). Today, I tinkered a bit and built a Tor Bridge on my VPS for personal use. Additionally, I extracted tor from the Tor Browser so that it doesn’t rely on the Tor Browser and can be used with other browsers.
Warning: Deploying a Bridge may increase the probability of the server being blocked.

Read more »

In some SDK integrations, some platforms provide only the DLL without an import library for us to use. In this case, we can only use code to load the DLL to call functions within it. This article documents two usage methods and analyzes their pros and cons.

Read more »

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

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

Read more »

Recently, I thought about a Raspberry Pi gathering dust, so today I experimented with frp for internal network penetration, allowing my Raspberry Pi at home to be accessed via the Internet.

Read more »

Some technical notes and related materials on UE4 and VR development that I’ve casually written down, previously scattered around imzlp.com/notes. Today, I’ve organized them, and future notes will be added to this article.

Read more »

UE无缝地图:传递Actor到下个关卡

Because Unreal Engine destroys all objects in the current level when switching levels (OpenLevel), we often need to retain certain objects for the next level. Today, I read some relevant code, and this article will explain how to achieve this. Unreal’s documentation does mention this (Travelling in Multiplayer), and it’s not too complicated to implement. However, the UE documentation is consistently lacking in detail, especially in Chinese, where resources are very scarce (mostly machine-translated and outdated). I couldn’t find any reliable information during my search, so I took some notes while reading the code implementation.

Read more »