HELP! Game.dll can't be found when running Packaged Builds on other machines!

#1
Hi there

I'm creating my game with Cryengine 5.5: my project has classes with dependencies on BOOST and OpenSSL (both libraries have been linked via CMakeLists).​ My situation now is: I make the "Packaged Build" of the project after building the game solution in both "Profile" and "Release" configuration (before doing that I cleaned the solution and deleted the old built binaries), if I run the exported executables (under <project_root>/projectName_packaged/bin/win_x64_release) on my local machine, the game starts with no problem (same thing for the visual studio 2017 debugger instances), however, if I run the packaged build on a different machine, the game launcher reports that the "Game.dll" couldn't be found. I also tried to directly copy and paste the entire project (without building it since on the target machine I don't have the boost libraries) and also the sandbox reports that the "Game.dll" couldn't be found.
​I read the documentation several times, but the information about packing the project are too poor of information (last update one year and a half ago and some packaging steps are definetely out of date, e.g.:
​ 1. in the CryEngine 5.5 there is no "<root>/Code/GameSDK/GameDll/GameStartup.cpp" at all, as required in the One-time Setup chapter

2. ). It seems that the remote shader compiler doesn't work at all, or it's not well described where and how run it.



Help please, I'm totally stuck here



Best regards

Re: HELP! Game.dll can't be found when running Packaged Builds on other machines!

#2
Make sure your profile package doesnt require any debug binaries. (ie. build your game.dll in profile, not debug).
Likely the other machines dont have the debug runtimes installed (usually comes with Visual Studio) and so the DLL that requires these debug binaries will fail to load on those machines.

Also, if you have dependencies, make sure the target machines have the prerequisites installed (VC++ Runtime Packages for example) that those dependencies require to function.
RSC is only required for DX12/Vulkan shaders. AFAIK it only works in Profile and will not work in Release. In release it is assumed you will pre package all the shaders precompiled with the game and shouldn't need to compile them at runtime.
Uniflare
CRYENGINE Technical Community Manager
Here to help the community and social channels grow and thrive.

My personal belongings;
Beginner Guides | My GitHub | Splash Plugin

Re: HELP! Game.dll can't be found when running Packaged Builds on other machines!

#3
Ehi Cry-Flare
Thanks for your reply!
What you say it's what i do before making the "Packaged Build".
I did some changes on my game structure and now I have the following message when compiling in profile:

Code: Select all

Vcpkg is unable to link because we cannot decide between Release and Debug libraries. Please define the property VcpkgConfiguration to be 'Release' or 'Debug' (currently 'Profile').
Then I got a series of following errors

Code: Select all

Error LNK2038 mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in StdAfx.obj Game D:\CRYENGINE Projects\Test_5_5\solutions\win64\libboost_thread-vc141-mt-gd-x64-1_68.lib(tss_pe.obj) 1
which seems to be related with the warning above.
I tried to manually set the iterator debug level in the project configuration and I got the warning

Code: Select all

C4005 '_ITERATOR_DEBUG_LEVEL': macro redefinition (compiling source file D:\CRYENGINE Projects\Test_5_5\solutions\win64\Components_uber.cpp) Game d:\cryengine\cryengine launcher\crytek\cryengine_5.5\code\cryengine\crycommon\crycore\platform\crystlconfig.h 42
And seems that the redefinition doesn't affects the compilation process.

Question:
RSC is only required for DX12/Vulkan shaders. AFAIK it only works in Profile and will not work in Release. In release it is assumed you will pre package all the shaders precompiled with the game and shouldn't need to compile them at runtime.
It's not clear to me how to do this process..... in the documentation https://docs.cryengine.com/display/CEPR ... +a+Project it's reported that I have to go to

Code: Select all

<engine folder>/Tools/RemoteShaderCompiler/
and run the shader compiler.
If I do that I got the following output

Code: Select all

Loading shader cache from D:\CryEngine\CRYENGINE Launcher\Crytek\CRYENGINE_5.5\Tools\RemoteShaderCompiler\Cache\Cache.dat Cache file corrupted!!! Restoring backup cache... Copy D:\CryEngine\CRYENGINE Launcher\Crytek\CRYENGINE_5.5\Tools\RemoteShaderCompiler\Cache\Cache.bak to D:\CryEngine\CRYENGINE Launcher\Crytek\CRYENGINE_5.5\Tools\RemoteShaderCompiler\Cache\Cache.dat Loading shader cache from D:\CryEngine\CRYENGINE Launcher\Crytek\CRYENGINE_5.5\Tools\RemoteShaderCompiler\Cache\Cache.dat Backup file corrupted too!!! Deleting cache completely caching enabled Ready
This seems to be broken and it's not clear how to proceed since no

Code: Select all

<engine folder>/Tools/RemoteShaderCompiler/Cache/Assets/ShaderList_PC.txt
is generated.

Another thing: I'm using the cyrengine 5.5 installed via Lanucher, do you suggest to use the Github version of the engine?

Thanks

Re: HELP! Game.dll can't be found when running Packaged Builds on other machines!

#4
The messages from the Remote Shader Compiler are normal, this is typical output on the first run.
After these messages appear, you need to go into game and move around. Shaders that are requested to be rendered will be forwarded to the RSC, that will then compile them. You should see the RSC spit out lines in the console.

Regarding VCPkg and iterator macros, unfortunately I cannot help with this. I do not know what changes you made, and have no come across this personally. It may help to try to get support from the Boost forums etc. If it helps, Profile should be compatible with Debug in the engine.
Uniflare
CRYENGINE Technical Community Manager
Here to help the community and social channels grow and thrive.

My personal belongings;
Beginner Guides | My GitHub | Splash Plugin

Re: HELP! Game.dll can't be found when running Packaged Builds on other machines!

#6
Glad you managed to solve that issue!
When I say move around I simply mean play the game.
As you play through your level, objects will be loaded and materials requested, these materials will require shaders and they will be compiled by the RSC. Or in the case of DX11, they can be compiled by the engine itself and RSC is not needed.

Once you are satisfied that you cannot get any more shaders to compile, and you think you have them all, then you can pack the shaders.

Essentially the steps are:
1. Launch RSC
2. Launch and play your game
3. Package the compiled shaders
Uniflare
CRYENGINE Technical Community Manager
Here to help the community and social channels grow and thrive.

My personal belongings;
Beginner Guides | My GitHub | Splash Plugin

Re: HELP! Game.dll can't be found when running Packaged Builds on other machines!

#7
ok, still a bit confused, sorry if I'm so stubborn.
What I'm doing now, as you suggest is:
1. Open RSC
2. With the RSC runnning ("the console log reports "Ready" ") I go to my project folder
3. I edit my cryengine project and add to the console variables

Code: Select all

{ "name": "r_ShadersRemoteCompiler", "value": "1" }, { "name": "r_ShaderCompilerServer", "value": "127.0.0.1" }
4. I run the game by right clicking on "Launch Game" of my cryproject

Results. The RSC remains on "Ready" and nothing is shown on RSC console and nothing under Cache is saved ..... what am I doing wrong?

Who is online

Users browsing this forum: andrewdixon and 1 guest

cron