Компоненты симулятора
Симулятор представляет собой не одну программу, а комплекс взаимосвязанных программ. В штатном режиме запускается три процесса:
- launcher — пользовательский интерфейс для настройки поездки и запуска игры
- simulator — физический движок игры, выполняющий моделирование движения подвижного состава
- viewer — графическая подсистема, реализующая функции трехмерной визуализации
За непосредственное взаимодействие с игроком отвечает viewer — он обрабатывает пользовательский ввод с клавиатуры и мыши и отображает на экране поезд и окружающую его обстановку. Viewer является «лицом» игры, но не самым важным её компонентом.
Процесс simulator несет на себе основную нагрузку, выполняя такие функции как: формирование поезда, в соответствии с выбранной пользователем конфигурацией; загрузку и инициализацию модулей подвижных единиц; математическое моделирование движения поезда и работу его систем в реальном масштабе времени; взаимодействие с графической подсистемой — прием от неё управляющих команд и передачу данных о фактическом положении поезда на участке. Именно в этом процессе крутится код модулей DLL подвижного состава, который нам предстоит научится писать.
Обмен информацией между simulator и viewer осуществляется за счет стандартных средств межпроцессного взаимодействия (IPC). В текущей версии симулятора используется общая память (shared memory), в будущих версиях наиболее вероятен переход к взаимодействию через механизм сокетов. На данном этапе можно абстрагироваться от всех этих механизмов — вся необходимая информация распределяется между компонентами симулятора без участия разработчика модулей подвижного состава. Пока важно знать следующее:
- процесс simulator и используемые им библиотеки — это физический движок игры, технологически именуемый TrainEngine 2. Все модули подвижного состава и оборудования работают в контексте этого процесса;
- процесс viewer — графическая подсистема игры, работающая на базе открытого графического движка OpenSceneGraph;