Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

171 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

X-Ray Engine & SDK 1.6

О проекте

Раньше я занимался проектом Lost World Origin, потом немного работал над Lost World Quantum (далее LWQ). Занимался я картостроением, отвечал за полную Припять и т.д. И для LWQ хотелось чего - то большего, а именно - полной Зоны. Попробовали, не получилось, инструменты не соответствовали. И захотелось собрать оригинальный SDK, именно в том виде, каком он существовал у всех, с небольшимим изменениями: фикс известных багов и устранение проблемы создания больших карт. После непродолжительной борьбы с Borland C++ Builder 6.0 получилось собрать LevelEditor. Однако, все оказалось гораздо банальнее: после устранения проблем с размерами, координатами и прочим, SDK стал вылетать по памяти, так как был 32 битным. Попытка дать ему длинные адреса не увенчалась успехом, ему все также не хватало (на тот момент у меня была соединённая карта Теней Чернобыля, то есть полная Зона). Именно после этого я и решился на порт SDK по 64 битную архитектуру, соответственно с переездом на более совеременные IDE (Borland C++ Builder 6.0 не поддерживает архитектуру 64 бит). Кратко говоря...путь был весьма не прост, один баг меня поставил в тупик дня на четыре. Однако, в целом все получилось успешно. Конечно, есть еще куда стремиться и развиваться - но у же другим, тем, кому это будет интересно :) Я свою цель и мечту реализовал по полной, поэтому и выкладывюю полный и настроенный код. Успехов всем желающим!

Инструменты

  • Visual Studio 2026 (toolset 145);
  • Embarcadero RAD Studio 13.1. Обязательно запустить от имени администратора, так как редакторы настроены на UAC!

Сборка

Перед сборкой (сделать это один раз):

  1. Открыть в rad studio проект components (code\SDK\components\components.groupproj);
  2. Собрать проекты elpackB6, elpkdbB6, elpproB6, editorB(главный проект, собирает все) в x64 Debug. Проверить, что все зависимости тоже выставлены в x64 Debug;
  3. Собрать проекты elpackB6, elpkdbB6, elpproB6, editorB(главный проект, собирает все) в x64 Release. Проверить, что все зависимости тоже выставлены в x64 Release;
  4. Собрать проекты dceldbB6, dcelppB6, dclelpB6, editor(главный проект, собирает все) в x64 Release. Проверить, что все зависимости тоже выставлены в x64 Release. Установить каждый компонент. Порядок установки: editor, dceldbB6, dcelppB6, dclelpB6;

Алгоритм сборки:

  1. Открыть движок (code\engine.vc2008\engine.sln) в Visual Studio, выбрать нужный конфиг и собрать xrEntry(главный проект, собирает все);
  2. Открыть в rad studio проект all_editors (code\engine.vc2008\all_editors.groupproj), выбрать проект ActorEditor или LevelEditor, и собрать в нужной конфигурации и архитектуре (достаточно собрать эти проекты, все остальное соберется автоматически);
  3. Выходные файлы будут в папке bin/архитектура/конфигурация;
  4. Запуск стандартный, папка start, выбрать нужный батник (подредактируйте пути внутри батников к своим игровым ресурсам).

Сборка скриптом

Зависимости:

  • Python 3
  • RAD Studio 13.1 (MSBuild из rsvars.bat, платформа проектов Win64x);
  • Visual Studio 2026 (MSBuild.exe, сборка Win64 для engine.sln);
  • 7-Zip (7z.exe) Пути по умолчанию задаются в начале скрипта или через переменные окружения RAD_STUDIO_BIN, VSINSTALLDIR, SEVEN_ZIP_EXE.

Скрипты:

  • build_release.bat - собирает release движок и SDK и пакует в 7zip;
  • build_debug.bat - собирает debug движок и SDK и пакует в 7zip;
  • build_full.bat - собирает debug и release движок и SDK и пакует в 7zip.

