sinbad,
@sinbad@mastodon.gamedev.place avatar

F**ks sake they changed something pretty fundamental between UE 5.4 Preview and UE 5.4 Final - the ability to have multiple objects in an asset file, which SUDS relies on - the dialogue and string table are in the same asset; now the string table is gone.

I was worried they might do this because they started hiding them in 5.3 (not a problem) so I tested 5.4 Preview but everything was fine. Now it's completely broken in 5.4 Final, every single dialogue line is <MISSING STRING TABLE ENTRY> 😠

sinbad,
@sinbad@mastodon.gamedev.place avatar

WTF is the point of putting out a Preview version if you're just going to add a breaking change in the final?? Raging.

sinbad,
@sinbad@mastodon.gamedev.place avatar

I'm too angry to code right now, table flipping and coming back to this tomorrow when I can think rationally

sinbad,
@sinbad@mastodon.gamedev.place avatar

It's not even what I thought. I updated my code to separate out string tables into a separate .uasset file instead of embedding in the same one as the dialogue, and the problem is exactly the same.

So I started to debug it. And in both cases, in the debugger I'm seeing the correctly resolved text from the string table. And yet when I pipe that into anything - widget or Slate, it comes out as <MISSING STRING TABLE ENTRY>. WTF is this quantum level shit?

Slate displaying the same text
User widget displaying the same text

oliver,
@oliver@phpc.social avatar

@sinbad I have no idea what kind of stack is that, but the string appears to have a tag that is not properly closed. Could there be something discarding the whole string because of that?

sinbad,
@sinbad@mastodon.gamedev.place avatar

The problem seems to be when the FText goes through TextData-&gt;GetDisplayString(). Everything seems totally fine in the FText itself, but when converted to a string that way it just falls over. I can't see anything wrong with the internal data, the string table reference is fine, the table is loaded, everything looks peachy but then it goes bonkers on conversion to FString

sinbad,
@sinbad@mastodon.gamedev.place avatar

So, FTextLocalizationManager::GetDisplayString is the one that's shitting the bed. In between 5.4 Preview and 5.4.0 they changed the fallback behaviour (when it doesn't find a localised string) from returning the source string, to by default doing nothing and resulting in a null return. There used to be a blanket "else" which caught this case, now it has a a condition that can basically never be true (it requires the current language to be "keys" for some bizarre reason).

5.4 when not using compiled localisations
bShouldKeyifyAll requires the current language ("en") to be "keys" WTF

darbotron,
@darbotron@mastodon.gamedev.place avatar

@sinbad I wholefuckingheartedly approve of this technical description.

sinbad,
@sinbad@mastodon.gamedev.place avatar

If you compile localisations, everything works. English and other languages. The problem is that this is a pain in the arse to do, you absolutely don't want to be doing this just to see your native text on the fecking screen. I have no idea who changed this at the last minute or why but it's completely broken FText based on StringTables until you build localisation. It can't be just my usage??

sinbad,
@sinbad@mastodon.gamedev.place avatar

Here's the commit that broke it, for those with access https://github.com/EpicGames/UnrealEngine/commit/4701ba824a65f46387bbf98ecc92be77b39a3842. Funnily enough I used to talk to the author on Twitter ages ago but I don't think I have a route to him now. I'm going to try commenting on the commit to see.

neilhenning,
@neilhenning@mastodon.gamedev.place avatar

@sinbad I’ll ask around internally about it too.

sinbad,
@sinbad@mastodon.gamedev.place avatar

@neilhenning I’m sorry to have to ask but could you put some feelers out inside Epic to find out when this fix is going to be merged into the official 5.4 release please? It missed 5.4.1 and it’s completely road blocking my plugin’s 5.4 update because FText + StringTables are broken until you build localisation. ☹️ I’m not getting any response on GH

Thank you!

https://github.com/EpicGames/UnrealEngine/commit/a51ed8442674fe9ef21fbe4934961d59118ad084

neilhenning,
@neilhenning@mastodon.gamedev.place avatar

@sinbad leave it with me!

jrovirab,
@jrovirab@mastodon.gamedev.place avatar

@neilhenning @sinbad it's already ongoing.

neilhenning,
@neilhenning@mastodon.gamedev.place avatar

@jrovirab @sinbad Jamie is on it! They’ll update that GitHub thread once they know it’s on its way.

sinbad,
@sinbad@mastodon.gamedev.place avatar

@neilhenning @jrovirab thanks both of you

sinbad,
@sinbad@mastodon.gamedev.place avatar

@jrovirab ok thank you

sinbad,
@sinbad@mastodon.gamedev.place avatar

I’ve been told that the fix for FText+StringTables has been merged for UE 5.4.2. I’ve heard anecdotally that several other plugins as well as mine have been blocked from supporting 5.4 because of that bug, so happy days if it pans out as hoped 🤞

dougbinks,
@dougbinks@mastodon.gamedev.place avatar

@sinbad "The likelihood of this breaking user code is very low." :)

sinbad,
@sinbad@mastodon.gamedev.place avatar

