Hi TJ,
Whilst I appreciate the response and the work the Unreal team puts into the engine, plus the fact we get to use it for free… I still feel like this is not good enough, it’s yet another we can’t reproduce it so we can’t fix it answer that we’ve seen so many times and offers no consolation to those experiencing this breaking bug.
As previously said this happens on every project I make that has master-child relationships and I find it impossible not to reproduce the bug. The fact that you can’t seem to reproduce it is very odd.
Have you tried to reproduce on multiple varying pc systems? Seems strange that only a certain percentage of people ever experience it and it’s usually from first using the engine.
All I have to do is make a parent blueprint, make a struct, reference it in the parent, create a child, change the struct variables in the child, play with the third person or player controller scripts for an hour or so, save, shutdown, restart and the bug appears at least 75% of the time… So why can’t you reproduce it???
I’ve made a thread on the forums where we can hopefully discuss this more easily/productively. Includes a survey it’d be helpful if you’d all fill out.
Hey Joe,
Just resolving this report for tracking purposes. Thanks again for making that survey. Hopefully between here and the forum post we will get some more info that will allow us to track down the cause of this issue.
As I mentioned in the forum thread, 7 people said they can reproduce the issue in a new project. This is exactly what we are looking for. If anyone can do this, please upload it here, link it on the Forum thread, or PM me directly over the Forums.
Thanks,
TJ
Copying this from the forum post I made about it:
OK so I’ve managed to reproduce this very easily in a new project 100% of the time:
- Create a First Person template project
- Create a new Blueprint Actor
- Connect a Get All Actors Of Class node to Begin Play, and set it to the FirstPersonCharacter class
- Create a public variable in the parent Blueprint (I used a boolean and left it false), compile/save
- Create a Child Blueprint from this parent and drag an instance of it in the map
- Change the boolean of the child instance in your map to true
- Compile the FirstPersonCharacter Blueprint
- Close the editor (it will ask you to save the map which you must do)
- Open the project again and notice the public variable you changed is now back at default value
- Hope that these steps reproduce the issue for everyone and this long standing bug gets fixed
You should now also be able to change the variable in the child blueprint again, compile the FirstPersonCharacter blueprint (might work with any blueprint you’re getting all actors of class with), save and restart, and it will keep resetting back to default over and over, 100% of the time.
Hi akka,
Thank you so much for posting this repro! I was able to finally reproduce the bug and I’ve been testing in different version.
I was able to reproduce this in 4.15.2 and 4.16 Preview 3. However; I wasn’t able to repro this in our internal version of 4.17.
In his Forum post, Michael N explains the overhaul that was implemented that he believed should fix this issue. Thanks to your repro, we can confirm that it is indeed fixed for this use case. Hopefully everyone will see similar results when this version is released.
I’ll also post this on the Forum thread as well.
Cheers,
TJ
I have noted in the past this, or similarly described issues, have been flagged as fixed - but it ended up not being quite the same issue. So I would be really keen for someone who has tested it on 4.17 letting us know their result. I have stopped at 4.14 as each upgrade is a bit of work to apply in our project and waiting has been prudent.
But if it works… I’ll be upgrading right away - no brainer.
If this is indeed the fix we have been waiting for, it will be a massive step forward for any of us who have built complex workarounds and lost a lot of time with it! Fingers crossed!!
Bug still exists in 4.16
Collision is being reset to “character” and anim BP to “none” on my child skeletal mesh components.
This came out of nowhere, worked fine before. This is totally game breaking.
Hi, bug still exists in 4.18.0. Pretty annoying and would be a great addition if this is fixed. UE4 is a really good and fun engine to work in but you can’t look over the fact that UE has some nasty long-time open issues like these. Please Epic, add more dedicated resources to this bugs and other long outstanding bugs. I get that adding new features must be done as well but please put these long time open bugs on the next sprint.
Otherwise pretty awesome engine
Hello, This issue have been solved in version 4.18 or 4.19 ??
I have now also experienced this bug in the latest 4.19 previews… Perhaps it’s with us forever more :S
I’ve learnt to completely change my way of programming to avoid this bug and haven’t seen it in a long time. I now use tables to set the initial variables of a child at begin play rather than having to go through the frustration of resets, works well for me and adds little extra work if done properly
ok, i got you, but i have heard that on the versions 4.17-4.19 this proplem goes away, now i’m working on the 4.10. I will test it on the 4.19 and we will see what will happen next
Hi,
Something I have seen several times with Blueprints inheriting from each others, is that by design Unreal doesn’t seem to store a flag to remember if a property has been overriden or not.
Which means it only relies on a diff with the parent BP to consider a property to be overriden or not (yellow arrow) and actually save the value.
The consequence is that I often see bugs similar to the ones described in this thread (inherited values being reset).
Here is an example :
1 - Have some BP named “base” with an integer property “health” set to 100.
2 - Have a BP named “child”, with “base” as a parent, and "health set to 50. A yellow arrow will appear to notify the value as overriden.
3 - Take the “base”, modify the “health” value to 50, then back to 100. The “child” health will be updated to 100 too.
Whenever the base BP property is equal to the overriden child property, Unreal seems to consider that it is no more overriden.
I have seen this behaviour up to 4.16, haven’t tested on more recent builds.
I hope it will help !
Just tested on clean 4.19 and confirm this is still a issue, I really thought this would be fixed by now…
In my case, these were personal properties that child actors (objects) received from the structure (name, icon, description, etc.). All this was erased by restarting UEditor. The link to the structure was in the form of a variable in the master actor., And marking this variable as “exposed on spawn” and “Instant Editable” solved my problem, the data of the child actors were no longer erased.
Just looks like when u open child actor it call to it’s master for propherties structure, master give it, but don’t give permission to child to edit it. This way u get empty fields
Perhaps this will help someone, or at least give a clue
Problem still persists in 4.22
Here’s my project (82mb)
Reproduction Bugs:
Hit Play, Tank has no barrel
Go to BT12-TankPart → Open up Tank_BP → Select Tank Barrel, edit any properties like selecting tank_fbx_Barrel for the static mesh → Save and Exit Blueprint
Hit Play Again, Everything Should world okay, see the barrel in-game.
Hit Compile for the entire project
Hit Play Again, Everything in the Blueprint has reset EXCEPT FOR the socket. This doesn’t get reset for some reason.
Hi!
This problem still happens in 4.23 with maps. I you create a map (I’m using name / boolean pairs) the child blueprint will overwrite the parent maps values.
Your answer solved my problem , additionally it revealed all old properties of all childs.
As you said , It appears that the properties is really there , but the engine can’t read it.
Thanks Anyway #JagMaker
Sadly, this issue is happening in 5.1
Child actors get all their properties reset to its grandparent after packing or resetting the editor.
Tried already the workarounds from old posts and is still happening even in new subclasses.
This completely breaks the entire point of subclassing and can be extremely time-consuming when happens.
Still happens in 4.27 and 5.1. It’s been there in every single version and every single project I’ve worked on. Sooner or later it appears and ruins every single BP. It doesn’t even have to be a child of a custom parent class. Having a child of Actor with components of a custom C++ class will also get their values reset. Curious thing is that engine components such as StaticMeshComponent do not have this problem.