DARK ENGINE VIEWER
Программа-просмотрщик ресурсов движка Dark Engine.
Не требует установки и предварительной настройки. Может размещаться в любом удобном месте системы. Поддерживает OpenGL 3.2 (есть режим совместимости с OpenGL 2.1), а значит, может работать даже на старых компьютерах, на системах Windows и Linux.


ГДЕ СКАЧАТЬ
Ссылки на скачивание всегда будут доступны:
- на моём сайте: forcesw.com
- на форуме Dark Fate: https://darkfate.org/forum/index.php?topic=6903.0
- на форуме TTLG: https://www.ttlg.com/forums/showthread.php?t=150408


КАК ЗАПУСКАТЬ
Простой способ: запустить из папки, в которую была распакована программа, и при помощи интерфейса открыть каталог с нужным файлом модели или миссии на диске.

Продвинутый способ: программа принимает на вход путь открываемого ресурса, будь то объект или миссия. Таким образом открыть нужный файл можно четырьмя способами:
- из командной строки, указав путь к открываемому файлу, например так:
dark_engine_viewer_x64.exe "D:\Games\Thief 2 - The Metal Age\MISS13.MIS"
- перетаскиванием файла на значок программы;
- перетаскиванием файла на открытое окно программы;
- созданием ассоциации расширений файлов моделей и миссий (BIN и MIS) с просмотрщиком и открыванием их двойным кликом прямо из Проводника.


ЗАПУСК НА LINUX И УСТАРЕВШЕМ ОБОРУДОВАНИИ
Для старых видеокарт, не поддерживающих OpenGL 3, сделана специальная версия - LEGACY HARDWARE. Её функционал сильно ограничен, но пользоваться основными функциями просмотрщика она позволяет. Для её запуска используйте исполняемый файл dark_engine_viewer_legacy.exe.

Кроме того, есть и linux-сборка просмотрщика: dark_engine_viewer_x64. В настоящее время она работает в режиме LEGACY HARDWARE и так же весьма ограничена в плане графических возможностей, но в отличие от legacy-версии, со временем станет полнофункциональной.


КАК ПОЛЬЗОВАТЬСЯ
Всё должно быть интуитивно понятно: интерфейс просмотра файлов прокручивается колесиком мыши, модели открываются по клику, перелистывание моделей "предыдущая/следующая" осуществляется стрелками клавиатуры, PgUp, PgDn, Home и End. Открытую модель можно приближать или отдалять от камеры колесиком мыши, вращать левой кнопкой мыши, перетаскивать - правой.

При открытии миссии, в правом верхнем углу программы появляется кнопка "Free camera mode", нажав на которую программа переходит в режим "свободного полета", управление в этом режиме осуществляется следующими клавишами:
WASD и стрелки - перемещение камеры, мышь - вращение по осям x и y
C - перемещение камеры вниз
SPACE - перемещение камеры вверх
SHIFT + клавиша перемещения - ускоренное перемещение
ESC - отображение интерфейса
ALT + ENTER - полноэкранный режим (HD Ready - 720p)
+/- - увеличение/уменьшение яркости
I - вкл/выкл освещение
K - вкл/выкл SSAO
O - вкл/выкл тени
P - вкл/выкл parallax occlusion mapping (выкл по умолчанию, требуется доработка)
U - вкл/выкл мягкие тени (выкл по умолчанию, требуется доработка)
Y - вкл/выкл контактные тени (выкл по умолчанию, требуется доработка)

Назначения цифровых клавиш (будут меняться в последующих сборках):
1 - вывод финального кадра со всеми эффектами (по умолчанию)
2 - вывод нормалей кадра
3 - вывод освещенности кадра
4 - вывод SSAO кадра
5 - вывод глубины кадра
6 - вывод искривленных нормалей кадра (bent normals)
7 - вывод глубины с добавлением карты высот

Эффекты, которые выключены по умолчанию - работают некорректно. Включение parallax occlusion mapping не покажет ничего, потому что у вас, скорее всего, отсутствуют карты высот для текстур. Но если вы захотите посмотреть как оно будет выглядеть, подложив необходимые текстуры, включите эффект клавишей P. При добавлении карты высот, добавьте к её имени постфикс "_h", кстати, для нормалей - это "_n", таким образом, если текстура называется bricks.pcx, то карта высот должна называться bricks_h.dds (формат текстуры может отличаться и быть любым, поддерживаемым игрой, не обязательно DDS, но DDS предпочтительнее), а карта нормалей - bricks_n.dds.

Поддерживаемые форматы текстур: DDS (только сжатые), PNG, TGA, PCX, GIF, JPG, BMP.

