Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works
Anything · Lazarus or Delphi
Random projectRandom project

zds-booster

🚀 Модифицированный движок ZDSimulator с расширенными возможностями

View on GitHub

Member rating

No ratings yet.

Sign in to rate this project.

README

ZDS-Booster — preview

ZDS-Booster

Кинематографичный движок и расширения для ZDSimulator

О проекте • Возможности • Установка • Управление • Конфиги • Поддержка


📖 О проекте

ZDS-Booster — модифицированный DGLEngine.dll для ZDSimulator, который добавляет в симулятор современный графический pipeline, свободную камеру, расширенную информацию в кабине, систему АЛС-ЕН и кучу других возможностей. Никаких внешних зависимостей — просто заменяешь DLL и сразу получаешь всё.

🔗 Базовый, не модифицированный движок (для сравнения и backup): maisvendoo/DGLEngine

✨ Возможности

🎬 Cinematic PostFX render-graph

Современный конвейер пост-эффектов поверх рендера ZDSimulator. Все эффекты переключаются на лету из меню F12 без рестарта.

Tier 1 — цветовой пост:

  • 🌟 HDR Bloom — мульти-мип pyramid (6 уровней) с soft-knee curve
  • 🎞️ ACES Filmic Tone Mapping — киношная кривая, экспозиция настраивается
  • 🔪 CAS Sharpening — резкость без halo (AMD FidelityFX)
  • 🎥 Vignette + Film Grain + Dithering
  • 🌈 Хроматическая аберрация (опционально)
  • 🔲 FXAA 3.11 — edge-aware антиалиасинг

Tier 2 — depth-aware:

  • 🕳️ SSAO — объёмные тени в кабине
  • 🌫️ Атмосферная дымка — depth-based fog
  • 🎯 Depth of Field — bokeh-blur с фокусом

🎥 Свободная камера (Freecam)

  • Тоггл: Alt+X
  • Полное управление: W A S D Space Shift
  • Настраиваемые скорости (base / fast / turn)
  • World-anchor режим: Alt+Shift+X — камера остаётся в мировой точке когда поезд едет

📊 Расширенная кабина (только ЧС7)

  • УСАВПП: время / дата / координаты / давление / ускорение
  • САУТ: цифровые скорость и лимиты
  • Ступени тяги (Уровень ступени)

🚦 Система АЛС-ЕН (только ЧС7)

  • Активация: 137 → Enter → частота → Enter
  • Двойная индикация: КЛУБ + БИЛ ПОМЕ
  • Автоматический анализ последовательности сигналов

🌅 Карусель неба

  • Авто-смена день/ночь по игровому времени
  • Поддержка зимы/лета с раздельными интервалами

🛠️ Установка

bash
# 1. Резервная копия оригинального DLL
copy DGLEngine.dll DGLEngine_backup.dll

# 2. Замени DGLEngine.dll на бустер-версию
# 3. Запусти игру — zdbooster.cfg создастся автоматически

💡 Все настройки в zdbooster.cfg сохраняются автоматически из меню F12. Файл можно редактировать руками для тонкого тюнинга.

🎮 Управление

Глобальные хоткеи

Действие Хоткей
Открыть/закрыть меню F12
Включить / выключить фрикам Alt+X
World-anchor для фрикама Alt+Shift+X
АЛС-ЕН (только ЧС7) 137 + Enter

В режиме фрикама

Действие Клавиша
Движение W A S D
Подъём / спуск Space / Ctrl
Ускорение (×N) Shift
Поворот камеры мышь

Гизмо для редактирования 3D-текстов / картинок (RA-3 кабина)

Режим Что делает
T (translate) стрелки X/Y/Z для перемещения
R (rotate) кольца для вращения по осям
S (scale) кубики для масштабирования
Shift при drag snap к шагу (5мм / 5° / 0.05×)
Ctrl при drag precision mode (×0.2)
Esc при drag отмена и откат к началу drag'а

📁 Структура файлов

pascal
ZDSimulator/
????????? DGLEngine.dll              # ??? ????????????
????????? zdbooster.cfg              # ?????????????? ???????????? (autosave ???? F12)
???
????????? data/<??????_??????>/<??????????>/
???   ????????? loc/                   # ?????????????????? ????????????
???   ???   ????????? kolpara_*.dmd
???   ???   ????????? klub_ls_*.dmd      # ??????-???? ??????????
???   ???   ????????? strelka_skor.dmd
???   ???   ????????? pisec*.dmd
???   ????????? raildriver/
???       ????????? booster.txt        # ??????????-?????????? (???????????? ????7)
???       ????????? custom_texts.cfg   # 3D-???????????? ?? ???????????? (per-loco)
???       ????????? custom_images.cfg  # 3D-???????????????? ?? ???????????? (per-loco)
???
????????? routes/<??????????????>/
    ????????? textures/
    ???   ????????? sky_sunriseDawn.bmp        # ???????????????????????????? ??????????????
    ???   ????????? sky_sunsetTwilight.bmp     # ???????????????? ??????????????
    ???   ????????? sky_sunriseDawn_snow.bmp   # ??? ????????
    ???   ????????? sky_sunsetTwilight_snow.bmp
    ????????? models/
        ????????? sky.dmd            # ?????????????????????? ?????????? ???????? (?????? ??????????????????)

