The app.enml
defines default application properties for the game. It must be in the project root directory. All properties set in the default
scope are used on all platforms but these values may be overwritten by platform-specific ones.
Example:
default { title = Ethanon Engine; // window title richLighting = true; } windows { width = 640; height = 480; windowed = true; vsync = true; } android { // it will overwrite the default 'richLighting' property richLighting = false; // disables lighting when running on Android } ios { fixedHeight = 480; // forces backbuffer height to 480p on iOS }
Some other features of the app.enml
file are described below.
In order to force the window size to the current best back-buffer resolution possible, which is the real resolution of the main display, ideal for fullscreen mode, width
and height
attributes must be set to best
:
default { width = best; height = best; windowed = false; }
Notice that width
and height
attributes are always treated as best
on non-desktops devices.
Rendering many large dynamic lights or even too many transparent entities may become costly for some platforms. Sometimes it is good to avoid that extra cost by rendering the entire scene into a smaller back-buffer that will fill the entire screen when the rendering is finished. This can be enabled by setting fixedHeight
or fixedWidth
parameters:
default { width = 1024; height = 768; // window size is 1024x768, but the actual // back-buffer will be 640x480 fixedHeight = 480; fixedWidth = auto; windowed = true; vsync = true; }
Custom sized back-buffers must keep the same aspect ration as the current screen size, thus only fixedWidth
or fixedHeight
can be set. If fixedHeight > 0
, fixedWidth
must be auto and vice versa.
The developer may optionally define custom words which may be processed by the engine in pre-compilation time. Example:
// compiles the code inside if/endif statements when the DESKTOP word is defined #if ONLINE_LEADERBOARD_SUPPORTED print("This platform supports on-line leader-boards!"); #endif #if GAME_CENTER print("The score leader-board in this platform is provided by Apple's Game Center"); #endif
By default, Ethanon Engine defines the following words:
Platform / condition | Words defined |
Windows | WINDOWS , DESKTOP |
Mac OS X | MACOSX , DESKTOP |
iOS | APPLE_IOS , MOBILE , HANDHELD |
Android | ANDROID , MOBILE , HANDHELD |
Application is running from SciTE or Sublime | TESTING |
Ethanon is running on debug mode | DEBUG |
Additional custom words are defined by the definedWords
parameter in a comma-separated string. Words defined in the default
enml-entity are merged with the ones defined in the platform specific ones:
default { title = Extremely awesome game; width = 1280; height = 720; definedWords = DISPLAY_FPS_RATE; } windows { definedWords = ENABLE_DEBUGGING_CHEATS; }
macosx { definedWords = ENABLE_DEBUGGING_CHEATS; }
ios { definedWords = ONLINE_LEADERBOARD_SUPPORTED,GAME_CENTER,ENABLE_BANNER_ADS,ENABLE_VIDEO_ADS; }
android { definedWords = ONLINE_LEADERBOARD_SUPPORTED,OPEN_FEINT,ENABLE_BANNER_ADS; }
With custom words, developers can easily handle differences between platforms and switch them at will.