Verse Validation Failure

Summary

After the 40.20 update, we have been experiencing issues publishing our island. In the Verse validation section, an error message appears that points to a file that has already been deleted.

The deleted file did not include or implement any persistence. Before it was removed, it was already producing the same compile errors that are now appearing in the Creator Portal during the publishing process.

Currently, the project compiles successfully in our editor, and we are able to generate private versions without any issues. However, the Verse compile error continues to appear when attempting to publish.

Full error message:
Module 81985958-4adf-2c87-841c-a09dcc3d56f1 in candidate link 8725-2265-7526?v=1 has error: “This overriding data definition must be a subtype of the definition it tried to override: Verse.org.SceneGraph.basic_interactable_component.CanInteractMessage” in file: “C:/build/FortniteGame/Plugins/GameFeatures/81985958-4adf-2c87-841c-a09dcc3d56f1/sys/published/Content/VerseDir/daily_rewards_button_component.verse” at line: 46
verse_validate_publish_error

Please select what you are reporting on:

Unreal Editor for Fortnite

What Type of Bug are you experiencing?

Creator Portal

Steps to Reproduce

1 - Have a code that breaks on a UEFN update;
2 - Remove the breaking code.

Expected Result

After correcting or deleting the code that was generating errors, we expect no errors to appear in the Creator Portal when attempting to publish.

Observed Result

Even after deleting the problematic code, these errors still appear when attempting to publish.

Platform(s)

PC

Island Code

6671-8209-3592

hi @Zablabior

Have you tried looking at the modules in and see if the the module is removed or a link still exists

UEFN - Content Service

My published island shows the module

Hey @Jimbohalo10

We have our module (only one) in the Modules tab.

hi @Zablabior ,

Does your Module id in the above screen shot like mine from PubInIslFeatureEx.uefnproject

in the Project directory at the bottom of the file.

	"modules":
	{
		"PubInIslFeatureEx": "c4660227-4ed3-a366-ccd0-f5a9b0942a4d"
	},

There should not be any other modules and module id should match

Hey @Jimbohalo10

It seems that the IDs match.

image

hi @Zablabior ,

Just remembered there is a new function which may solve the problem.

Hey @Jimbohalo10

Unfortunately, it didn’t work.

hi @Zablabior

Have you tried restoring with revision control to original 40.10 then use the Validation Fix tool

Validation and Fix-Up Tool in Unreal Editor for Fortnite | Fortnite Documentation | Epic Developer Community

This might fix any errors caused by changing from 40.10 to 40.20

something has changed in Scene graph api in 40.20,but does not explain what

Verse API reference page for the InteractMessage function | Fortnite Documentation | Epic Developer Community

So its too deep verse for me

just have to wait for Epic Support as not in known bugs list

Hi @Zablabior - sorry for the trouble here. Can you change CanInteractMessage in the basic_interactable_component to <override> so you can compile?

1 Like

Hi @Flak ,

As mentioned earlier, the code responsible for the issue has already been removed, since it is no longer used in the project. After removing the faulty code, the project compiles without errors in the editor.

However, the Verse validation error still persists for private codes generated after the removal. This is confusing, as the validation process is reporting an issue in code that no longer exists in the project. It appears that the Verse “state” on the server may be out of sync with the local version (or not being updated by it, otherwise).

The change you suggested has already been tried—namely, making the faulty code comply with the changes made to the basic interactable component in update 40.20 (that is, marking some of the member variables, such as CanInteractMessage, with <override>). Regardless, we can try this approach again.

TLDR;

Did you had custom CanInteractMessage prior to the recent addition of the same API by Epic? If you did, then congratulations, Epic burned a type member name that collides with your code. This results in a situation where the code of your previous game build is compiled against the new tools and bumps into this compiler failure. It’s not about your new game build, it’s Epic’s current way of determining verse persistence backwards compatibility that itself breaks when Epic does not provide backwards compatibility against our published games.

What you can do now?

Ping Epic possibly even Sabrina or Magnus to forward this issue to the right team. You will not be able to publish your game(s) until they deploy a proper patch on their end.

This is a similar situation where their tools nuked my game for an entire week after releasing v40.


Long story short, “verse validation” during publishing will fail if your old game build cannot compile against Epic’s new tools without emitting any errors.

This is a very frustrating developer experience!


Start
  |
  v
New game?
  |-- Yes --> Compile with new tools
  |             |
  |             +-- Issue? ---- Yes --> Cannot publish
  |             |
  |             '-- No --------> Publish / No issue
  |
  '-- No --> Published game update
               |
               v
      Compile update with new tools
               |
               +-- Issue? ---- Yes --> Cannot publish update
               |
               '-- No
                    |
                    v
      Additionally compile old build with new tools 
    (verse persistence backwards compatibility check)
                    |
                    +-- Issue? ---- Yes --> Cannot publish update
                    |
                    '-- No --------> Publish update / No issue
2 Likes

Hey @Velocity_Zero

This was pretty much what happened. We had a class that inherited from basic interactable component that had a private member called CanInteractMessage. Since the update introduced this same variable name in this component, a compile error was generated.

I guess we will be putting a “_” at the end of every function, module, class, struct, enum and variable name from now on :confused:

Thanks for letting us know.

All my types are vz_* prefixed to avoid collisions (okay).
All my folders are VZ_* prefixed to avoid module collisions (ugly).

I don’t intend adding anything to avoid type members.

Epic should really re-do how they evaluate verse persistence, because all these collisions are not relevant to persistence backwards compatibility checking by any means.

1 Like

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

1 Like

Hello everyone! This issue should be resolved and you should not be getting blocked by backwards compat checks when attempting to publish. If that is not the case, please do let me know! Thanks!

thanks! the fix worked for us.
Appreciate your feedback