Of course!
I got so excited about the release I had forgot to prepare my notes… ^^
Customizing the engine build
Apart from specifying your own new extensions, you can also enable/disable libraries via the "App Manifest"
This is a feature that has very little documentation yet (none?).
The basic idea is that it should work very closely to how the extension manifest works (and also our master config for the server).
And although this config design isn’t fully nailed down, we think it’s beneficial your you to get access to this alpha feature so you can
start playing with it (or release with it!).
Config
There are a few new keywords, in perticular: excludeLibs
, excludeSymbols
, excludeJars
which allow you to remove libraries and C++ symbols and also .jar files.
Using the libs
keyword, you can add engine libraries, and using symbols
you can add engine symbols
Future
Currently, there are not a whole lot of options for you to play with, and to be honest, we’d like to improve on this a lot.
It’s not extremely user friendly to modify a build like this. We’d like more.
What we’d like, is to categorize the engine into more extensions (or features), and allow you to select those features you actually need.
Or, perhaps we could detect this as well: removing components or script modules you don’t use.
How to
Below, you’ll find the three most asked for build variants.
Enabling these is straightforward, albeit a little hiddeen:
- Copy an app manifest file to your project (e.g. game_nophysics.appmanifest)
- Add a reference to it in your game.project file (edit it as text)
[native_extension]
app_manifest = /game_nophysics.appmanifest
- Build or bundle!
Example files
game_release.appmanifest :
# Release build
platforms:
x86_64-linux:
context:
excludeLibs: ["engine"]
libs: ["engine_release"]
x86_64-osx:
context:
excludeLibs: ["engine"]
libs: ["engine_release"]
js-web:
context:
excludeLibs: ["engine"]
libs: ["engine_release"]
x86-win32:
context:
excludeLibs: ["libengine"]
libs: ["libengine_release.lib"]
x86_64-win32:
context:
excludeLibs: ["libengine"]
libs: ["libengine_release.lib"]
armv7-android:
context:
excludeLibs: ["engine"]
libs: ["engine_release"]
armv7-ios:
context:
excludeLibs: ["engine"]
libs: ["engine_release"]
arm64-ios:
context:
excludeLibs: ["engine"]
libs: ["engine_release"]
game_headless.appmanifest :
# Release build
platforms:
x86_64-linux:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null"]
x86_64-osx:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null"]
js-web:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null"]
armv7-android:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null"]
armv7-ios:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null"]
arm64-ios:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null"]
x86-win32:
context:
excludeLibs: ["libgraphics", "libsound", "librecord", "libvpx", "libtremolo", "libhid"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["libgraphics_null.lib","libsound_null.lib", "librecord_null.lib", "libhid_null.lib"]
x86_64-win32:
context:
excludeLibs: ["libgraphics", "libsound", "librecord", "libvpx", "libtremolo", "libhid"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["libgraphics_null.lib","libsound_null.lib", "librecord_null.lib", "libhid_null.lib"]
game_nophysics.appmanifest :
# Release + No: Physics + Record + Profiler
platforms:
x86_64-osx:
context:
excludeLibs: ["BulletDynamics", "BulletCollision", "LinearMath", "Box2D", "physics", "record", "vpx", "engine", "profilerext"]
excludeSymbols: ["FacebookExt", "ProfilerExt"]
libs: ["engine_release", "physics_null", "record_null"]
x86_64-linux:
context:
excludeLibs: ["BulletDynamics", "BulletCollision", "LinearMath", "Box2D", "physics", "record", "vpx", "engine", "profilerext"]
excludeSymbols: ["FacebookExt", "ProfilerExt"]
libs: ["engine_release", "physics_null", "record_null"]
js-web:
context:
excludeLibs: ["BulletDynamics", "BulletCollision", "LinearMath", "Box2D", "physics", "record", "vpx", "engine", "profilerext"]
excludeSymbols: ["FacebookExt", "ProfilerExt"]
libs: ["engine_release", "physics_null", "record_null"]
x86-win32:
context:
excludeLibs: ["libBulletDynamics", "libBulletCollision", "libLinearMath", "libBox2D", "libphysics", "librecord", "libvpx", "libengine", "libprofilerext"]
excludeSymbols: ["FacebookExt", "ProfilerExt"]
libs: ["libengine_release.lib", "libphysics_null.lib", "librecord_null.lib"]
x86_64-win32:
context:
excludeLibs: ["libBulletDynamics", "libBulletCollision", "libLinearMath", "libBox2D", "libphysics", "librecord", "libvpx", "libengine", "libprofilerext"]
excludeSymbols: ["FacebookExt", "ProfilerExt"]
libs: ["libengine_release.lib", "libphysics_null.lib", "librecord_null.lib"]
armv7-android:
context:
excludeLibs: ["BulletDynamics", "BulletCollision", "LinearMath", "Box2D", "physics", "record", "vpx", "engine", "profilerext"]
excludeSymbols: ["FacebookExt", "ProfilerExt"]
libs: ["engine_release", "physics_null", "record_null"]
armv7-ios:
context:
excludeLibs: ["BulletDynamics", "BulletCollision", "LinearMath", "Box2D", "physics", "record", "vpx", "engine", "profilerext"]
excludeSymbols: ["FacebookExt", "ProfilerExt"]
libs: ["engine_release", "physics_null", "record_null"]
arm64-ios:
context:
excludeLibs: ["BulletDynamics", "BulletCollision", "LinearMath", "Box2D", "physics", "record", "vpx", "engine", "profilerext"]
excludeSymbols: ["FacebookExt", "ProfilerExt"]
libs: ["engine_release", "physics_null", "record_null"]
EDIT: Upon request, here is a headless release config as well.
game_headless_release.appmanifest:
# Release build
platforms:
x86_64-linux:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid", "engine"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null", "engine_release"]
x86_64-osx:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid", "engine"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null", "engine_release"]
js-web:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid", "engine"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null", "engine_release"]
armv7-android:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid", "engine"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null", "engine_release"]
armv7-ios:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid", "engine"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null", "engine_release"]
arm64-ios:
context:
excludeLibs: ["graphics", "sound", "record", "vpx", "tremolo", "hid", "engine"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["graphics_null","sound_null", "record_null", "hid_null", "engine_release"]
x86-win32:
context:
excludeLibs: ["libgraphics", "libsound", "librecord", "libvpx", "libtremolo", "libhid", "libengine"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["libgraphics_null.lib","libsound_null.lib", "librecord_null.lib", "libhid_null.lib", "libengine_release.lib"]
x86_64-win32:
context:
excludeLibs: ["libgraphics", "libsound", "librecord", "libvpx", "libtremolo", "libhid", "libengine"]
excludeSymbols: ["DefaultSoundDevice", "AudioDecoderWav", "AudioDecoderStbVorbis", "AudioDecoderTremolo"]
libs: ["libgraphics_null.lib","libsound_null.lib", "librecord_null.lib", "libhid_null.lib", "libengine_release.lib"]
I hope this will at least get you started! We will add proper docs soon!