@dougbinks I know, right? Either I'm doing something completely wrong or this was badly thought out

dougbinks,
@dougbinks@mastodon.gamedev.place avatar

@sinbad What you're doing makes sense to me, but I don't use UE very often so am no expert.

sinbad,
@sinbad@mastodon.gamedev.place avatar

Oh thank goodness, it IS a bug and has been fixed, but it missed 5.4.0 which released with basically broken FText/StringTable support 🙄 https://github.com/EpicGames/UnrealEngine/commit/a51ed8442674fe9ef21fbe4934961d59118ad084

psychicparrot42,
@psychicparrot42@mastodon.gamedev.place avatar

deleted_by_author

  • Loading...
  • Doomed_Daniel,
    @Doomed_Daniel@mastodon.gamedev.place avatar

    @psychicparrot42 @sinbad
    Whenever they feel like releasing 5.4.1, I guess

    sinbad,
    @sinbad@mastodon.gamedev.place avatar

    @psychicparrot42 Hope so. I'll just have to not release my plugin for 5.4 until it is, and put up with the marketplace side-eyeing me for not keeping up to date when in fact I did all the work a month ago if it wasn't for this 🙄🙄

    psychicparrot42,
    @psychicparrot42@mastodon.gamedev.place avatar

    deleted_by_author

  • Loading...
  • sinbad,
    @sinbad@mastodon.gamedev.place avatar

    @psychicparrot42 It's technically fixed in the source version but it's just not been merged into the branch which generates releases. So if it was just for my own project I could get the fix right now if I wanted. The problem is, being a marketplace plugin, pretty much everyone using it will be on the officially released version so would have the broken version

    sinbad,
    @sinbad@mastodon.gamedev.place avatar

    @psychicparrot42 TBF the extremely fast response I got from the comment I made on the source has almost completely dissipated my annoyance. Everyone makes mistakes, I just think whoever reviews merges for releases dropped the ball here, this is a pretty big breakage to let in there in between a Preview and Final release (and not merging the fix in time)

    sinbad,
    @sinbad@mastodon.gamedev.place avatar

    Christ alive they've shipped UE 5.4.1 and didn't merge in the fix which un-breaks FText + StringTables (pre-localisation compile). The fix is a one line deletion, it's been in ue5-main for over a month, but it wasn't merged and thus my marketplace plugin is still completely broken in 5.4.1 because it relies on FText displaying the source string from a string table before you build translations in the localisation dashboard. Everyone who uses string tables will have this problem. Madness

    Doomed_Daniel,
    @Doomed_Daniel@mastodon.gamedev.place avatar

    @sinbad argh :-/

    sinbad,
    @sinbad@mastodon.gamedev.place avatar

    Obvs Epic are on main rather than release, and they probably automate their localisation build (if loc files are there all is fine), but if you're creating string tables yourself, or something generates them (like SUDS) and want to see the text, nothing works until you build localisation even with 5.4.1 now. I'm very disappointed in how they've handled this one, the breakage was right between Preview and 5.4.0 and I have to put a "it's not my fault" banner on the marketplace which prob looks sus

    sinbad,
    @sinbad@mastodon.gamedev.place avatar

    I know you have to be careful about merging changes into a stable release, but if only the merger of the breaking change between Preview and 5.4.0 had been as careful as they're now being over the 1-line fix for it :(

    sinbad,
    @sinbad@mastodon.gamedev.place avatar

    I've prodded on GitHub but if anyone knows how I can escalate getting https://github.com/EpicGames/UnrealEngine/commit/a51ed8442674fe9ef21fbe4934961d59118ad084 merged into the release branch, I'd be grateful. Without it UE 5.4 totally breaks FText + StringTable usage until you build localisation so it surely must impact quite a few people

    sinbad,
    @sinbad@mastodon.gamedev.place avatar

    I had been feeling really positive about publishing marketplace plugins so far but 5.4 has really been a kipper to the face

    badlogic,
    @badlogic@mastodon.gamedev.place avatar

    @sinbad Sure hope you have more luck getting Epic to even recognize the issue. We had to break every user's project...

    sinbad,
    @sinbad@mastodon.gamedev.place avatar

    @badlogic they’ve already fixed it on main, someone has to just merge it into release

    badlogic,
    @badlogic@mastodon.gamedev.place avatar

    @sinbad Hope!

    bitshifter,
    @bitshifter@mastodon.gamedev.place avatar

    @sinbad I noticed this in 5.4 as well and haven't had the chance to look into it so thanks for this thread! Hopefully it gets fixed soon, pretty annoying.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • random
  • kavyap
  • ngwrru68w68
  • GTA5RPClips
  • DreamBathrooms
  • mdbf
  • magazineikmin
  • thenastyranch
  • Youngstown
  • Durango
  • slotface
  • everett
  • vwfavf
  • rosin
  • Leos
  • normalnudes
  • khanakhh
  • cisconetworking
  • cubers
  • InstantRegret
  • ethstaker
  • osvaldo12
  • modclub
  • anitta
  • provamag3
  • tacticalgear
  • tester
  • megavids
  • JUstTest
  • All magazines