DARK ENGINE VIEWER
Программа-просмотрщик ресурсов движка Dark Engine.
Открывает модели объектов и персонажей в формате BIN.
Имеет режим свободной камеры для просмотра уровней в формате MIS.
Открывает текстуры форматов DDS (DXT*), PNG, TGA, PCX, GIF, JPG, BMP.
Позволяет прослушивать звуки WAV, поддерживаемые оригинальным движком 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, OBJ и пр...) с просмотрщиком и открыванием их двойным кликом прямо из Проводника.


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

Кроме того, есть и linux-сборка просмотрщика, но, к сожалению, в данный релиз она не включена.


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

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

Во всех режимах работают следующие клавиши:
L - вкл/выкл освещение
+/- - увеличение/уменьшение яркости
ALT + ENTER - полноэкранный режим (HD Ready - 720p)
F1 - контекстная справка

Назначения цифровых клавиш (будут меняться в последующих сборках):
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.

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


ОГРАНИЧЕНИЯ
Поскольку программа ещё в разработке, поддержка многих форматов файлов реализована не полностью.

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


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

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


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

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


БЛАГОДАРНОСТИ
Я очень благодарен:
- участнику сообщества Dark Fate под ником Chuzhoi за его неоценимый вклад в разработку дизайна и визуального стиля программы, её тестирование, дельные UI/UX-советы. Именно благодаря ему Dark Engine Viewer сделан таким, какой он есть.
- другим участникам сообщества Dark Fate, без которых этот просмотрщик вряд ли был бы создан, их ники в алфавитном порядке: Boris3000, 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-объектов.
- разработчику с ником HardKern, который указал на проблемы, с которыми он столкнулся во время разработки своего проекта System Shock 2 VR (который, к сожалению, уже закрыт :( )
- всем, кто каким-либо образом консультировал, поддерживал и мотивировал меня, включая Vorob'а и мою супругу Татьяну!
Спасибо вам всем!


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


ПОСЛЕДНИЕ ИЗМЕНЕНИЯ
2021‒04−23 20:00 MSK (UTC+3:00) Thief 2: The Metal Age 21st Anniversary Edition
+ компиляция сборок теперь осуществляется с максимальным уровнем оптимизации компилятора, это должно слегка увеличить скорость работы
+ добавлена генерация mip-уровней для режима Legacy Hardware
+ добавлена поддержка теней для прожекторов
+ переработана система команд. Теперь при загрузке нескольких команд, выполняется результат только последней, выбранной пользователем
+ исправлена загрузка меню. Оно теперь загружается параллельно с объектом

2021‒03−27 16:00 MSK (UTC+3:00) Thief 2: The Metal Age 21st Anniversary Edition
+ переделана загрузка BIN-моделей. Теперь можно просматривать модели с нарушенной структурой дерева.
+ незначительно переоформлены экраны помощи.
+ добавлена возможность открыть в проводнике каталог текущего просматриваемого объекта горячей клавишей O.
+ в лог теперь выводится тип сообщения.

2021‒03−23 15:00 MSK (UTC+3:00) Thief 2: The Metal Age 21st Anniversary Edition
С момента последнего публичного релиза прошел почти целый год. За это время было внесено огромное количество изменений. Вот основные из них:
+ реализован простой плеер для воспроизведения звука на основе OpenAL
+ добавлен режим просмотра изображений (всех поддерживаемых форматов текстур)
+ добавлено освещение в режим просмотра объекта
+ переделана работа интерфейса, он теперь загружается частями и работает значительно быстрее
+ реализован фильтр для поиска файлов в меню с простым вводом текста
+ сделан экран помощи, открывающийся клавишей F1
+ добавлена обводка шрифта для текста во вьюпорте для улучшения читаемости
+ добавлена поддержка системных указателей мыши над элементами интерфейса
+ в режиме просмотра объектов реализована прозрачность и альфа-тест
+ для миссий, имеющих поддержку Low Sky, отображается skybox
+ добавлен экран загрузки для меню и для миссий
+ рендеринг переделан на стриминг геометрических данных
+ реализовано построение octree, которое сейчас используется пока только для оптимизации отсечения геометрии за пределами кадра
+ переработана система управления параллельными потоками
+ масштабный внутренний рефакторинг, введена система управления текущим состоянием приложения
+ переработана система логирования
+ множество косметических улучшений и исправлений

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
