failed to find object none.none, when loading a

I have several objects in my level that can be picked up and then get added into an inventory array.
while they are being picked up, the object actor in the level then gets destroyed. this all works, without any warnings in the log.
I can then save my game, which saves the inventory array n other stuff.
when loading, i check all the items in the inventory array and destroy their actors in the level, so items that are already in my inventory don’t appear in the level anymore.
when i play the level in pie, it doesn’t give me any warnings, when i load a game, where i already picked up items, which are then in the inventory and destroyed in the level. but if i play the level by launching it, and it loads a with items in inventory who then get destroyed in level, i get these "LogUObjectGlobals:Warning: Failed to find object ‘Object None.None’ " warnings.

this only happens when i open the project in 4.14. the same project in 4.13 doesn’t give me any warnings, when i launch it in there.

i also got a flashlight object, that u can pick up, and that gets saved as well, and destroyed on load when already picked up before. but this one gets destroyed in the level bp, with a delay of .1 on EventBeginPlay (the other items are destroyed in the load function of the player bp). this works without a warning in the logs.

so, should i just destroy the other items in the level bp as well and not in the player bp? or set a delay, before i destroy them? i guess one of these options should work, because i dont get the warning with the flashlight.

I just don’t understand why it works in 4.13 without warnings, but not in 4.14.

any ideas?

hm… did some more testing.
i moved the “destroy actor” of the items out of the load function in the player bp into the level bp, but i still get the warnings, but fewer than before.
right now i have a total of 3 pickable items. if i picked up all of them, then saved n loaded i got 14 warnings.
now, with the destroy actors in level bp, not in load function, i only get 6 warnings.
so, that seems to help a bit. but the other warnings must have something to do with something else, because even if i dont destroy the objects on load, i stell get these errors. so have 3 items in inventory, save, then relaunch game, it then runs the load function automatically, but doesnt destroy the objects in the level, i still get the warnings.
so somewhere something isn’t set up right.
any speculative ideas where this might be?
and still, why does this work in 4.13 without errors, but not in 4.14?

so i think it has something to do with how the inventory array gets saved. if i pick up an object (gets added into the inventory array) and then save, i get the warning, but if i skip the save inventory array part while saving, the warning doesnt come up. so it seems, there’s something wrong with my save process in 4.14.

here are my save n load functions:

am i doin’ something wrong here?

and here’s another log, this one time the engine didnt log object none.none, but the object i picked up (pickablechild) as not found. but i couldn’t reproduce this and i dont know why it did it, this one time. now it says failed to find find object none.none again (like the log in the first post).

any ideas?

hm, instead of destroying the object, when picking it up, setting actor hidden in game, disabling collision and tick also doesn’t change the warning i get when saving.

something else i noticed, i only get the LogUObjectGlobals:Warning: Failed to find object ‘Object None.None’ after i save a second time. the first time, not having a at all, i pick something up and save, i get no error/warning, only when i save again after that.
so the first time i save the bp uses the create save game object and after that it uses the load game from slot to save the game. see the saveload.jpg in the post above. did i set it wrong in the load game from slot ?

CiteNoir,

I believe I was having the same issue you are having about not being able to find an object when I reload my game. I figured out that items that are spawned in game and not placed directly into the world editor will not work because if its inside your inventory but the actual actor ID is not yet created in game, then it will throw this warning.

What I did was create an actor array variable and stored all the inventory actor ID’s within this array and loaded it into my saved gamer object and also reloaded it into my loaded game. If the item was inside this array I set it to hidden and disabled collision on the item first thing.

I’m still not sure how having spawned items will work for something like this since my work around was to basically remove any spawned item code and to just place them directly in game and randomize their hidden/collision for instance if you have a chest that “randomly” gives you items

Hope this makes sense and helps.

hey jimd667,

thanks for the reply!

thing is, all the objects are placed inside the world editor and are not spawned. if i pick them up, they get set to hidden and written into the inventory array. and when i load a game they also just get set to hidden (and collision & tick disabled). and in game it works. all the items are in my inventory and are hidden in game.

it’s just that the outputlog gives me a LogUObjectGlobals:Warning: Failed to find object 'Object None.None everytime i save a second time.
having no save at all, then picking something up and saving the game, i get no warning in the outputlog.
saving a second time with something in my inventory gives me the warning, as well as loading a game, when something is inside the inventory.

