Custom build steps / build tooling / build flags

How scriptable is Armory’s internal build process currently and could someone integrate it with existing build tools? Lubos’s light baking post made me realize that things like baking or building custom files (eg.: building a map descripton from external data) and integration into established command line workflows could be very useful for larger or more nuanced projects.

Another thing to consider is automatic testing with things like Travis CI, someone could make a little script that builds a cutom executable to run some CI tests. And while at that, what is the current state of telling the compiler what to do? Can I have debug and release builds? Can I set optimization levels? Etc.

There is also the question of interfacing with existing code. It might not always be cross-platform, but wrappers could be written. Eg.: I might want to integrate Lua scripting into my game, in that case I could specify how to link to the native C version for native builds and either fall back to a JS implementation or use Emscripten to link to it for browser builds.

The Blender integration should by scriptable out of the box by using operators through Python. To build the project, bpy.ops.arm.build() is used. More work has to be done here to easy / document the process.

Armory uses Kha for all the low-level stuff and build system. The build system, based on the target, generates standard Visual Studio / XCode / Android Studio / … project files. These can be opened like usual and all the compiler params can be adjusted, integrated debugger / profiler tools can be launched etc.

Armory and Iron GitHub repos have a primitive Travis CI setup up and running. Plan to expand that further. I remember having a talk with Robert (Kha maintainer), where he mentioned automated testing of the actual graphical / screen output. That would be another solid step forward.

About the Lua integration - still have to solve this for Python for native targets, will make sure to not tie the system to Python only but leave it a little more flexible.

I imagine more challenges can pop up there in the process, ready to solve that though. :slight_smile:

Edit: You may have meant Travis CI testing of actual Armory projects - that should be also doable in a similar manner to what Armory repo does.

1 Like