[4.8 P3] Unable to package my game

Hello,

When I try to package my game (in shipping 64 bit, windows), I have an error in the cooking. This is the log and the cook.txt. Not sure what I am doing wrong.

Hi morph208,

One thing to try, and then I’d like new build output logs from you.

Delete from your Engine folder: DDC

Delete from your Project folder:
Intermediate, Saved, Binary and DDC.
Restart your computer. Then migrate
your project to a new blank project in
the 4.8 preview.

Package as normal, and if it fails, please post your failed build output logs here.

Thanks!

Hi wittlief,

Thanks for getting back to me. Sorry I took so long to answer. So I did exactly what you suggested to do and it’s still failing. This is the log and the cook of the new clean project where I migrated everything. What you will notice is that the log states that there’s an error “BUILD FAILED: Failed while running Cook”. But if you look at the cook log, there’s no error: “Success - 0 error(s), 17 warning(s)”. And in fact, if I only launch the cooking from the editor, it works fine. But the process of packaging fails without any actual error.

Could you suggest a workaround maybe?

Are you packaging from the editor, or from Unreal Frontend? Have you run the ‘fixupredirects’ commandlet to help with those ‘failed to find’ errors below?

Also, before the 0 error summary there is a list of possible issues, I’ve listed the most relevant;

Warning/Error Summary

UE4Editor-Cmd: [2015.05.29-15.12.41:968][ 0]LogInit:Display: LogLinker:Warning: Can’t find file ‘/Game/Developers/PaulSvoboda/COG_BuildingSetA_Tree_02’
UE4Editor-Cmd: [2015.05.29-15.12.41:968][ 0]LogInit:Display: LogUObjectGlobals:Warning: Failed to load ‘/Game/Developers/PaulSvoboda/COG_BuildingSetA_Tree_02’: Can’t find file ‘/Game/Developers/PaulSvoboda/COG_BuildingSetA_Tree_02’
UE4Editor-Cmd: [2015.05.29-15.12.41:968][ 0]LogInit:Display: LogUObjectGlobals:Warning: Failed to find object ‘Object /Game/Developers/PaulSvoboda/COG_BuildingSetA_Tree_02.COG_BuildingSetA_Tree_02’
UE4Editor-Cmd: [2015.05.29-15.12.41:968][ 0]LogInit:Display: LogLinker:Warning: Asset ‘…/…/…/Engine/Content/MobileResources/LoadingScreen.uasset’ has been saved with empty engine version. The asset will be loaded but may be incompatible.

That last error is exists to warn when engineers who are working with local changes save assets that may not be compatible with your team’s “promoted” build. You can 1) remove & reimport these assets or, 2) open problematic assets, edit something inside and save them.

But mostly, I am a concerned about this:

Failed while running Cook for
V:\Perforce\master_workspace\unreal\demo_projects\DemoColibri2\DemoColi>bri2.uproject

Are you attempting to package a project that is located on a network and not your local machine?

I’m packaging from the editor. I tried to run the fix up predirects but the errors are still there. I will try to reimport the tree mesh.

And no, I don’t attempt to package over the network. I’m guessing this remark came from the "V:" drive but it’s actually just the letter of one local drive. I tried on 2 different machines (the other from the classic "C:" drive) and I have the same error anyway.

I find that weird that it complains about an error during the cooking phase but the cook log explicitely tells me that there’s no error. And again, I can cook from the editor, it does not report any error. Only when it tries to cook through a packaging process.

Any other idea?

A follow up… The error: “LogInit:Display: LogLinker:Warning: Asset ‘…/…/…/Engine/Content/MobileResources/LoadingScreen.uasset’ has been saved with empty engine version. The asset will be loaded but may be incompatible.” is in the engine. It’s not one of my class. So I can’t really do anything about it.

The warning about the COG_BuildingSetA_Tree_02 is still there. I re-imported the mesh (from the Blueprint project you guys made available, the one with the tree and the 3 surveillance cameras).

When you say ‘cook through a packaging process’ what do you mean?

Oh I just mean that I’m trying to package. First it starts by building the project, then by cooking it. And it fails during the cooking phase even though there is no explicit error in the log…

Hi morph208,