so i guess it has something to do with the way i save the array with load game from slot (because the first time, when there is no save, i use the create save game object it gives no warning) and also the way the array gets loaded. all the other things i load (bools & positions) work without problems, just not this array.

i attached a screenshot of my save&load bp, three posts up. do you think i made a mistake there?

thanks again for the answer and have a nice day.

The way I do it is I have identical hidden array variables within my GameHUD and within the SaveGameObject. When I begin the process of saving the first thing I do is check which save I am loaded in (save1,2,3,etc…) or if its a new game.

Then I use the clear array node on all the SaveGameObject arrays first before loading it up with the GameHUD array data. Both set of arrays within these Blueprints are named the same because its easier for me to grab and set them, when the only thing that changes is the target.

I also clear the GameHUD Arrays when loading the data in as well to make sure there isn’t anything there when I reload the data arrays from the SaveGameObject. Basically it’s the above process but in reverse and it looks about the same.

So maybe try clearing the arrays first before saving and loading and see if that helps. I can save multiple times on the same game slot with no issues even after changing my inventory items, so it can be done just don’t give up. If you still can’t get it I’ll post my screenshots for my saving BPs.

hey jimd667,

I tried to clear the array inside the before i save anything. it works in terms that it clears the array but the LogUObjectGlobals:Warning: Failed to find object 'Object None.None everytime i save (if there is a save already created) still pops up in the log.

I’m really at a loss here. I tried so many things but I just can’t get it to work without the warning message.

any ideas?

CiteNoir,

My apologizes for the delayed response, been busy with the New Year. I’m not sure if you figured this out yet but here are my screenshots for the save process I have. Note that this is my method and it works for me but others may do it differently so experiment around:

The first thing that’s used is the SaveToSlots UMG which is added to the players view-port when they overlap a save box. You confirm which save slot you want to use or a new game. Then it loads the objects and does an initial clear of the arrays before setting them and saving the game.

Once you decide to reload the game the first thing the Main Level BP does is spawn the hidden LoadBP on the character’s location so that it immediately loads the game slots and sets the appropriate screen to show (main menu or pause menu). In-between the loading of save1,2,3 is where it calls the final UMG.

The LoadUMG is where the player GameHud objects reload the data into the arrays. As you can see it is a reverse process of the SaveToSlots UMG but within the GameHud widget. I was wrong that my setup cleared the arrays on the load process which it does not, only on the save process.

The OutputLog shows me save a new file after checking if it exists or not and saving with items inside my inventory. Then I pick up another item and save again over the old save1 slot.

I wish you the best of luck on this and I know you can get it to work.

happy new year jimd667,
no apologies necessary, i was on holidays for a week as well :slight_smile:
thanks for answering though.

sadly i can’t read the screenshots, because they are to small to zoom in. i get the logic of what you’re doing. but i cant figure out how you do it in terms of the bp scripting.

could you do me a favor and look at my saving again…

if there is anything incorrectly set.

the inventory array saves an item struct if that makes a difference.
also i only get the warning in log, when i launch the project. if i play in editor i don’t get the warning. the behavior is the same whether i play in editor or launch. everything i want to save, gets saved and loaded correctly, only the warning pops up when i launch the project.

sorry to bother you with this all the time.

This looks to be the same as my issue I’m having. I don’t understand why it happens. Here is a link to my question thread: Saving null class results in a warning

hey ,
your linked question solved my problem!
I had some item class in my struct which i did’t set / were set to none. after i set them to the their bp class, the warning went away!
so thanks for giving me something to think about and try out!
sadly that wont help u much with your problem, i think, as you said you need your classes to be empty while saving. hope somebody can help you out with it. all the best and good luck.
and thanks again to jimd667 for trying to help me out as well!

One solution for this problem is to set the FObjectAndNameAsStringProxyArchive bLoadIfFindFails to false.
“Indicates whether to try and load a ref’d object if we don’t find it”

This of course only helps if you have some c++ part in you system so you can set this bool. And also that you do not want to rely on the serializer to load your missing objects.

Why the whole system attempts to load a ‘none’ object is for Epic to tell us…

1 Like