I tried to create a Windows release build by clicking following menu items:
Project -> Bundle -> Windows Application… -> Release mode (checked in the dialog box) -> Create Bundle…
But I don’t know if the build is really a release build or not. According to the profiling manual, “The built in profilers are available on debug builds only”, but the profilers is available in my build and occupied port 8001 and 8002, and caused another service of my game failed to start. BTW, the windows console window which display the log messages is also there when my game started.
So I doubt the build I created is not a release build, and anyone can give me some hints how to create a Windows release build?
Currently, when using native extensions, the release only strips the engine. This is reported as DEF-2477.
We’re currently working on fixing it and it should land in 1.2.137 or so…
In the mean time, the workaround is to use an app manifest.
You can download one from @britzl’s page Manifestation
Select the feature you want
Download the manifest
Name it game.appmanifest
link to it from the game.project setting native_extension.app_manifest
Bundle the game
Now you should have a build without the feature you didn’t want/need
I tried to build the game with following game.appmanifest, but the profiler is still there and port 8001/8002 are still occupied. I am sure the build process is used this manifest because there would be build errors if I turned on ‘use clang’ - of course, it is another problem.
As Björn mentioned, the “Release” flag disables the engine service which holds the web server.
When you launched it, did you use “build and run”?
Regarding building with clang, I’d like to know what extensions failed to compile and why? Was it your extensions, or some third party extensions? Note that we are switching to Clang as the compiler soon, so it’s good if you start making sure each extension actually works for you.
No, I bundled the game first, and tried to launch the game from Windows explorer. The game window started and disappeared immediately. I also tried to launch the game from a console window, the result is same and no message left in the console window.
It is my extension, which is used to detect the network reachability. Please see following error messages for more detail.
Hmm, It does behave that way if it doesn’t find any game data, but I’m assuming that you launched it from the bundle folder, so it really shouldn’t do that.
Regarding clang:
It is abi compatible with your previous libraries, so that shouldn’t pose a problem
It is building on a case sensitive OS, which means you need to spell your includes correctly.
After I fix the include file name problem, there is no error found in clang build process. But editor still failed to create Windows bundle, please see following screenshot for more detail.
Most unfortunate
In the next release on monday, the real error should be visible in the editor.
By looking in the server logs:
/usr/local/bin/lld-link: error: could not open Crypt32.Lib.lib: No such file or directory
/usr/local/bin/lld-link: error: unknown file type: x64\Release\sqlite3.obj
/usr/local/bin/lld-link: error: duplicate symbol: poly1305_init in tomcrypt.lib(poly1305.obj) and in libcrypto.lib(poly1305-x86_64.obj)
We’re changing from specifying libs without the “.lib” suffix" (we’ve updated @britzlsdefold-luasec to reflect this, so it should be “Crypt32” now (which will work for non-clang as well)
It tries to find use “-lsqlite3” but it seems it cannot find it? What is stored in the dsqlite3/lib/x86_64-win32 folder?
duplicate symbol: poly1305_init in tomcrypt.lib(poly1305.obj) and in libcrypto.lib(poly1305-x86_64.obj) seems you get a symbol collision. I’m not sure why you don’t get it with the non-clang build though. Perhaps some define is configured differently… Is this part of your extension or is it a third party extension?
I’d be happy to help if you’d be willing to share a repro case project with me
I fixed problem 1 and problem 3, but the second problem is still there:
/usr/local/bin/lld-link: error: unknown file type: x64\Release\sqlite3.obj
I don’t understand why this error happens, I stored sqlite3.lib in dsqlite3/lib/x86_64-win32 folder, why the linker tried to find sqlite3.obj? This extension can be built without any error if I turned off ‘use-clang’ option.
Basically, what I eventually did was go back to simple command line building, via the build.bat in the visual studio command prompt. By using that, the libraries was only 30% of their original sizes. And I never really understood what flags actually caused this to not work