Are you still having this same error? As your cook warnings all seem to be related to assets you’re not using, and the fix up redirects aren’t catching the problem, please see the answer on this AnswerHub thread where a user was seeing the same error as yours, and give his fix a try. Please make sure to make a copy of your project on which to test this fix.

While you have a copy made, you might try upgrading to the latest preview for the 4.8 build and see if any fixes have gone in that might fix your specific issue.

Thanks!

Hi morph208,

We have not heard back from you in a few days, so we are marking this post as Resolved for tracking purposes. If you are still experiencing the issue you reported, please respond to this message with additional information and we will offer further assistance.

Thank you.

Sorry I was abroad for a week. I did more tests today and I still have troubles packaging. Here what I did today:

  • updated to final 4.8

  • created a new Blueprint project and migrated all contents from my project as you suggested
    => I tried packaging and I got this error: packaging-is-failing-in-48

  • tried the workaround, I could get a little bit further. I started having linking issues with SDL2 used by one custom plugin we have like this one: “memcpy already defined in MSVCRT.lib”. So probably an issue along the lines of /MD vs /MT (although my plugin compiles fine from visual studio in another project, but for some reason it was an issue when it attempted to build the plugin while packaging).

  • to investigate the issue further in Visual studio, I attempted to convert my Blueprint project into a C++ one by adding a dummy class. But if fails. I have not written down the error though, something about a namespace.

  • I then created a brand new C++ project, migrated all my content again and tried to package one more time. The error I had with SDL2 disappeared with the C++ project, the build worked fine but it still fails in the cooking phase but with another error it seems: “Missing closing parenthesis”. Here is the log and the cook.txt.

Last thing, I have tried to delete all the content folder while the project is opened like described in the link you gave me, but I didn’t behave the same way. When I pressed delete on all files in the windows explorer, it just delete all of them without complaining that they are opened…

I did some more tests today. I succeeded in packaging my project by removing all the plugins. I eventually found the culprit, one of our custom input device plugin. What I notice is that the editor version of this plugin is launched during the cooking phase of the packaging (development or shipping for windows 64 bit) and soon after the cook command returns with an exit code of 1. So I highly suspect that the plugin is the cause.

However, if I only execute the cooking from the editor (File>Cook content for windows), the plugin is launched as well (I have a log output in the constructor) but the cooking succeeds.

  1. is it normal/expected for the plugins to be executed during the cooking phase? Because we tried with a joystick plugin (link found here) we have and the constructor does not seem to be called during the cooking phase. So do we do something wrong in our plugin? Do we have to do something specific to prevent the execution of our plugin during the cooking phase?

  2. any idea why the cooking fails during the packaging but not if the cooking is done separately? Is there a difference in the way the cooking is done between the two methods that could explain the difference we see with our plugin?

You can prevent this by marking the plugin as game no commandlet / editor no commandlet in the Uplugin file.
See the module descriptors.

Thank you for your answer… I’m not sure to fully understand the module descriptor Type. In the documentation the options “RuntimeNoCommandlet”, “EditorNoCommandlet” and “Program” are not explained. What exactly do the options RuntimeNoCommandlet and EditorNoCommandlet you suggested?

We put our finger on the bug we had inside our plugin, it seems to be related to a simple “std::cout”. I will come back later with more information and the logs.

After lots of debugging, I finally put my finger on the problem. In the constructor of our plugin, we create a new custom class. In the constructor of this class, we call a method on one of its member (which is a class we have in a custom library). If I print something inside this method with a simple “std::cout”, it crashes.

Here is the log and the cook.txt. I’m thinking it could be something related to the fact that std::cout is not thread safe, maybe? But again, if I only cook (“Cook content for windows” from the editor) everything works fine. But it fails during the cooking phase in the constructor of my plugin when attempting to package. It’s totally reproducible and we did reproduce it on 2 different computers.

For now I commented out all the std::cout we have in this method and I can package again. And once I understand the “Type” of the plugin, I can maybe leverage that as well. But I really think we should be able to have std::cout in plugin constructors… Any idea on the issue? If I have time I’ll try to reproduce it in a test case.

I noticed there is a difference in the command line of executing the cooking between “Cook content for windows” and the cooking during the packaging, the later has the flag “-UTF8Output”. Since I have troubles with std::cout, I’m wondering if it’s related…

I would strongly recommend using our logging system to provide output.
the std streams are piped for several of our commandlets (to provide output to the editor).