Showcase

Integrating UE into Native Xcode iOS Projects

Integrate UE into native Xcode iOS projects, allowing the native Xcode project to drive the engine as needed and enabling bidirectional communication, launching the Unreal Engine and running games within a regular App.

IOSDemo

Demo Video:

This solution has been validated, and the Xcode side can operate independently of the engine source code.

Human Posture Tracking in UE

Implementing facial, posture, and hand tracking in UE using a regular camera:

Tracking data can be accessed directly in UE, which can be used to develop motion-sensing games.

Shader Compression Scheme Based on Dictionary

Size comparison of ushaderbytecode in actual projects (unit M):

Android_ASTC IOS WindowsNoEditor
LZ4 172 314 95.7
ZSTD 37.6 53.7 20.2
Dict 4.53 9.48 2.4

Using ZSTD + dictionary for Shader compression improves the compression ratio by about 65~80% compared to the engine’s default LZ4.

Runtime decompression time:

For specific implementation ideas, see:

Pak’s Runtime Reorganization Hot Update Scheme

Based on client version detection and update scheme, Pak’s runtime reorganization.

Advantages:

  1. Reduces management costs on the publishing side
  2. Different versions of the Client share the same published version
  3. Maximum reuse of local resources
  4. Local merging of Pak reduces the overhead of excessive Pak files

Multi-stage Automated Resource Check Scheme

Supports intervention in various aspects of the UE resource production process. It ensures regulatory checks of resources during editing, submission, CI/CD scanning, and packaging stages, ensuring that the resources entering the package are compliant.

For detailed feature support, see:

It is a very powerful and comprehensive resource check tool.

Precise and Flexible Base Package Splitting Scheme

Supports non-intrusive implementation for precise base package splitting. It allows for the precise division of AssetRegistry, ShaderLibrary, etc., and can be non-intrusively integrated into the default packaging process of UE.

Manage all resources in the project except for pakchunk0:

It is a non-intrusive implementation, requiring no modifications to the packaging process. Simply starting the default packaging of UE will automatically handle everything. There is no need to modify the engine, and all features are implemented purely as plugins.

See the articles for further details: