Configuration Files
All global engine-related and project-related settings are grouped and stored in separate configuration files. Each configuration file is an XML file that stores settings of a certain type. The set of configuration files is as follows:
- *.boot - this is the main startup configuration file.
- *.config - this file stores all custom application settings.
- *.controls - this file stores controls configuration.
- *.user - this file stores various personal settings, such as helpers (wireframe, profiler, etc.).
The settings from these files are read by the Engine on the application start-up and used for engine initialization.
By default, the set of default configuration files is created automatically on project creation in the project's data/configs folder available as a separate configs section of the Asset Browser.
The *.boot configuration file stores the information about location of other configuration files for convenience. The path to the startup configuration file is set by using the -boot_config command-line option on the application start-up.
The paths to the configuration files can be both absolute or relative. An absolute path is always used as is. If a relative path is specified, searching of the configuration file is performed as follows:
-
If the -project_name CLI option is set, the project folder in the User profile will be checked first for the configuration file. At that, only the name of the specified file will be checked. For example, if you run the application as follows: The engine will check the my_config.boot file in the following folder:
bin/main_x64d.exe -project_name "my_project" -boot_config "configs/my_config.boot"
- On Windows, C:/Users/<username>/my_project/data/configs/
- On Linux, /home/<username>/.my_project/data/configs/
- By default, the path to the configuration file will be checked relative to the -data_path.
- If the configuration file isn't found, the engine will try to create a default file relative to the data folder or in the project folder specified in the -project_name.
Startup Configuration#
This is the main configuration file containing the following Engine startup parameters:
- Paths to GUI skin, log-file, system and UnigineEditor cache files;
- Boot and Splash screen settings;
- Extern defines;
- Console commands;
- Startup command-line parameters and a group of world manager settings;
- Information about location of other configuration files.
Expand the following spoiler to see an example of startup configuration file:
<?xml version="1.0" encoding="utf-8"?>
<boot version="2.17" autosave="0">
<gui_path>core/gui/</gui_path>
<engine_log>log.txt</engine_log>
<system_script>core/unigine.usc</system_script>
<cache_path/>
<system_cache>unigine.cache</system_cache>
<editor_cache>editor.cache</editor_cache>
<video_app>auto</video_app>
<sound_app>auto</sound_app>
<extern_define/>
<console_command/>
<window_title>Project Name</window_title>
<plugin_paths>
<path>plugins/</path>
<path>../extra/plugins/</path>
</plugin_paths>
<extern_plugins>
<plugin>OpenVR</plugin>
<plugin>AdditionalPlugin</plugin>
</extern_plugins>
<console>
<async_log_mode>0</async_log_mode>
<async_log_priority>0</async_log_priority>
<background_update>0</background_update>
<config>configs/default.config</config>
<console_font>core/gui/console.ttf</console_font>
<console_size>16</console_size>
<controls_config>configs/default.controls</controls_config>
<filesystem_mmap>1</filesystem_mmap>
<gl_async_buffer>128</gl_async_buffer>
<gl_async_buffer_indices>16</gl_async_buffer_indices>
<gl_async_buffer_synchronization>1</gl_async_buffer_synchronization>
<gl_render_skip_errors>0</gl_render_skip_errors>
<gl_use_debug_info>0</gl_use_debug_info>
<process_priority>1</process_priority>
<profiler_font>core/gui/font.ttf</profiler_font>
<profiler_size>13</profiler_size>
<splash_screen>0</splash_screen>
<starting_world>my_world</starting_world>
<textures_cache_preload>1</textures_cache_preload>
<user_config>configs/default.user</user_config>
<video_adapter>0</video_adapter>
<video_debug>0</video_debug>
<video_debug_shaders>0</video_debug_shaders>
<main_window_fullscreen>0</main_window_fullscreen>
<main_window_size>1600 900</main_window_size>
<main_window_resizable>1</main_window_resizable>
<main_window_auto_restart>1</main_window_auto_restart>
<main_window_borders>1</main_window_borders>
<main_window_fullscreen_display>0</main_window_fullscreen_display>
<main_window_fullscreen_display_mode>0</main_window_fullscreen_display_mode>
<world_manager_images_memory>128</world_manager_images_memory>
<world_manager_meshes_memory>128</world_manager_meshes_memory>
</console>
<screen>
<width>570</width>
<height>400</height>
<background_color>0, 0, 0, 0</background_color>
<transform>0.5, 0.33, 0.5, 0.5</transform>
<threshold>16</threshold>
<texture>textures/boot_screen.png</texture>
<font>fonts/boot_screen_font.ttf</font>
<text>
<![CDATA[
<p align="center">
<font color="#606060" size="16">
<xy y="%100" dy="-20"/>Project Name
</font>
</p>
]]>
</text>
<messages>
<engine_init>Custom message for engine initialization.</engine_init>
<file_system_init>Custom message for file system initialization.</file_system_init>
<materials_init>Custom message for materials initialization.</materials_init>
<properties_init>Custom message for properties initialization.</properties_init>
<plugins_init>Custom message for plugins initialization.</plugins_init>
<shaders_compilation>Custom message for shaders compilation.</shaders_compilation>
</messages>
</screen>
</boot>
By default, the configs/default.boot file is used. To run the application with another boot configuration file, specify the path to it using the -boot_config command-line option.
The boot configuration file has the following structure:
<boot version="2.12" autosave="0">
<cli_option>value</cli_option>
...
<console>
<console_command>value</console_command>
...
</console>
<screen>
...
</screen>
</boot>
The application start-up options can be set via both the command-line and the boot configuration file. The CLI options specified on the application start-up always take precedence over the ones stored in the configuration file.
The configuration file contains the following parameters:
- The autosave attribute enables automatic saving of start-up configuration to the file on loading, closing, and saving the world, as well as on the Engine shutdown.
- A set of start-up CLI options:
- window_title - title to be set for the application window.
-
plugin_paths - a list of paths to directories that contain plugins.
<plugin_paths> <path>plugins/</path> <path>../extra/plugins/</path> </plugin_paths>
All multiple plugin paths (plugin_path) will be ignored, if at least one -plugin_path is specified in the command-line. -
extern_plugins - a list of plugin libraries to be loaded.
<extern_plugins> <plugin>FBXImporter</plugin> <plugin>CADImporter</plugin> <plugin>OpenVR</plugin> </extern_plugins>
-
The console section contains the console variables to be defined at the engine start-up:
- The screen section lists the boot screen parameters.
To read values from the configuration file and write them back, use functionality of the BootConfig class.
Application Configuration#
This file stores all custom application settings. By default, the configs/default.config file is used. To use another configuration file, specify the path to it in the boot configuration file.
The configuration file has the following format:
<config version="2.12" autosave="1">
<item name="option_name" type="option_type">option_value</item>
...
<item name="option_name" type="option_type">option_value</item>
</config>
Expand the following spoiler to see an example of application configuration file:
<?xml version="1.0" encoding="utf-8"?>
<config version="2.13" autosave="1">
<player_avatar>soldier</player_avatar>
<skip_curscenes>1</skip_curscenes>
<bulletshell_lifetime>100</bulletshell_lifetime>
</config>
The autosave attribute enables automatic saving of configuration settings to the file on loading, closing, and saving the world, as well as on the Engine shutdown.
Each item corresponds to one setting:
- option_name - a name of the engine-related and project-related setting. It is the same as a name of the corresponding console variable.
- option_type - a type of the setting: bool, int, float, string.
To read values from the configuration file and write them back, use functionality of the Config class. Use the appropriate methods depending on the type of the target item.
Controls Configuration#
This file stores keyboard control keys and settings defining the mouse behavior. These settings are configured via the UnigineEditor (Windows -> Settings -> Runtime -> Controls).
By default, the configs/default.controls file is used. To use another configuration file, specify the path to it in the boot configuration file.
The controls configuration file has the following format:
<controls version="2.12" autosave="1">
<controls_always_run>1</controls_always_run>
<controls_mouse_handle>0</controls_mouse_handle>
<controls_mouse_inverse>0</controls_mouse_inverse>
<controls_mouse_sensitivity>1</controls_mouse_sensitivity>
<keys>
<119/>
...
</keys>
<buttons>
<0/>
...
</buttons>
</controls>
Expand the following spoiler to see an example of controls configuration file:
<?xml version="1.0" encoding="utf-8"?>
<controls version="2.13" autosave="1">
<controls_always_run>0</controls_always_run>
<controls_mouse_handle>0</controls_mouse_handle>
<controls_mouse_inverse>0</controls_mouse_inverse>
<controls_mouse_sensitivity>1</controls_mouse_sensitivity>
<keys>
<119/>
<115/>
<97/>
<100/>
<268/>
<269/>
<266/>
<267/>
<113/>
<101/>
<270/>
<259/>
<0/>
<281/>
<282/>
<288/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
</keys>
<buttons>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<1/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
<0/>
</buttons>
</controls>
The parameters are:
- The autosave attribute enables automatic saving of controls configuration to the file on loading, closing, and saving the world, as well as on the Engine shutdown.
- controls_always_run - sets the Always Run option.
- controls_mouse_handle - sets the Mouse Handle option.
- controls_mouse_inverse - sets the Invert Mouse option.
- controls_mouse_sensitivity - sets the Mouse Speed option.
- keys - a set of key bindings to the STATE_* states of the Control class.
- buttons - a set of mouse button bindings to the STATE_* states of the Control class.
To manage the controls configuration, use functionality of the ControlsApp class or classes derived from the Controls class.
User Configuration#
This file stores various personal settings, such as helpers (wireframe, profiler, etc.). By default, the configs/default.user file is used. To use another configuration file, specify the path to it in the boot configuration file.
The user configuration file has the following format:
<?xml version="1.0" encoding="utf-8"?>
<config version="2.14.1.0" autosave="1">
<parameter>value</parameter>
...
</user>
Expand the following spoiler to see an example of user configuration file:
<?xml version="1.0" encoding="utf-8"?>
<user version="2.14.1.0" autosave="1">
<console_height>75</console_height>
<console_key>96</console_key>
<console_onscreen>1</console_onscreen>
<console_onscreen_font_size>14</console_onscreen_font_size>
<console_onscreen_height>20</console_onscreen_height>
<console_onscreen_time>2</console_onscreen_time>
<console_wrapping>0</console_wrapping>
<microprofile_dump_frames>500</microprofile_dump_frames>
<microprofile_enabled>1</microprofile_enabled>
<microprofile_webserver_frames>200</microprofile_webserver_frames>
<physics_show_collision_surfaces>0</physics_show_collision_surfaces>
<physics_show_contacts>0</physics_show_contacts>
<physics_show_joints>0</physics_show_joints>
<physics_show_shapes>0</physics_show_shapes>
<render_show_alpha_test>0</render_show_alpha_test>
<render_show_ambient>0</render_show_ambient>
<render_show_cascades>0</render_show_cascades>
<render_show_decals>0</render_show_decals>
<render_show_geodetic_pivot>0</render_show_geodetic_pivot>
<render_show_landscape_albedo>0</render_show_landscape_albedo>
<render_show_landscape_mask>0</render_show_landscape_mask>
<render_show_landscape_terrain_vt_streaming>0</render_show_landscape_terrain_vt_streaming>
<render_show_lightmap_checker>0</render_show_lightmap_checker>
<render_show_occluder>0</render_show_occluder>
<render_show_queries>0</render_show_queries>
<render_show_scissors>0</render_show_scissors>
<render_show_textures>0</render_show_textures>
<render_show_textures_number>7</render_show_textures_number>
<render_show_textures_offset>0</render_show_textures_offset>
<render_show_transparent>0</render_show_transparent>
<render_show_triangles>0</render_show_triangles>
<render_show_voxel_probe_visualizer>0</render_show_voxel_probe_visualizer>
<show_fps>0</show_fps>
<show_profiler>0</show_profiler>
<show_profiler_charts>1</show_profiler_charts>
<show_visualizer>0</show_visualizer>
<screenshot_extension>2</screenshot_extension>
<visualizer_fix_flicker>1</visualizer_fix_flicker>
<world_handler_3d>0</world_handler_3d>
<world_handler_distance>500</world_handler_distance>
<world_show_handler>3 4 56 57 58 59 60 61 62 63 48 49 50 51 52</world_show_handler>
<world_show_spatial>0</world_show_spatial>
<world_show_visualizer>55 56 57 58</world_show_visualizer>
<console_bindings/>
</user>
The autosave attribute enables automatic saving of user configuration settings to the file on loading, closing, and saving the world, as well as on the Engine shutdown.
The following console variables are defined in the user configuration file:
To control the user configuration file, use functionality of the UserConfig class.