Эксперименты приветствуются! Публикуйте свои скриншоты!


ОГРАНИЧЕНИЯ
В настоящее время программа поддерживает три формата моделей: BIN, MIS и OBJ.
Поскольку программа ещё в разработке, поддержка некоторых форматов реализована лишь частично.

BIN - поддерживаются как статические, так и динамические модели, расположенные в файлах obj.crf и mesh.crf соответственно.
MIS - поддерживаются миссии, сделанные как на оригинальном DromEd, так и на новом, расширенном для New Dark Engine.
OBJ - формат поддерживается на базовом уровне, без текстур


ПЛАНЫ РАЗВИТИЯ
В глобальной перспективе просмотрщик должен превратиться в полноценный 3D-движок - Force Engine. Никто не собирается тягаться с Unreal Engine и Unity, моя личная задача состоит в том, чтобы создать на основе этого движка собственную игру.

Более близкие планы - это поддержка всех необходимых ресурсов Dark Engine, для оттачивания на них общих игровых механик, таких как физика, рендеринг, распространение звука, перемещение по уровню, взаимодействие с персонажами и предметами, искусственный интеллект. Всё это планируется реализовать с ресурсами Dark Engine, поэтому логично ожидать от этого проекта появления какого-то игрового прототипа, внешне похожего на Thief. Степень готовности этого прототипа будет обсуждаться с теми, кто проявляет интерес к проекту.

Планируется регулярная публикация обновлений. Поэтому я буду ждать ваших предложений по необходимому функционалу и коррекции приоритетов задач из списка TODO, который можно найти на форуме Dark Fate: https://darkfate.org/forum/index.php?topic=6903.0


ПОЖЕЛАНИЯ
Прошу сообщать о всех найденных ошибках, багах, пожеланиях и предложениях либо мне на почту: toforce@ya.ru, либо в тему просмотрщика на форумы Dark Fate (rus) https://darkfate.org/forum/index.php?topic=6903.0 или TTLG (eng) ... Так же, если возникают любые другие вопросы - обращайтесь!

Приветствуется распространение информации о данном проекте всеми возможными способами! Я буду очень благодарен за любое упоминание Dark Engine Viewer и моего сайта forcesw.com в соцсетях.


БЛАГОДАРНОСТИ
Я очень благодарен:
- участникам сообщества Dark Fate, без которых этот просмотрщик вряд ли был бы создан, их ники в алфавитном порядке: Boris3000, Chuzhoi, HellRaiser, Maxim, nemyax, Zontik и другие...
- разработчикам и программистам, занимавшимся реверс-инжинирингом оригинального Dark Engine, и запустившим проект Open Dark Engine, без которого идея с ресурсами Thief для Force Engine никогда не состоялась бы, их ники в алфавитном порядке: Telliamed, Volca и всех, кто был причастен к этому.
- Juliusz Kaczmarek aka PinkDot, который помог добавить в программу поддержку формата миссий New Dark Engine, а так же помог в расшифровке формата динамических MESH-объектов.
- Randy Sybel aka Shadowspawn за то, что помог разобраться как использовать расшифрованные данные, полученные из динамических MESH-объектов.
- всем, кто каким-либо образом консультировал, поддерживал и мотивировал меня, включая Vorob'а и мою супругу Татьяну!
Спасибо вам всем!


АВТОРСКОЕ ПРАВО
Используя эту программу, вы соглашаетесь с тем, что её автор не несёт никакой ответственности за возможный вред, причиненный оборудованию или программному обеспечению, напрямую или косвенно связанный с использованием данной программы. Целью автора не является заражение вашего компьютера или распространение вирусов, поэтому критически отнеситесь к возможным предупреждениям антивирусного ПО.


ПОСЛЕДНИЕ ИЗМЕНЕНИЯ
2020‒04−06 14:30 MSK (UTC+3:00) Thief 2: The Metal Age 20th Anniversary Edition
+ исправлено отображение имен файлов и каталогов в списке навигации, они больше не переносятся на новую строку.
+ для режима LEGACY HARDWARE теперь требуется версия OpenGL 1.0 вместо 2.1. Но работа в этом режиме не тестировалась. Буду благодарен за отклик.
+ добавлено отображение свечения объектов, имеющих свойство Self Illumination.
+ добавлена поддержка свойства Anim Light. В некоторых режимах оно влияет на Self Illumination объектов. Полноценная анимация этого свойства пока не реализована, применяется только начальное состояние.
+ добавлена поддержка языков, прописанных в dark config файле. Ресурсы будут искаться в соответствующих подкаталогах по приоритету, указанному в darkinst.cfg или install.cfg.

