Repository navigation
Support OpenPF2 across Unreal Engine 5.3 through 5.8 - #72
GuyPaddock wants to merge 19 commits into
Conversation
Store loaded inventory entries as reflected script interfaces and convert them to a directly initialized const snapshot when calculating changes. UE 5.6 requires reflected interface storage, and initializing the snapshot at declaration avoids assigning to a const TArray.
Keep AddDefaultAbilityTag as a function that returns combined default tags, and apply the result through SetAssetTags in the interactable ability constructor. Cover preservation of existing tags, unchanged inputs, and duplicate prevention in automation specs. UE 5.6 restricts SetAssetTags to derived classes during construction, so the utility must compose the container without calling the protected setter itself.
Register OpenPF2GameFramework with the same module name used by its build rules and plugin descriptor. The old OpenPF2Core registration can prevent the runtime module from being linked and found in monolithic packaged games. The Win64 Development game target now builds successfully.
Use constructor-safe ability asset tags, actor-instanced boosts, explicit array shrinking enums, and internal map indices. Remove a skeletal-mesh cast that cannot succeed for the collision delegate class. These updates retain the existing behavior while using the supported UE 5.6 APIs. The editor target builds without the previous runtime deprecation warnings.
Use the scoped automation flag type and mask constants in both spec macros and all existing specs. Read and update ability-spec source tags through the supported accessor, and run the tag-library suite through the compact macro. The old compact macro would not compile on UE 5.6 and was previously unexercised. Both macro forms now compile, and all 1,886 OpenPF2 automation cases pass.
Use supported ability-tag, PIE ID, replication-frequency, and map-iterator accessors. Reflect the weapon interface through its item-interface parent, include the complete game-state type, and accept gameplay-tag containers by reference. UE 5.6 tightens reflection, include, and temporary-value requirements. These migrations pass editor and game builds, Blueprint compilation, and all 1,886 OpenPF2 automation cases.
Remove module-level UE 5.3 include-order overrides and enable explicit or shared PCHs for the Blueprint nodes module. Modules must follow the enclosing UE 5.6 target settings. The updated rules have passed both editor and game builds.
Construct the dice expression pattern on the first parse call and keep its regex dependency private to the implementation. The monolithic game previously constructed this pattern before Unreal initialized ICU, causing a static initialization assertion before logging started. Editor and game builds, all 1,886 OpenPF2 tests, and packaged Soul Cave startup now pass.
Use the public ability tag container on UE 5.3 and 5.4 and the supported asset-tag accessors on newer engines. Preserve constructor-only tag writes and the shared default-tag composition utility. The UE 5.6 migration introduced accessors that do not exist in older supported engines. The version-gated implementation passes the UE 5.6 editor build.
Select Boolean shrinking arguments on UE 5.3 and EAllowShrinking on UE 5.4 onward. Obtain reflected map indices through the iterator API provided by each engine. The newer container signatures and map index accessor are absent in UE 5.3. The compatibility branches preserve queue and map behavior and pass the UE 5.6 editor build.
Select the UE 5.3 and 5.4 replication-frequency field and PIE identifier where the newer accessors are unavailable. The UE 5.5 accessors removed deprecation warnings on newer engines but broke older engine builds. Version guards preserve the existing update rate and log prefix, and the UE 5.6 editor build passes.
Reuse the EnhancedUnrealSpecs flags adapter in both OpenPF2 spec macros and all spec declarations. Select the available dynamic ability-spec tag API at the UE 5.5 boundary. The previous test declarations required newer flag masks and tag accessors. Both macro forms now compile in the UE 5.3 and UE 5.6 editor builds, and all 1,886 OpenPF2 cases pass on UE 5.6.
Include complete ability-system, player-state, character-interface, and interface-conversion declarations at their use sites. Unity builds hid these existing dependencies. UE 5.4 adaptive compilation exposed incomplete-type casts and an undeclared namespace; the editor build now passes without compiler warnings.
Define FPF2TemlCalculation::GetValue in its header so every translation unit that calls it can inline the body. The old cpp-only force-inline definition was omitted from a monolithic non-unity link, leaving proficiency calculations unresolved. The UE 5.4 Game target now links successfully.
Include the generated declarations for the three reflected enums so StaticEnum specializations are visible to every caller. UE 5.8 deletes the unspecialized template and exposes the missing includes; enum values and Blueprint types stay unchanged. Validated Development Editor and Game builds with UE 5.8.3 on Win64.
Clear the active-effect container owner in the ability system component destructor on UE 5.8. Keep the normal pending-effect cleanup and its diagnostics enabled. UE 5.8 adds a pending-effect deletion log that calls Owner->GetFullName during container destruction. The outer actor can already have been purged, causing a packaged shutdown access violation. Validated the UE 5.8.3 Development Game build and a relocated packaged Soul Cave startup with normal zero-code shutdown.
Document the six tested Win64 engine patches, the matching automation dependency, and the UE 5.3 shared asset baseline. Record D3D11 offscreen validation on UE 5.3.2 and D3D12 on the other tested patches. The compatibility range must describe the engines and rendering paths actually exercised by Playground, with further validation required for other platforms and patch releases.
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info
WalkthroughThe plugin updates its documented Unreal Engine support range to 5.3–5.8 and adds version-specific framework APIs, gameplay tag and item-interface changes, utility updates, and automation-test compatibility changes. ChangesUnreal Engine compatibility and framework updates
Priority: ➖ Normal Estimated code review effort: 3 (Moderate) | ~25 minutes Change: Feature Merge Risk: ⚪ Minimal · up to
|
Provide CONTRIBUTING.md on the compatibility branch with the rule to advance copyright end years when changing project-owned files. Preserve original start years, owners, licenses, and third-party attribution. Contributor guidance belongs with the repository so future edits follow the same copyright maintenance rule.
Advance project-owned copyright end years to 2026 in files touched by the Unreal compatibility changes. Keep each notice's original start year and owner, and preserve all third-party notices and source content. The contributor guide requires current copyright dates when modifying these files. Exact byte comparisons verify that the edits affect only the project-owned year fields.
OpenPF2's runtime and spec code used APIs that differ across Unreal Engine 5.3 through 5.8. Add narrow engine-version guards for ability asset/spec tags, array shrinking and map iteration, replication frequency, PIE identifiers, and automation flags. Retain
AddDefaultAbilityTagand its constructor-safe tag composition behavior.Preserve inventory item interfaces, correct game-framework module registration, and defer dice-regex initialization until use. Add required includes and generated enum declarations, expose the inline proficiency getter to callers, and detach the active-effect owner during UE 5.8 teardown to prevent a shutdown access violation. Module rules inherit the target's explicit include order.
Dependency
Validation
The combined Playground matrix passed on Win64 with UE 5.3.2, 5.4.4, 5.5.4, 5.6.1, 5.7.4, and 5.8.3. Every engine passed Development Editor and Game builds, all 1,886 OpenPF2 and 71 EnhancedUnrealSpecs cases, compilation of 257 Blueprints, Soul Cave packaging, delayed rendered startup with normal shutdown, and a loopback server/client connection. No compiler/linker warnings, failed/skipped tests, Blueprint errors, or load failures were observed.
Offscreen validation uses D3D11 on UE 5.3.2 and D3D12 on the other patches. The installed UE 5.3.2 D3D12 offscreen path still triggers an engine ensure. Remaining asset/editor/runtime warning categories are documented in the Playground compatibility guide. UE 5.7.4 and 5.8.3 report two instant-effect stacking Blueprint warnings each. Shared asset authoring remains on UE 5.3; other platforms and patch releases require separate validation.
Copyright follow-up
Brought the existing upstream CONTRIBUTING.md onto this branch without changing its contents, and updated 55 touched project-owned copyright notices through 2026. Exact byte comparisons verified that the source edits change only project-owned copyright year fields, preserve original start years and owners, and leave third-party notices unchanged. The engine matrix above records the earlier tested snapshot; it was not rerun for this comment and documentation follow-up.