Модули X-Ray

Материал из Oxygen Engine
Версия от 21:35, 5 апреля 2019; Giperion (обсуждение | вклад) (Новая страница: «==Общее== Движок X-Ray состоит из нескольких модулей, некоторые из которых могут использова…»)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Общее

Движок X-Ray состоит из нескольких модулей, некоторые из которых могут использоваться отдельного от остальных. Каждый модуль отвечает за свою сферу деятельности или же реализует определенный интерфейс движка (пример xrRender_R2 и xrRender_R4 реализуют один и тот же интерфейс рендера, но первый использует DirectX 9, а другой DirectX 11). Модули бывают статическими и динамическими. Статические компилируются и связываются и сливаются в другие модули. Динамические образуют dll файл, которые загружаются по надобности. Модули делятся на четыре группы:

  1. Игровой
  2. Редактор
  3. Плагин
  4. Прочее

К каждому не 3rd-party модулю добавляется префикс xr (X-Ray). Игровые модули, это то, что непосредственно используется игрой или во время её. Модули редактора используются редактором или плагинами. Надо отметить, что модули редактора так же считаются модули компиляторов уровней (xrLC, xrAI). Плагин модули - модули которые подгружаются сторонними 3D редакторами или иными приложениями. Прочие модули это 3rd-party зависимости, утилиты (как например GitParser) и тесты (xrDebugger). Большинство модулей (кроме 3rd-party зависимостей и некоторых исключений) подключают в себя модуль xrCore. Модули редактора и плагинов могут использовать игровые модули.

Модули

Игровые

  • Core - Каркас движка. Здесь находятся базовые типы, и несколько важных подсистем движка. К ним относятся: файловая, отладочная, threadpool, xml, API рендера, память, математика, сжатие. Работа приложения начинается с инициализации xrCore.
  • Engine - Ядро движка. Является связующим звеном между всеми остальными модулями движка (в том числе и модулями редактора).
  • CDB - Collision DataBase - занимается хранением и загрузкой моделей коллизии у уровня и динамических объектов. Т.е. хранит форму объектов для движка физики, т.к. модель для отрисовки не тоже самое что модель для расчетов столкновений.
  • Physics - Здесь создается и рассчитывается вся физика, хотя модели коллизий хранятся отдельно. Модуль физики использует движок ODE (Open Dynamics Engine).
  • Scripts - Реализует работу скриптовой системы на основе языка LUA. Данный модуль объявлен устаревшим и вскоре будет вырезан.
  • Sound - Все что связано со звуком. Выводит, управляет и добавляет эффекты на звуковую дорожку. Некоторая часть менеджмента есть и в модуле Engine. Для своей работы использует OpenAL и XAudio.
  • UICore - User Interface (сокращенно - UI) элементы которые можно использовать для создания игрового элемента. Содержит как примитивные элементы - кнопка, текст, прямоугольник, ComboBox, ScrollBox; так и комплексные элементы - заготовка главного меню и меню опции, загрузочный экран.
  • Particles - Реализует и управляет работой системой частиц. Система частиц (партиклы) это эффекты огня, дыма, аномалии. Все то, что не является единой 3D моделью, а состоит из небольших частиц, которые рождаются, меняются в размере и в цвете, а затем умирают.
  • Render - модуль реализующий интерфейс рендера модуля Core. Именно здесь инициализируются и используются шейдеры и выполняются команды отрисовки. На текущий момент у нас есть два таких модуля: xrRender_R2 и xrRender_R4.

Отдельно ото всех стоит модуль Game поскольку частью движка он уже не является. Это собственно сама игра, которая и использует движок. На текущий момент в репозиторий движка лежит модуль xrGame от игры S.T.A.L.K.E.R. Call of Pripyat.