Skip to content

A global source code patching solution for Unreal® Engine plugins

License

Notifications You must be signed in to change notification settings

YunHsiao/Crysknife

Repository files navigation

Crysknife

Documentation Status Build Status 中文

When implementing complex engine-level customizations for Unreal® Engine, oftentimes the changes are completely scattered across engine modules, which could be fine for one in-house engine base, but extremely hard to port to any other.

Even with extended care trying to organize everything into an engine plugin, due to many design decisions of the engine architecture, it is very hard, if not impossible to completely keep away from modifying stock engine files to make everything fully work.

In the end the plugin authors have to ship along some kind of patch file with the necessary surgical modifications into the engine. Be it a git bundle, a diff patch, etc. to be able to deploy their features to other engine repositories. Due to natural differences between code bases, to put it lightly, it does not scale well.

This project aims to provide all the necessary means to oversee & automate this process throughout the development & deployment phase.

Here are the major benefits compared to hand-rolled general-purpose patch files:

Explicit Syntax Requirements
All modifications must follow a set of syntax rules, which strictly guarantees reciprocity and does not require any version control to proceed.
Efficient Conflict Resolution
Patches are fuzzy-matched with customizable thresholds, which eliminates most of the trivial differences. When conflicts do arise, as the bottom line, a detailed report on the failing patch will be exported as an HTML file to guide manual resolution.
Precise Context Management
Matching context can be fully customized per-patch with the decorator system, which provides the much-needed fine-grained control, greatly increasing the robustness of the matching process.
Powerful Config System
Different projects may have different needs for the same plugin, the config system provides a wide range of capabilities to control how the patches should be processed. e.g. Conditional patching based on required feature switches, or transparently format the comment tag to conforming in-house coding standards.
Seamless Multilateral Iteration
Crysknife provides seamless support for multi-plugin architecture, across multiple engine repositories. Everything above just works under this kind of multilateral environment. Patches will be categorized & processed based on the comment tag from/to each plugin folder automatically. Plugin authors can start iterating comfortably anywhere, anytime.

To get started, follow the documents here:

https://crysknife.readthedocs.io/en/latest/usage.html

About

A global source code patching solution for Unreal® Engine plugins

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Languages