I heard thereās a Native Extension build server that Defold provides. Iām trying to understand the big picture concept of NEās and building them.
Why is a build server needed? Is it always used, if you have a NE in your project?
For example, the FMOD extension by dapetcu21 - it is using bridge libraries that are pre-built in Visual Studio. Are the build servers not required in this case? But still used? Or not?
Are there multiple build steps to consider?
Iām lacking C++ experience but think itās probably good to know what happens when.
Native extensions allows you, the user, to extend the engine with extra functionality. It can be a sound library, or an ads library, or something that interacts with the OS.
If your project contains a native extension, or has a dependency on one, we will build a custom engine for you, on our cloud server.
I was initially compiling my own libs to remove the need to bundle the FMOD headers with the dependency (as I was not authorized to distribute them). Now that I am authorized to distribute FMOD, I decided to still keep this structure because the Lua bindings have a lot of glue code (with lots of templates and macros) that is slow to compile and Iād like not to have to make tea each time I build the game.
The build server is perfectly capable of compiling all of that stuff (weeeelll⦠eeeexcept on Windows, where I managed to make that particular version of the MSVC compiler crash), but Iām free to link against libraries I compiled on my own.
The build server is still needed to link the whole binary together with the Defold engine.
Also, the rationale behind having a build server is so that everybody can bundle for any platform no matter the OS theyāre bundling from and without having to set up a complicated cross-compiler toolchain.
Off the top of my head, there are a few bigger things that we wish to work on before we leave the alpha stage of the NE feature. The first ones are related to improving compiling speeds/latency for the builds. E.g., we want to cache code/extensions for some time, in order to reduce upload times, and also build times if an extension was already built by someone else (with correct version etc). And also, weād like to investigate speeding up the windows builds too, since theyāre currently quite long.
After that, I think improving the debug workflow should help a lot. At the same time, weāre also working on making sure we donāt get any unwanted downtime for the server, e.g. adding better alarms etc.
After that, I think itās more down to requested features, and perhaps we could have a similar system as the editor2-issues for NE issues as well. Iāll mention this to the team and see what they think of it.
Hi @Insality!
Sorry to see you had this build issue. The server was fine in general, but for some reason it choked on your project.
I tried building the appodeal demo but that seems kind of broken. Do you have a test case I can use to reproduce this issue? And can you still reproduce it?
Weāve located the issue and are working on how to best fix it.
On another note, the Appodeal libraries for iOS are ~400mb! (32+64 bit)
So, when I managed to build it on my machine, the executable went from 6mb (32+64bit) to 46mb!
Thatās almost 8x the size! (and yes, both sizes are stripped)