Certain BP class properties keep losing value

I’ve just lost data again in 4.10. Any new info why this happens and how to avoid it?

The solution I proposed earlier, to copy-paste affected actors to a text file for safe keeping, does not actually help: it seems that if they are broken under the hood then they will be copied as such even if everything looks okay from the outside (editor UI, PIE). I was happily producing backups for a while then realized that they contained the same broken actors as the map.
I’m looking at two dozen actors, fundamental to the project, and no way to keep their data safe so I’d really appreciate any ideas for a backup solution.

Any update on this?

My team is also running into this (or an extremely similar) issue in 4.10.1.

At first it was relegated to our Character classes - a class in the middle of the inheritance chain would randomly stop referring to its skeletal mesh and reset it to that of it’s grandparent. We also saw some resetting of the collision capsule component’s values. After deleting ALL of our child classes and rebuilding them from scratch - the issue still remained. To work around, we’ve “hacked” the values to be set at runtime in the “BeginPlay” event.

Last night another Actor class chain (our weapons) started exhibiting the same issue - child class data randomly being reset to parent or grand-parent values. We’re losing valuable development time, and a bit of confidence.

Would love to help debug this in any way we can.

Hi ColdIronZinc,

This bug is still under assessment by the development staff. Unfortunately, I do not have a timeframe of when a fix will be made available.

Thanks - please let me know if there’s anything my team can do to help find this issue.

I have this bug too and i’m on 4.10.4

It’s a shame this hasn’t been fixed yet since it’s a bug that makes the map editor useless

Hi HyperBolo,

  • Does this occur in a clean, blank project with no additional content or is it limited to one project?
  • What steps can I take to reproduce this error on my end?

Hi,

Although I don’t have much good repro info to add, I thought I’d mention that:

a) This is happening for me in 4.10.3, in my GameMode (just a subclass of GameMode, the variables are not inherited and are a mixture of floats, ints and enums)
b) One possible out-of-the-norm thing I did beforehand was cutting and pasting a shared macro from another class into my GameMode (but I haven’t been able to narrow that down as a cause).
c) Coincidently, this has happened to me a couple of times today, and at the same time, I’ve also been running into yet another impossible-to-repro bug where the editor will crash if I try to run PIE without compiling and saving changed classes manually (i.e. letting pie auto-recompile). And that problem I think I fixed by getting rid of a new shared macro I had made that had a “Cast to MyGameInstance” node in it. Shared macros have caused me many hours loss in the past (though I thought that was just when using Structs as params) so I wouldn’t be surprised if it has something to do with them.

The only other possible helpful thing I can mention is that the project was started in either 4.8 or 4.9. Will update if I have anything more concrete…

Hello,

This bug is still here in 4.11.0. It’s really annoying for our game and level designers. , I have been able reproduced the bug in a new project which I’m uploading to my dropbox now with instructions inside the map and blueprint files. I’ll PM you in the forums.

For brevity sake:

  1. Make a blueprint and add a variable (I used a static mesh and turned it into an array).

  2. Make that variable public.

  3. connect it through a for each to to a print node on either begin play or a key. → Compile

  4. make a child of this blueprint and put it into the world.

  5. Add array elements to the child variable in the world.

  6. Select static meshes in the world to fill the element slot/s.

  7. play the game. → when it prints it will show what in the array.

  8. Exit game. Open up parent blueprint.

  9. Change the variable’s name. → compile

  10. Play game

  11. Print → The child array is empty… :frowning:

I hope this helps. :slight_smile:

Hi MistaShoes,

This seems more related to another bug in our system, UE-22557. Unfortunately I do not have a timeframe of when a fix will be implemented.

Okay. Thanks .

I still have this bug in 4.11.2

Scratch that fix, didn’t work for long… weird

I managed a temp fix

In Engine\Source\Runtime\CoreUObject\Private\UObject\UObjectGlobals.cpp line 2708

    UObject* ClassDefaults = bCopyTransientsFromClassDefaults ? DefaultsClass->GetDefaultObject() : NULL;

Change to
    
    UObject* ClassDefaults = DefaultsClass->GetDefaultObject();

Unreal seems to think that the variable is transient even when it’s not.

In this line of code (2724) ClassDefaults is NULL causing the variable i.e. float to be set to 0.0

P->CopyCompleteValue_InContainer(Obj, ClassDefaults);

Well my fix works for me, but I would be cautious to implement it in other projects (not to break anything).

P.S. My variable that keeps being zeroed is ACharacter(UE4 Class) → C++CustomCharClass → BlueprintChar → float

We are experiencing this as well, and were wondering if there was an update on the time frame for any potential fix?

was this fixed in any 4.11.x updates? i’m considering migrating my project if this bug is resolved. alternatively, does this inheritance error exist in code projects as well? would also consider putting in the time to convert to code if class inheritance doesn’t have this problem with persistent code based actors.

We’re still seeing this in 4.11.2. By far the most annoying bug in the engine right now. :frowning:

Im getting this in 4.11.2

Could be on restarts but I don’t think so. I work on a project each night and usually launch in editor, fire off some guns, test things haven’t noticed any breaking on restarting.

However as I add new child blueprint weapons I might go back and adjust for some new functionality in the parent weapon class. Then when I open up one of the older children that has A LOT of information setup, it will be defaulted to the parents values.

This is insanely annoying as I’ve setup about 8 or 9 guns a dozen times since they keep getting reset if I just plug a new node in somewhere in the parent. Not even like breaking the parent, or redoing huge sections of the parent.

Adjusting the parent BP for some reason is defaulting the children is my best guess.

Any update on this???

This issue is still occurring in 4.12.5. I see UE-22557 in but I don’t think its accurate - I haven’t renamed any variables and still get all variables reset in certain child classes.

I have the same issue as , I usually notice it right when the level is reloaded or the engine reloads (from just regular startup or after a crash). Sometimes they stay perfectly fine, but they usually reset at least once a day, if not more. I have a child blueprint (and its parent also has a parent to a higher level class). Things that get reset range from arrays full of world actors to simply just checked or unchecked booleans.

I’m tempted to try and recreate my parent classes in C++ at this point but it’d be a lot of work considering how much code I have in them and I’m not even sure if that’d fix the issue at this point.

I would be more then happy to upload my entire project (its quite large though) so someone can get a better idea of what is happening. This issue really needs to be fixed IMO, just from this thread it seems like many peoples projects are crippled because of it and I can say myself it will be very hard going forward without having a solution to this issue.

I followed the steps above outlined by MistaShoes and have confirmed that this is still broken in 4.12.5

This is happening on my project as well. There are dozens of blueprints that switch to default parameters. I worked around some of it by overriding the parameters with literal values on BeginPlay, but that doesn’t help at all for blueprints that are either never spawned or come into play via c++. Also it’s a mess.

My problem does not involve any blueprint actors placed in levels. Everything is spawned at runtime, It may involve creating a new child of a parent, which then triggers some of the other children of it losing their values, though that is speculation at this point.

As our game is very content driven and it’ll only get worse as the number of blueprints continues to mount, it’d be great to have an update here.

EDIT:

This is with version 4.13

Any news on this? This issue is making me lost many hours redoing things. It makes the engine very unreliable for me. Data lost is, in my opinion, one of the worst errors that can happen.

One thing I noticed is that sometimes the issue happens when I duplicate an actor. For example, I have an actor X with a value Y on some property. I alt+drag the actor to create a copy of the actor. The new actor is created, and it is almost perfect, BUT the property doesn’t have the value Y. Instead, the property of the new actor is empty (the original actor remains with the value Y).