This page has been translated automatically.
Видеоуроки
Интерфейс
Основы
Продвинутый уровень
Подсказки и советы
Основы
Программирование на C#
Рендеринг
Профессиональный уровень (SIM)
Принципы работы
Свойства (properties)
Компонентная Система
Рендер
Режимы вывода изображения
Физика
Браузер SDK 2
Лицензирование и типы лицензий
Дополнения (Add-Ons)
Демонстрационные проекты
API Samples
Редактор UnigineEditor
Обзор интерфейса
Работа с ассетами
Контроль версий
Настройки и предпочтения
Работа с проектами
Настройка параметров ноды
Setting Up Materials
Настройка свойств
Освещение
Sandworm
Использование инструментов редактора для конкретных задач
Расширение функционала редактора
Встроенные объекты
Ноды (Nodes)
Объекты (Objects)
Эффекты
Декали
Источники света
Geodetics
World-ноды
Звуковые объекты
Объекты поиска пути
Player-ноды
Программирование
Настройка среды разработки
Примеры использования
C++
C#
UnigineScript
Унифицированный язык шейдеров UUSL (Unified UNIGINE Shader Language)
Плагины
Форматы файлов
Материалы и шейдеры
Rebuilding the Engine Tools
Интерфейс пользователя (GUI)
Двойная точность координат
API
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
Работа с контентом
Оптимизация контента
Материалы
Визуальный редактор материалов
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Учебные материалы
Внимание! Эта версия документация УСТАРЕЛА, поскольку относится к более ранней версии SDK! Пожалуйста, переключитесь на самую актуальную документацию для последней версии SDK.
Внимание! Эта версия документации описывает устаревшую версию SDK, которая больше не поддерживается! Пожалуйста, обновитесь до последней версии SDK.

Инициализация движка

This article describes in detail the steps taken by the UNIGINE engine when the Engine::init() function is called. For other steps and general information about execution sequence, see the Execution Sequence article.В этой статье подробно описаны шаги, выполняемые движком UNIGINE при вызове функции Engine::init(). Для других шагов и общей информации о последовательности выполнения см. статью Последовательность выполнения.

Initialization steps
Последовательность инициализации#

