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)