Структура каталогов игры на диске
После установки симулятора стандартным способом, в зависимости от того пути, что был указан при установке, на диске возникает каталог RRS со следующей структурой
- bin — исполняемые файлы и библиотеки движка игры;
- cfg — каталог, содержащий конфигурационные файлы;
- data — каталог с ресурсами игры: здесь хранятся модели, текстуры, звуковые файлы и конфиги анимаций;
- docs — документация к симулятору;
- graph — сервисный каталог для хранения данных регистратора параметров движения
- lib — каталог подключаемых модулей движка игры;
- modules — каталог, содержащий модули подвижного состава и оборудования;
- plugin — каталог плагинов, расширяющих функционал движка симулятора;
- routes — каталог с маршрутами;
- screenshots — каталог для хранения скриншотов, создаваемых игрой по нажатию F12;
- sdk — каталог, содержащий заголовочные файлы, необходимые для разработки модулей подвижного состава и оборудования;
- themes — темы оформления интерфейса лаунчера.
Таков краткий перечень каталогов, теперь же перейдем к более подробному описанию каждого из них.
Каталог bin
На первом этапе достаточно иметь общее представление о содержимом этого каталога
Он содержит следующие исполняемые файлы:
- launcher.exe — интерфейс настройки и запуска симулятора («лаунчер»);
- simulator.exe — исполняемый модуль физического движка игры;
- viewer.exe — исполняемый модуль графической подсистемы;
- pathconv.exe — утилита для обработки маршрута ZDSimulator, выполняющая транслитерацию путей к файлам моделей и текстур, а так же приводящая эти пути к платформонезависимому виду.
- profconv.exe — утилита для генерации дополнительных файлов, необходимых для корректной работы симулятора с маршрутами ZDSimulator
Кроме того, каталог содержит массу DLL-библиотек, относящихся как к динамическому, так и графическому движку игры. Содержимое этого каталога не меняется разработчиком, поэтому назначение каждого из файлов мы пока описывать не будем.
Каталог cfg
Крайне важный каталог, через который происходит настройка моделей подвижных единиц и собственно встраивание их в игру.
Он содержит базовые конфигурационные файлы для самого симулятора
- brakepipe.xml — настройки математической модели тормозной магистрали;
- init-data.xml — начальные параметры, задающие расположение поезда по умолчанию и настройки физического движка;
- launcher.xml — настройки лаунчера
- settings.xml — настройки графической подсистемы
- solver.xml — настройки решателя дифференциальных уравнений движения поезда.
Кроме того, здесь имеется ряд подкаталогов, для хранения специфических конфигов
- couplings — конфигурационные файлы моделей сцепных приборов (поглощающих аппаратов автосцепки)
- devices — каталог конфигурационных файлов разнообразного стандартного оборудования, устанавливаемого на подвижной состав: тормозные краны, воздухораспределители, электрические машины и аппараты;
- main-resist — файлы, задающие формулу основного сопротивления движению, согласно Правил Тяговых Расчетов (ПТР), для разных типов подвижного состава;
- trains — каталог конфигурационных файлов поездов, доступных к запуску из меню лаунчера;
- vehicles — каталог конфигурационных файлов модулей подвижных единиц:
Мы очень подробно поговорим о каталога trains/ и vehicles/, когда будем писать пример собственного локомотива. Пока ограничимся обзорным рассмотрением.
Каталог data
Следующий чертовски важный каталог. Он содержит ресурсы игры, относящиеся к подвижному составу — конфиги анимаций, 3D-модели и звуки.
Каждый из этих каталогов содержит папки с именами, совпадающим с именем конфигурационного файла модели единицы подвижного состава в каталоге vehicles/. Каждый каталог соответствует конкретной модели ПС. Например, каталог анимации выглядит в стандартной поставке симулятора так
Папка vl60pk-1543 соответствует электровозу ВЛ60пк-1543 и содержит все xml-конфиги необходимые для анимации элементов электровоза и кабины.
Как видно тут довольно много файлов, каждый из которых настраивает определенную анимацию: подъем токоприемников, вращение колес, поворот рукояток и тублеров в кабине и т.п.
Папка models/ имеет похожую структуру, и, на примере ВЛ60пк имеет следующее содержимое
Здесь содержаться две модели в формате OSGT: модель самого электровоза и модель кабины, а так же папки с текстурами к ним. Папок с текстурами может быть сколько угодно, что дает возможность «перекрашивать» модель и кабину, просто указав путь к текстурам в конфиге подвижной единицы.
Каталог sounds/ содержит сами звуки (семплы) в формате WAV и конфигурационный файл sounds.xml, в котором прописывают настройки воспроизведения каждого семпла.
Каталог lib
Пока он содержит одну единственную DLL — файл rkf5.dll. Это подключаемая динамически библиотека, предоставляющая решатель систем дифференциальных уравнений. Симулятор непрерывно решает систему дифференциальных уравнений движения поезда, используя ресурсы этого решателя.
В настоящий момент используется метод Рунге-Кутты-Фельберга 5-6 порядков (откуда и название rkf5), который дает хорошее быстродействие при достаточной устойчивости решения задачи продольной динамики поезда.
Но никто не говорит, что это единственный решатель, который можно использовать. Разработчик может написать свой собственный решатель и настроить симулятор для работы с ним. Вдруг у вас получится лучше чем у нас?
Каталог modules
Место, где хранятся DLL-модули подвижного состава и оборудования.
DLL лежащие к корне этого каталога — модули стандартного оборудования, которое может быть установлено на любую модель подвижного состава. Например krm395.dll — модуль поездного крана машиниста усл. №395, широко применяемый на подвижном составе колеи 1520 мм. Такое решение дает ряд преимуществ:
- не нужно разрабатывать модель крана самостоятельно (не, ну только если очень хочется) — можно взять готовый модуль, установить его на разрабатываемый локомотив и готово!
- такая унификация дает возможность изменить логику работы крана машиниста без переделки всех дополнений
Пока такого оборудования мало, но в будущем список будет расширяться. Опять таки, модули оборудования могут создаваться сторонними разработчиками, для чего предусмотрен соответствующий API.
Модули подвижных единиц располагаются в соответствующих каталогах, например папка vl60 содержит DLL-модуль данного электровоза, а папка passcar — модуль пассажирского вагона.
Каталог plugins
Функциональность симулятора может расширятся, за счет разработки плагинов, который хранятся в данном каталоге.
Например, симулятор можно научить понимать интересующий вас формат маршрутов. Сейчас RRS использует маршруты от другого симулятора — ZDSimulator, для загрузки которых применяется плагин zds-route-loader.dll. Однако, теоретически можно написать плагин, обрабатывающий другой формат маршрутов и симулятор будет работать с этими маршрутами. Так мы и поступим, когда будет разработан собственный формат маршрутов RRS.
Кроме того, в симуляторе планируется ввод возможности реализовывать собственные аппаратные пульты. Для адаптации к различным протоколам взаимодействия с этими пультами так же может быть написан соответствующий плагин. Плагин modbus.dll будет предназначен для работы с пультами по протоколу шины Modbus.
Каталог routes
Содержит маршруты. Под маршрутом понимается совокупность трехмерных моделей, текстур и конфигурационных файлов, позволяющих осуществить трехмерную визуализацию интересующего участка железной дороги. Кроме того, маршрут содержит информацию о профиле пути на конкретном участке железной дороги, которая используется при расчете физики движения поезда по данному участку.
В каталоге routes располагаются папки с маршрутами
Каждая папка именуется латиницей без пробелов, для обеспечения возможности кроссплатформенной работы симулятора.
Каталог sdk
Вещь, жизненно необходимая разработчику. В нем располагаются заголовочные файлы к основным библиотекам, используемым модулями подвижного состава и оборудования.
В данных заголовках прописаны интерфейсы ко всем классам и функциям, через которые симулятор взаимодействует с модулями подвижного состава и оборудования. При написании модуля эти файлы подключаются к исходному коду модуля.
Таким образом, мы кратко пробежались по структуре каталогов игры и их назначению. Впереди мы более глубоко познакомимся с разными нюансами создания дополнений, но а пока ограничимся таким обзорным экскурсом.