[Major] v34.30 introduced a new editor validation error and when fixed it results in a cook validation error

Summary

There’s a new validation error for project that use GameFeatureData and Base Maps to compose the final scene from multiple level assets:

UEFNValidation: Error: [AssetLog]  /vz_anomaly_1/after_3430/level_b_after_3430 : /vz_anomaly_1/after_3430/level_b_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits). (FortValidator_WorldPartitionActors)
UEFNValidation: Error: /vz_anomaly_1/after_3430/level_b_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)

UEFNValidation: Error: [AssetLog]  /vz_anomaly_1/after_3430/level_a_after_3430 : /vz_anomaly_1/after_3430/level_a_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits). (FortValidator_WorldPartitionActors)
UEFNValidation: Error: /vz_anomaly_1/after_3430/level_a_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)

The example project is called vz_anomaly_1. Here are screenshots of the pre-34.30 project setup.


As you can see, the main scene is the composition of vz_anomaly_1, level_a_before_3430 and level_b_before_3430. Additionally you can see that all levels have an IslandSettings0 actor.

After 34.30 update the editor complains about those additional levels containing the mentioned actor and requires the project to have only a single IslandSettings actor.

The project has been then update into such state as shown in the following screenshots:


In the update version the main scene is now composed of vz_anomaly_1, level_a_after_3430 and level_b_after_3430 and only vz_anomaly_1 level contains the IslandSettings0 actor.

After initial project setup, the editor had a hiccup and complained that level_a_after_3430 still required an IslandSettings actor in order to validate:

UEFNValidation: Error: [AssetLog]  /vz_anomaly_1/after_3430/level_a_after_3430 : /vz_anomaly_1/after_3430/level_a_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits). (FortValidator_WorldPartitionActors)
UEFNValidation: Error: /vz_anomaly_1/after_3430/level_a_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)

The validation passed in this strange state and I could try launching the session where we would be greeted with a cook validation error message:

PlatformCook: Error: We hit an error while cooking this content
PlatformCook: Error: errors.com.epicgames.content-service.cook_failure
PlatformCook: Error: CookJobId:b754864d-3e18-4e9f-8746-fe5760a5e930
PlatformCook: Error: An error occurred while communicating with the game servers (failed to cook module 56e358d6-4e5d-414c-e43a-70ae96da7530 (artifact 41b07854-84da-470e-bd81-741fa0824971:pc) (cookJobId b754864d-3e18-4e9f-8746-fe5760a5e930) with error code errors.com.epicgames.cookplugin.assetvalidationerror).

PlatformCook: Error: AssetCheck: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_b_after_3430.level_b_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)
PlatformCook: Error: LogCook: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_b_after_3430 failed validation
PlatformCook: Error: AssetCheck: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_b_after_3430.level_b_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)
PlatformCook: Error: LogCook: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_b_after_3430 failed validation

Since at this point of time level_b_after_3430 was the only level that didn’t contain the IslandSettings actor, the cook validation error did only mentioned that particular level.

I deleted the entries in the GameFeatureData and re-created them again, which resolved the validation issue on the editor’s side and I could finally remove the IslandSettings0 actor from level_a_after_3430 as well (see the previous outliner image).

When launching the session we will now hit the cook validation issue for both levels.

PlatformCook: Error: We hit an error while cooking this content
PlatformCook: Error: errors.com.epicgames.content-service.cook_failure
PlatformCook: Error: CookJobId:375610d6-dc99-46b9-8cc6-f310b9bee6de
PlatformCook: Error: An error occurred while communicating with the game servers (failed to cook module 56e358d6-4e5d-414c-e43a-70ae96da7530 (artifact a4bbb055-55d1-47c2-a0c3-09dd0432c24c:pc) (cookJobId 375610d6-dc99-46b9-8cc6-f310b9bee6de) with error code errors.com.epicgames.cookplugin.assetvalidationerror).

PlatformCook: Error: AssetCheck: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_a_after_3430.level_a_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)
PlatformCook: Error: LogCook: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_a_after_3430 failed validation
PlatformCook: Error: AssetCheck: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_b_after_3430.level_b_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)
PlatformCook: Error: LogCook: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_b_after_3430 failed validation
PlatformCook: Error: AssetCheck: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_a_after_3430.level_a_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)
PlatformCook: Error: LogCook: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_a_after_3430 failed validation
PlatformCook: Error: AssetCheck: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_b_after_3430.level_b_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)
PlatformCook: Error: LogCook: Error: /56e358d6-4e5d-414c-e43a-70ae96da7530/after_3430/level_b_after_3430 failed validation

