LoginSignup
0
0

More than 3 years have passed since last update.

[UE4] エンジンコードマージの注意点(パッケージバージョン編)

Last updated at Posted at 2020-03-04

追記

この記事の内容は、誤った改造を行ったことによって、プロジェクトコンテンツとエンジンコンテンツのオブジェクトバージョンが uasset の構造が異なるにもかかわらず、同じ値となりロード処理が失敗するようになってしまった。

正しくは以下の記事を参照
https://qiita.com/Takezoh/items/0b95633e251c965b4f71

元記事

パッケージに格納するデータを拡張する場合、パッケージバージョンを追加する必要がある。
エンジンコードをアップデートの際にエンジン側でパッケージバージョンが追加されていた場合、自動マージではコンフリクトも起きず不整合な状態でマージされてしまう可能性が高い。

正しくマージするには、以下のようにすると良い。(エンジンアップデートの際には要注意)

パッケージバージョンは次のファイルに定義されている。
Engine/Source/Runtime/Core/Public/UObject/ObjectVersion.h
enum EUnrealEngineObjectUE4Version

過去にパッケージを拡張するため以下の修正を行った。

    // LocalizationId has been added to the package summary (editor-only)
    VER_UE4_ADDED_PACKAGE_SUMMARY_LOCALIZATION_ID,
    // Fixed case insensitive hashes of wide strings containing character values from 128-255
    VER_UE4_FIX_WIDE_STRING_CRC,

    // -----<new versions can be added before this line>-------------------------------------------------
    // - this needs to be the last line (see note below)
+   VER_UE4_YOMUNECO_CUSTOM,

    VER_UE4_AUTOMATIC_VERSION_PLUS_ONE,
    VER_UE4_AUTOMATIC_VERSION = VER_UE4_AUTOMATIC_VERSION_PLUS_ONE - 1

VER_UE4_YOMUNECO_CUSTOMVER_UE4_AUTOMATIC_VERSION は同じ値となり、パッケージには VER_UE4_AUTOMATIC_VERSION が格納される。

4.24 へのアップデートを行い、自動マージにより VER_UE4_ADDED_PACKAGE_OWNER が追加された。


    // LocalizationId has been added to the package summary (editor-only)
    VER_UE4_ADDED_PACKAGE_SUMMARY_LOCALIZATION_ID,
    // Fixed case insensitive hashes of wide strings containing character values from 128-255
    VER_UE4_FIX_WIDE_STRING_CRC,
+   // Added package owner to allow private references
+   VER_UE4_ADDED_PACKAGE_OWNER,

    // -----<new versions can be added before this line>-------------------------------------------------
    // - this needs to be the last line (see note below)
    VER_UE4_YOMUNECO_CUSTOM,

    VER_UE4_AUTOMATIC_VERSION_PLUS_ONE,
    VER_UE4_AUTOMATIC_VERSION = VER_UE4_AUTOMATIC_VERSION_PLUS_ONE - 1

この場合、以前のバージョンで作成・更新したパッケージのバージョン番号と、マージ後エンジンの VER_UE4_ADDED_PACKAGE_OWNER が同じ値となり、パッケージのロード処理に不整合が起きる。

正しくマージするには次のようにする。


    // LocalizationId has been added to the package summary (editor-only)
    VER_UE4_ADDED_PACKAGE_SUMMARY_LOCALIZATION_ID,
    // Fixed case insensitive hashes of wide strings containing character values from 128-255
    VER_UE4_FIX_WIDE_STRING_CRC,
+   // Yomuneco custom version
+   VER_UE4_YOMUNECO_CUSTOM,
+   // Added package owner to allow private references
+   VER_UE4_ADDED_PACKAGE_OWNER,

    // -----<new versions can be added before this line>-------------------------------------------------
    // - this needs to be the last line (see note below)
-   VER_UE4_YOMUNECO_CUSTOM,

    VER_UE4_AUTOMATIC_VERSION_PLUS_ONE,
    VER_UE4_AUTOMATIC_VERSION = VER_UE4_AUTOMATIC_VERSION_PLUS_ONE - 1

これによりロード処理に不整合が起きず、新エンジンで作成・更新したパッケージのバージョン番号はインクリメントされ VER_UE4_ADDED_PACKAGE_OWNER となる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0