Hello everyone! I’m currently having some issues related to saving blueprint data in my project. One of my blueprint classes is not inheriting some values from the base class after restarting the editor. For example:
Actor -> Pawn -> Character -> BaseCharacter -> Crab
Actor -> Pawn -> Character -> BaseCharacter -> BasePlayer -> Player
Each class has it’s own SkeletalMeshComponent (from the default Character), In the “BasePlayer” class the SkeletalMesh collision properties does not inherits from BaseCharacter but in the “Crab” class it does. And it happens only with some variables like.
Collision Presets: Custom (should be NoCollision)
Recive Decals: True (should be False based on BaseCharacter)
Use Attach Parent Bound: False (should be True based on BaseCharacter)
That also happened back in 4.12.2/4.12/4.11.2, Any idea on what I could do to fix the problem? (There are some other blueprints that are having this issue as well) That’s really slowing my project development… It’s probably a bug but any help would be greatly appreciated!! Sorry for my English!
I have a few questions for you that will help narrow down what issue it is that you are experiencing.
- Can you reproduce this issue in a clean project?
- If so, could you provide a detailed list of steps to reproduce this issue on our end?
- Could you provide screen shots of any blueprints that may be involved with this issue?
Hi Rudy! Unfortunately no. I tried to create a new project, made all those subclasses and nothing. But here is something interesting, if I duplicate the BasePlayer class, the duplicated one does inherit from BaseCharacter. But if I then delete the original and replace all the references to the duplicated one, the issue returns.
I even tried to change bSkeletonInheritSkeletonClasses to true in the “BaseEngine.ini” in hopes that it would work but nothing.
Also, quick notice: the BaseCharacter SkeletalMeshComponent does not have a mesh set up. It’s just blank, made entirely to be replaced on futher classes. (only with NoCollision, Recive Decals to false and Attach Bounds to false of course)
Did this issue start occurring after updating your project? If so, could you try deleting your saved and intermediate folders before updating and let me know if this makes a difference?
Sure! However it didn’t work, here is what I did:
EDIT: No it wasn’t after any update, I don’t quite remember when this issue became a thing, sorry. Still through, I decided to do what you said.
Removed the Saved and Intermediate folders making sure that the BasePlayer SkeletalMesh was set back to default but no luck.
Migrated the BasePlayer class (and it’s related assets) to a new project (just to make sure is not some temporary file on my project) and even in the new project it still didn’t manage to reset back to it’s default values.
At this point, I really didn’t know what else to try so…
- Started deleting all BasePlayer’s related assets one by one (restarting the project each time to see if it goes back to default), after all references went gone, the BasePlayer class did indeed went back to it’s default values from BaseCharacter.
Now I’am really confused, so apparently references somehow do change other blueprints variables in the editor.
And no, there is no blueprint whatsoever changing those BasePlayer variables.
Another interesting thing is that if we open the BasePlayer asset file in Notepad++ you can clearly see that the asset is overriding it’s base class:
EDIT 2: It appears that if I change the bDeferDependencyLoads to false from the “BaseEngine.ini” file it does make the BasePlayer’s SkeletalMesh return to it’s default value, but then some other random blueprints start to lose their values like the GameMode for example. (Sorry for editing, hope that helps!)
Would it be possible for you to provide the project or a simplified version of your project that reproduces this issue so that I could take a closer look?
I managed to fix the problem, It appears to be something way bigger than just reseting default values. The packaged game was crashing every time I tried to possess a BasePlayer class.
<ErrorMessage>Fatal error: [File:D:\Build\++UE4+Release-4.12+Compile\Sync\Engine\Source\Runtime\Engine\Private\Components\PrimitiveComponent.cpp] [Line: 1581] &nl;Default__BaseCharacter_C MovedComponent CollisionCylinder not initialized deleteme 0&nl;</ErrorMessage>
So after a long search (up to 5 AM) I found out that the Engine doesn’t handle too well referencing/casting to sub-classes in Blueprints.
It’s definitely a bug because it gets to a point where if I just connect one casting pin (to BasePlayer) the game crashes (In a Animation Blueprint for example). Or reference it to spawn in the GameMode BP class, crashes as well. (Not in the Editor, in the package Game… which is also another clue that this is a bug).
I guess now that I kinda know what it is, maybe I could try to reproduce it again in a clean project and give you the steps?
So, right now everything seems to be fixed (Not in a good way through). But as soon as I start recasting and referencing it… I may gonna have to package again to see if it’s really working. Nevertheless, thank you for helping me.
I am happy to hear that you have found a solution to your problem. If you would like to provide updated reproduction steps with the new information that you have, I will happy to take a look and assist you further.
Sorry for late reply. I wasn’t able to reproduce this in a clean project. I tried referencing the default ThirdPersonCharacter to structures, animation blueprints, gamemode but nothing.
I may look into this issue again in the future (taking a look into the engine source code), but for now, since I know how to avoid it, I’ll just leave it there. However if anyone gets this issue as well, I’ll try to help. Again, thanks for supporting me.
I will be converting you comment above to an answer. If in the future you would like to investigate further (as you mentioned above) please feel free to reopen this issue with any additional information you may have by posting a reply
Make it a great day