2020‒03−28 13:00 MSK (UTC+3:00) Thief 2: The Metal Age 20th Anniversary Edition
+ улучшен механизм определения каталогов с ресурсами игры. Теперь миссия, расположенная внутри любой директории игры, легко находит путь к ресурсам.
+ улучшен механизм поиска текстур для моделей. Добавлена поддержка вложенных каталогов по названию языка (правда, пока ищется только "english").
+ добавлена поддержка замещаемых текстур, описываемых параметром TxtRepl r*, где * - номер текстуры [0, 3].
+ увеличен максимальный лимит экспозиции (для повышения яркости клавишами + и -).
+ теперь в миссиях Thief 1 отображаются высокополигональные модели (при наличии).
+ добавлена поддержка открытия программы в нужном каталоге через передачу параметра в командной строке или перетаскиванием каталога на окно программы.

2020‒03−23 01:50 MSK (UTC+3:00) Thief 2: The Metal Age 20th Anniversary Edition
+ добавлено отображение моделей персонажей (выражается благодарность Juliusz Kaczmarek aka PinkDot и Randy Sybel aka Shadowspawn).
+ клавишами "+" и "-" теперь можно менять яркость изображения в режиме свободной камеры.
+ затухание в шейдере переключено на квадратичное.
+ исправлено наследование свойств объектной иерархии.

2020-03-06 14:00 MSK
+ уменьшен радиус SSAO и соответственно, bent normals. Последние теперь включены в финальную картинку, отчего она выглядит немного зашумленной. Отключить вклад SSAO и bent normals можно клавишей k.
+ увеличено значение FOV c 50 до ~74 градусов по вертикали, что соответствует FOV New Dark Engine.
+ переработано взаимодействие с объектной иерархией. Считываются свойства Render Type и Self Illumination, это позволило не рисовать лишние объекты миссии и исправило отображение теней от светильников.
+ исправлено смещение полигонов для обратного буфера глубины. Это предотвращает мельтешение теней (артефакты) при повороте или перемещении камеры.

2020-02-26 20:00 MSK
+ добавлена поддержка миссий формата New Dark Engine! Ура! Особая благодарность выражается Juliusz Kaczmarek aka PinkDot!
+ незначительно ускорена загрузка миссий
+ при открытии миссии, камера позиционируется в стартовой позиции
+ класс цвета переделан на хранение данных в векторе с плавающей точкой, это обеспечивает лучшую точность
+ отключено "залипание клавиш", для предотвращения накопления смещений камеры при управлении интерфейсом
+ увеличена яркость режима просмотра миссий

2020-02-17 23:00 MSK
+ добавлена поддержка цветных полигонов в моделях
+ исправлено отсечение пути к текстурам, находящимся в одном подкаталоге с открытой моделью (информация о текстурах, отображаемая на экране)
+ различные внутренние оптимизации

2020-02-05 23:30 MSK
+ исправлено отображение некоторых проблемных моделей, состоящих из нескольких костей

2020-01-14 15:00 MSK
+ исправлено отображение уровней на видеокартах AMD
+ отрефакторен рекурсивный обход BSP-дерева при открытии моделей, убрана рекурсия
+ исправлено падение программы при открытии некоторых старых или поврежденных моделей
+ откорректирована простановка доступных для выборки mipmap-уровней текстур
+ добавлена отладочная схема отрисовки

2020-01-04 00:55 MSK
+ исправлена ошибка вращения объекта сразу после его открытия, без предварительного движения мышью
+ исправлена ориентация некоторых объектов в миссиях, связанная с особенностью указания ориентации кватернионов в библиотеке GLM
+ исправлено построение AABB и OBB для объектов и их костей
+ шейдеры теперь умеют принимать на вход массивы данных
+ добавлена заготовка схемы отрисовки для дебажного вывода bounding boxes

2019-12-18 23:30 MSK
+ пути к ресурсам игры удаляются из программы, если мы выходим из каталога игры (чтобы ресурсы разных игр не перемешивались при загрузке)
+ исправлено падение программы при клике или скролле на странице ошибки при первом запуске.
+ окно программы при запуске располагается по центру экрана.
+ исправлено поведение клавиши PgUp, перематывающей список в самый конец, при нажатии в верхней части списка

2019-12-11 16:00 MSK
+ исправлена ошибка компиляции шейдера depth_tree на картах AMD
+ расширено логирование при ошибках поиска текстур для упрощения анализа логов

2019-12-10 15:00 MSK
+ исправлена распаковка нормалей моделей, теперь все объекты корректно освещаются источниками света

2019-12-06 15:00 MSK
+ закрытие дескриптора архива после выхода из него средствами интерфейса


Force
forcesw.com
toforce@ya.ru