The engine initialization starts when the main executable application (64-bit version of the .exe file, debug or release one) loads the corresponding UNIGINE library (.dll or .so). From this point on, the following steps are performed:Инициализация движка начинается, когда основное исполняемое приложение (64-разрядная версия файла .exe, отладочная или релизная) загружает соответствующую библиотеку UNIGINE (.dll или .so). С этого момента выполняются следующие шаги:

  1. The UNIGINE memory allocator is initialized for faster and more optimal allocations compared to the default system allocator. In the engine code, it is set via the USE_MEMORY directive.Менеджер памяти UNIGINE (allocator) инициализируется для более быстрого и оптимального распределения по сравнению с системным аллокатором по умолчанию. В коде движка он устанавливается с помощью директивы USE_MEMORY.
  2. Command-line options are parsed, namely: options that set paths to the data folder, plugin directories, log and configuration files, and also the project name.Разбираются параметры командной строки, а именно: параметры, устанавливающие пути к папке data, каталогам плагинов , файлам журнала и конфигурации, а также название проекта .

    Примечание
    Command-line values override the default values and values specified in the configuration files.Значения командной строки переопределяют значения по умолчанию и значения, указанные в файлах конфигурации .
  3. Four (4) threads are created: a sound, a world, a render, and a file system thread.Создаются четыре (4) потока: звук, мир, рендеринг и поток файловой системы.
  4. A path to the folder where all application data will be saved by default: Устанавливается путь к папке, в которой по умолчанию будут сохранены все данные приложения:

    • If you pass a project name via the command line or on engine initialization, all data (such as log files, cache, and configuration files) are stored in the user's home directory as follows:В случае указания названия проекта через командную строку или при инициализации движка, все данные (такие как файлы журналов, кеш и файлы конфигурации) сохраняются в домашнем каталоге пользователя следующим образом:

      • On Windows, in the C:/Users/<username>/<project_name>/ folderВ Windows в папке C:/Users/<username>/<project_name>/
      • On Linux, in the /home/<username>/.<project_name>/ folderВ Linux в папке /home/<username>/.<project_name>/
    • Otherwise, data is stored in the application folder (<PROJECT_DIRECTORY>/bin/ with the binary executable file).В противном случае данные хранятся в папке приложения (<PROJECT_DIRECTORY>/bin/ с двоичным исполняемым файлом).
  5. A log file is created. If not specified in the command-line options, the default log file is placed in the application directory under the name log.txt.Создается файл журнала . Если не указано в параметрах командной строки, файл журнала по умолчанию помещается в каталог приложения под именем log.txt.
  6. Remaining command-line options are parsed (the ones that haven't been parsed previously). These options specify basic video settings, such as a graphics API to be used for rendering (DirectX or Vulkan; also you can disable the graphics API), size of the application window, and so on.Анализируются оставшиеся аргументы командной строки (те, которые не были проанализированы ранее ). Эти аргументы определяют основные параметры видео, такие как графический API, который будет использоваться для рендеринга (DirectX или Vulkan; также вы можете отключить графический API), размер окна приложения и т.д.

    You can also pass any external #define directives and console variables via the command line. Вы также можете передать любые внешние директивы #define и консольные переменные через командную строку.

    Примечание
    Command-line values override the default values and values specified in the configuration files.Значения командной строки переопределяют значения по умолчанию и значения, указанные в файлы конфигурации .
  7. A path to the project *.cache files is set. Usually cache files include compiled shaders, system and Editor Logic.Устанавливается путь к *.cache файлам проекта. Обычно файлы кеша включают скомпилированные шейдеры, а также логику системы и редактора.
  8. External plugin libraries specified in the -extern_plugin command line option and plugin libraries stored in the plugin directories specified in the -plugin_path option are loaded.Загружаются библиотеки внешних плагинов, указанные в параметре командной строки -extern_plugin, и библиотеки плагинов, хранящиеся в каталогах плагинов, указанных в параметре -plugin_path.

    Примечание
    A custom plugin library can be loaded at any moment of UNIGINE run time.Пользовательская библиотека плагинов может быть загружена в любой момент времени работы UNIGINE.
  9. The File System is initialized. If project files are packed into UNG or ZIP archives protected by a password, the engine checks if the password coincides with the password set for the binary file (if any) and loads these archives.Инициализация файловой системы. Если файлы проекта упакованы в формат UNG или ZIP архивы защищенный паролем, движок проверяет, совпадает ли пароль с паролем, установленным для двоичного файла (если есть), и загружает эти архивы.
  10. The dedicated asset management subsystem of the Engine's file system is initialized and performs scanning for all run-time files.Инициализируется подсистема управления ассетами файловой системы движка и выполняет сканирование всех runtime-файлов .
  11. Render and sound managers that will automatically organize and handle rendering and sounds are initialized.Инициализируются менеджеры рендеринга и звука, которые автоматически организуют и обрабатывают рендеринг и звуки.
  12. The Boot screen is shown based on the default.boot configuration file.Отображается Экран загрузки в соответствии с файлом конфигурации default.boot.
  13. If the shaders_preload console variable is enabled, shaders for all loaded materials in the application are compiled and cached.В случае если консольная переменная shaders_preload включена, шейдеры для всех загруженных материалов в приложении компилируются и кэшируются.
  14. The application window is created based on the specified settings.На основе заданных настроек создается окно приложения.
  15. All engine subsystems (such as visualizer, physics, sound, render, pathfinding subsystems, and so on) are created.Создаются все подсистемы движка (такие как visualizer, физика, звук, рендеринг, подсистемы поиска пути и т.д.) .
  16. Sound and file system threads are run.Запускаются потоки звуковой и файловой системы.
  17. External definitions passed in the -extern_define command line option are set.Устанавливаются внешние дефайны, переданные в параметре командной строки -extern_define.
  18. The init() functions of all loaded plugins are called.Вызываются функции init() всех загруженных плагинов.
  19. Console commands from the command line are queued for further execution.Консольные команды из командной строки ставятся в очередь для дальнейшего выполнения.
  20. The Splash screen is shown if it is enabled.Отображается экран заставки (Splash Screen), если он включен.
  21. The System Logic is loaded and started. Basically, the System Logic performs housekeeping necessary to start and keep the UNIGINE-based application going. It stays loaded during the whole UNIGINE run time.Загружается и запускается Системная логика. По сути, системная логика выполняет служебные действия, необходимые для запуска и поддержания работы приложения на основе UNIGINE. Он остается загруженным в течение всего времени работы UNIGINE.

    The default system script, when initialized, does the following:Системный скрипт по умолчанию при инициализации выполняет следующие действия:

    • Loads a localization file.Загружает файл локализации.
    • Initializes the main menu.Инициализирует главное меню.
    • Sets the Loading screen, if necessary. It is better to set the loading screen before loading a world. In this case, displaying a loading screen will give the engine time to load resources and compile shaders. By default, a standard UNIGINE screen is shown. Устанавливает Экран загрузки (Loading Screen) , если необходимо. Экран загрузки лучше установить перед загрузкой мира . В этом случае отображение экрана загрузки даст движку время для загрузки ресурсов и компиляции шейдеров. По умолчанию отображается стандартный экран UNIGINE.
    Примечание
    You can replace the default system script located in the data/core/unigine.usc with a custom one. In this script, you can set your own loading screen for the project, specify custom modules to be loaded, and so on. For large projects, it makes sense to specify the world you want to load right in your system script.Вы можете заменить системный скрипт по умолчанию, расположенный в data/core/unigine.usc, на собственный. В этом скрипте вы можете установить собственный экран загрузки для проекта, указать настраиваемые модули для загрузки и т.д. Для больших проектов имеет смысл указать мир, который вы хотите загрузить, прямо в своем системном скрипте.

    If you use a custom system script, it performs the logic you implemented.Если вы используете собственный системный скрипт, он выполняет реализованную вами логику.

  22. Console commands from the command line that were queued previously are run.Выполняются консольные команды из командной строки, которые ранее были поставлены в очередь.

    Примечание
    If you want to run console commands from the system script, they are run after the queued console commands.Если вы хотите запускать консольные команды из системного скрипта, они запускаются после поставленных в очередь консольных команд.

If the initialization is completed successfully, a non-zero value is returned, and the execution process continues.Если инициализация завершена успешно, возвращается ненулевое значение, и процесс выполнения продолжается.

Последнее обновление: 16.08.2024
Build: ()