⚙️ Конфигурация

📝 raildriver/booster.txt — отображение элементов в кабине ЧС7

ini
saut: 0       # Отображение данных САУТ
bgsd: 1       # Отображение монитора УСАВПП
stupen: 1    # Отображение уровня ступени

🎬 zdbooster.cfg — PostFX render-graph (autosave)

ini
# Master
postfx: 1     # 0/1 — весь PostFX-chain (если 0 → fallback на старый Bloom + FXAA)

# Tier 1 — цвет
fxaa: 1       # FXAA 3.11
bloom: 1      # HDR Bloom
tonemap: 1    # ACES Filmic
sharpen: 1    # CAS sharpening
vignette: 1   # виньетирование
grain: 1      # film grain

# Tier 2 — depth-aware
ssao: 1       # SSAO (требует depth)
fog: 0        # атмосферная дымка
dof: 0        # depth of field

Каждый toggle живой — переключаешь и сразу видишь результат. Master-toggle postfx: 0 отрубает весь chain и возвращает старый Bloom + FXAA fallback.

📍 custom_texts.cfg / custom_images.cfg — пользовательские 3D-объекты в кабине (per-loco)

Любой текст из KLUB-данных (скорость / давление / координаты / время / лимиты) или произвольную BMP/JPG/TGA картинку можно разместить 3D в кабине через DevEditor (F12 → Locomotive → «Open Full Dev Editor»).

Редактор поддерживает:

  • gizmo translate / rotate / scale
  • ввод чисел руками в ячейки
  • per-loco сохранение (своя конфигурация для каждого <тип_лок>/<номер>)
  • magenta-key прозрачность ($FF00FF) для картинок

⚠️ Важно: Расширенная информация в кабине и АЛС-ЕН (HookKLUB) работают только на ЧС7 (тип 822). Все остальные функции (фрикам, PostFX, новое небо, кастомные 3D-объекты, гизмо) работают на всех локомотивах.

🐛 Диагностика

Все сообщения движка пишутся в DGLEngine_Log.txt рядом с игрой.

HookKLUB не работает

В логе должно быть:

pascal
Hook activated for locomotive type 822 (CS7)

Если нет — используется не ЧС7, или айди локомотива не 822.

Фрикам не активируется

В zdbooster.cfg:

ini
freecam: 1

В логе:

pascal
Freecam initialized for locomotive type ...

Не загружаются кастомные модели

Проверь структуру:

pascal
data/chs7/<??????????>/loc/

В логе должно быть:

pascal
???????????? <????????????????> ??????????????????, ID: <??????????>

Не меняются текстуры карусели неба

Должны лежать в routes/<маршрут>/textures/:

  • sky_sunriseDawn.bmp
  • sky_sunsetTwilight.bmp
  • sky_sunriseDawn_snow.bmp (зима)
  • sky_sunsetTwilight_snow.bmp (зима)

И в zdbooster.cfg:

ini
newsky: 1

🔧 Техническая информация

Стек

  • IDE: CodeGear Delphi 2007 (dcc32.exe)
  • Язык: Object Pascal
  • API: OpenGL 1.x + GLSL для PostFX-шейдеров
  • Целевая платформа: Windows 10 / 11 (x86)

Методы патчинга

Техника Назначение
VirtualProtect + Move Изменение байтов в .text секции Launcher.exe
Перехват CALL Переписывание E8 rel32 на адрес собственной функции в DLL
Function pointer hooks Регистрация Pascal-процедур через RegProcedure (game callback)
FlushInstructionCache Гарантия видимости новых байт CPU после patching

Что делает бустер с памятью игры

  • Расширяет дальность видимости (gluPerspective(zFar) и fcomp distance constants)
  • Подавляет сброс камеры при ЛКМ-в-центре когда мышь над кабинными элементами
  • Подменяет вызов DrawSky на собственную карусель текстур
  • Хукает HookKLUB (только ЧС7) для отрисовки расширенной информации
  • Перехватывает SetFog / SetCutingPlanes для тюнинга визуала

⚠️ Все патчи делаются с VirtualProtect(PAGE_EXECUTE_READWRITE) и автоматически восстанавливаются если соответствующая опция отключена в меню. Для самозащиты — обязательно делай резервную копию DGLEngine.dll перед заменой.

📞 Поддержка

При возникновении проблем:

  1. 📋 Проверь DGLEngine_Log.txt
  2. ⚙️ Убедись что zdbooster.cfg содержит нужные тоггл-флаги
  3. 🚂 Для ЧС7 — проверь активацию HookKLUB в логе
  4. 🐛 Создай Issue с описанием и логом
  5. 💬 Или напиши в группу VK • RailDriver с приложенным DGLEngine_Log.txt

📜 Лицензия

GPL-2.0 — свободное ПО, любой может изучать, изменять и распространять. См. LICENSE и LICENSE-Russian.

ZDS-Booster — для энтузиастов железнодорожного моделирования

💜 Поддержать проект • 🚂 VK RailDriver • 🔧 Базовый DGLEngine

HookKLUB работает только на ЧС7 • Все остальное — на всех локомотивах • Made with ☕ in Pascal