With this, the issue which I now have in my main project, was fully reproduced in an isolated project. I worked on my main project for many month and cannot launch it anymore after fixing the in-editor validation issue, due to an additional cook validation issue.

If I try to upload a private version of this project, we will instantly hit similar validation problem like on the cook’s end.

UEFNValidation: /vz_anomaly_1/after_3430/level_a_after_3430 Validating asset
UEFNValidation: Error: [AssetLog]  /vz_anomaly_1/after_3430/level_a_after_3430 : /vz_anomaly_1/after_3430/level_a_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits). (FortValidator_WorldPartitionActors)
UEFNValidation: Error: /vz_anomaly_1/after_3430/level_a_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)
UEFNValidation: /vz_anomaly_1/after_3430/level_b_after_3430 Validating asset
UEFNValidation: Error: [AssetLog]  /vz_anomaly_1/after_3430/level_b_after_3430 : /vz_anomaly_1/after_3430/level_b_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits). (FortValidator_WorldPartitionActors)
UEFNValidation: Error: /vz_anomaly_1/after_3430/level_b_after_3430 Level has 0 Island Settings Devices. Levels should have exactly 1. Unique actors: (ValkyrieValidator_WorldLimits)

Don’t get me wrong, the new / first error message is actually correct and it seems like it does addresses my previous issue report FORT-871013. The problem is that the cook (server-side) seems not to have an updated validation rule set. The cook seems to behave as it was validating on PRE-34.30 rules which force each level to have an IslandSettings actor.

Either way, the two errors bite each other. If you fix one, it will raise the other issue and vice versa. To further clarify, I am personally fine with having a single IslandSettings actor in my project, but I still need the ability to compose multiple levels via GameFeatureData in order to work on things like environment or the landscape individually. This is a very critical workflow.

Please select what you are reporting on:

Unreal Editor for Fortnite

What Type of Bug are you experiencing?

Other

Steps to Reproduce

Shown in the previous images as well as described in the summery.
Additionally you can try the isolated project verse:/velocity_zero@fortnite.com/vz_anomaly_1/ (module: 56e358d6-4e5d-414c-e43a-70ae96da7530).

Expected Result

  • when composed sub-levels contain an additional IslandSettings actor, there should be an error (already the case)

  • the Default Map should contain only a single IslandSettings actor in all composed levels (already the case)

  • the cook should not require each level to have an additional IslandSettings actor (this is like PRE-34.30 validation state)

Observed Result

Either we run into a validation error on the editor’s side or when fixed we run into cook validation failure (server side). The cook should permit the project that contains multiple levels using Base Maps array in FortGameFeatureData and which has exactly 1 IslandSettings actor!

Platform(s)

UEFN

Additional Notes

As noted before, this issue persists in my main project and prevents me from launching a session.

FORT-887061 has been created and its status is ‘Unconfirmed’. This is now in a queue to be reproduced and confirmed.

We’re checking into this!

1 Like

I just want to make sure I’m understanding your example correctly, as it seems you have the following:

  • Default Map: vz_anomaly_1
  • Map Data:
    • Map[0]: vz_anomaly_1
      • Base Map: level_a_after_3430
      • Base Map: level_b_after_3430
    • Map[1]: level_a_after_3430
      • Base Map: level_b_after_3430
    • Map[2]: level_b_after_3430

The way the validation works is the “Default Map” and any “Map” entries in the “Map Data” array are considered “primary” maps for validation, and these are the maps we start to count from, including any specified base maps in their counts.

The validation is getting confused here because “level_a_after_3430” and “level_b_after_3430” are declared as both a “primary” map and a base map. If you deleted entries 1 and 2 from the “Map Data” array then the validation should pass.

Is there a reason you have it configured like this?

1 Like

I do have Map[1] and Map[2] in order to be able to load into those maps in a session to visually inspect them during development. The thing is, in the past those “primary” maps did not required the IslandSettings actor and could run without it. That’s the behavior I wish we could get again. In my opinion only the Default Map should be required to contain the actor for published islands while the other maps should validate without that actor.


I’ll try removing the other entries in my main project and see if I can finally enter the session.

I can confirm that I can finally launch into a session in my main project after removing the additional primary maps. It’s not a huge deal breaker, but it would require manual rewrite of GameFeatureData in order to inspect other levels individually. At least I can continue working on my project. :tada:


If you try to load into a non-default level while it’s not being added in Map Data, the editor will show a pop-up message where the user can pick if the level should become the default level or added to Map Data.

FORT-887058’s status has changed to ‘Ready for QA’. A member of the QA department is investigating the issue.