Skip to content

Latest commit

 

History

History
123 lines (99 loc) · 10.9 KB

README.md

File metadata and controls

123 lines (99 loc) · 10.9 KB

X-Ray Engine & SDK 1.6

English translate:

TODO

Русский перевод:

О проекте:

Раньше я занимался проектом 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 2022;
  • Embarcadero RAD Studio 11.2.

Сборка:

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

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

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

  1. Открыть движок (code\engine.vc2008\engine.sln) в Visual Studio, выбираем нужный конфиг и собираем xrEntry(главный проект, собирает все);
  2. Открыть в Rad studio проект components;
  3. Собрать проекты elpackB6, elpkdbB6, elpproB6, editorB(главный проект, собирает все) в нужной конфигурации и в нужной архитектуре;
  4. Запустить батник для выполнения корректировки хейдеров для компонентов Delphi; fix_headers_for_rad_studio.cmd
  5. В корне с кодом запустить батник для нужной конфигурации (скопирует необходимые dll и статические либы по путям); (отредактировать путь к среде в батнике, если отличается) copy_lib_архитектура_конфигурация.cmd
  6. Открыть проект в rad studio all_editors (code\engine.vc2008\all_editors.groupproj), выбрать проект ActorEditor или LevelEditor, и собрать в нужной конфигурации и архитектуре (достаточно собрать эти проекты, все остальное соберется автоматически);
  7. Выходные файлы будут в папке bin/архитектура/конфигурация;
  8. Запуск стандартный, папка start, выбрать нужный батник (подредактируйте пути внутри батников к своим игровым ресурсам) (Для AI - сети: по - умолчанию в батниках включена черновая компиляция AI - сети).

Старт из IDE:

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

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

  • При [bcc* Error] *.cpp(1): ICE: Internal compiler error: 0 @ 00000000 просто перезапускаем сборку. Из вариантов: есть множественные включения headers, следует устранить;
  • Если при сборке RAD Studio зависает, убиваем процесс и перезапускаем сборку;
  • Если при запуске ошибки связанные с openal, установить из папки : tools/redistributable_package - oalinst;
  • Если при запуске ошибки с ucrtbase(-d), установить из папки : tools/redistributable_package - winsdksetup.

Рекомендации:

  • Перед запуском AE или LE выставите exe права администратора!

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

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

  • Engine x64/x86 Debug/Release;
  • Maya Plugins 2022 x64 Debug/Release;
  • Xray SDK Level Editor/Actor Editor x64/x86 Debug/Release.

Технические изменения:

  • движок пересобран под стандартами C++ 17/14;
  • удалены BugTrup;
  • Обновлены nvtt, luabind, LuaJIT, minilua, Buildvm на самые свежие версии;
  • Для плагинов maya используется ядро xray_re;
  • Сделана общая точка запуска xrEntry;
  • Добавлены все необходимые для запуска dll;
  • Приложены все инструменты для запуска собранных бинарников (SDK Win, dx sdk, open al);
  • Добавлены батники под все конфигурации для быстрого старта собранного программного продукта;
  • Сам SDK переведён под clang компилятор и стандарты C++ 17/14.

Изменения:

  • Всё: добавлена всевозможная трассировка стека. Движок отлавливает практически все падения и трассирует их в стек;
  • SDK: исправлен вылет nodefault reached на win 8/10;
  • SDK: удален rt_object_props.ltx;
  • SDK: исправлен limit 32 items for multiply add objects (256 items);
  • SDK: размер lod - текстуры - 8192 х 8192;
  • SDK: вывод координат до 100000, и до сотых - при редактировании позиции объекта в LE;
  • SDK: исправлен баг, когда трава отказывалась отрисовываться;
  • Всё: x64;
  • SDK: диалоговые окна конечно;
  • 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) - исправлены фризы при использовании инструмента;
  • xrLC: исправлен вылет при очень больших полигонах (переполнение);
  • xrLC: добавлена возможность постановки компиляции на паузу.

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

  • mixed конфигурация - не настроена;
  • при выходе из движка Debug под отладкой Visual Studio x86/x64 падение;
  • при сборке уровней разными SDK (x86 и x64) у некоторых файлов получается разный размер, из -за разных размеров типов данных под конкретную архитектуру. Нужно привести к единому типу данных и размеру;
  • Уровень, сделанный в SDK x86, и который пытается компилироваться в xrLC x64 - будет ошибка, времени отладить не хватило; (возможно, это следствие предыдущего пункта);
  • в SDK иногда наблюдаются проблемы с АИ - сетью (видел редко). Ее координаты и позиция портится. Скорее всего, также, связано с типами данных.

Проверено на:

  • Windows 10

TODO:

  • добавить в xrLC выгрузку из ОЗУ при постановке на паузу.

Вклад:

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

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

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

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