Старт из IDE

  • Движок: выбрать запускаемым проектом xrEntry, выставить у него рабочим каталогом папку до игровых ресурсов (до местоположения игровых архивов и/или gamedata), запустить;
  • SDK: выбрать запускаемым проектом ActorEditor/LevelEditor, выставить у них рабочим каталогом папку до SDK - ресурсов (до местоположения папки gamedata/rawdata), не забыть про аргумент командной строки -editor, запустить.

О возможных ошибках

  • Если при запуске ошибки связанные с openal, установить из папки : tools/redistributable_package - oalinst;
  • Если при запуске ошибки с ucrtbase(-d), установить из папки : tools/redistributable_package - winsdksetup;
  • При открытии редакторов в IDE RAD Studio иногда могут быть жалобы на компоненты AlexMX/ElPack. Нужно просто перезапустить IDE.

Благодарности проектам

Что собирается

  • Engine x64 Debug/Release;
  • Maya Plugins 2026 x64 Debug/Release;
  • Xray SDK Level Editor/Actor Editor x64 Debug/Release;
  • Xray Compilers x64 Debug/Release.

Изменения

  • Движок пересобран под стандартами C++ 17/23;
  • Удален BugTrup;
  • Обновлены luabind, LuaJIT, minilua, Buildvm на самые свежие версии;
  • Для плагинов maya используется ядро xray_re;
  • Сделана общая точка запуска xrEntry;
  • Добавлены все необходимые для запуска dll;
  • Приложены все инструменты для запуска собранных бинарников (SDK Win, dx sdk, open al);
  • Добавлены батники под все конфигурации для быстрого старта собранного программного продукта;
  • Сам SDK переведён под clang компилятор и стандарт C++ 23;
  • Всё: добавлена всевозможная трассировка стека. Движок отлавливает практически все падения и трассирует их в стек;
  • SDK: исправлен вылет nodefault reached на win > 7;
  • SDK: удален rt_object_props.ltx;
  • SDK: исправлен limit 32 items for multiply add objects (256 items);
  • SDK: максимальный размер lod - текстуры теперь 8к;
  • SDK: вывод координат до 100000, и до сотых - при редактировании позиции объекта в LE;
  • SDK: исправлен баг, когда трава отказывалась отрисовываться;
  • Всё: удалена x86, завезена x64;
  • SDK: диалоговые окна заменены на COM - реализацию;
  • SDK: корректное сохранение и загрузка dti (индексы + модели травы, файл);
  • SDK: вывод списка thm с указанием проблемной при вылете (Pos<=Size) && (Pos>=0);
  • SDK: переименование материалов в AE и LE;
  • SDK: вывод настроек камеры в быстрые настройки LE(по клавише enter);
  • SDK: select texture(AE) - исправлена ошибка при выборе текстуры;
  • SDK: check new textures (AE, LE) - создание новых thm, исправлена ошибка по stack overflow;
  • SDK: ai maps (LE) - исправлены фризы при использовании инструмента;
  • SDK: UAC для редакторов по - умолчанию;
  • SDK: корректный скейлинг на больших разрешениях;
  • xrLC: исправлен вылет при очень больших полигонах (переполнение);
  • xrLC: добавлена возможность постановки компиляции на паузу;
  • вся кодовая база переведена на кодировку UTF-8 с исправлением испорченной кодировки;
  • обновлен nvtt2 до nvtt3 (с поддержкой cuda). Теперь сборка LOD - текстуры в LE занимает считанные секунды;
  • SDK: при загрузке карты и отсутствии spawn/object - моделей есть кнопка, которая прерывает загрузку уровня для экономии времени;

Галерея скриншотов

docs/Screenshots.md

Известные ошибки

  • mixed конфигурация - не настроена.

Проверено

  • Windows 10;
  • Windows 11

Вклад

Проект открыт для изменений и модификаций.

Всё использование только не в коммерческих целях.

Если взяли в использование, пожалуйста, укажите первоисточник.

Буду только рад соразработчикам (collaborators)!

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages