Build 756 (SDK)

У этого термина существуют и другие значения, см. Build 756.
***"X-Ray Engine Level Editor build 756"*** — редактор уровней для работы с игровым движком *X-Ray* в период разработки проекта *Oblivion Lost*.

## Описание

SDK состоит из двух приложений: редактор уровней (*ed.exe*) и компилятора геометрии (*xrLC.exe*). Редактор уровней является самой старой его версией, из всех имеющихся в публичном доступе. Несмотря на полную работоспособность, ряд его компонентов находится в зачаточном состоянии и часть типовых компонентов не принимаются компилятором или самим игровым движком. Но он имеет достаточный функционал для работы на начальных этапах разработки. Есть многофункциональный редактор шейдеров и расстановка детальных объектов через рисование кистью по геометрии. Сравнивать полноценно данную версию с публичными финальными версиями *X-Ray SDK не является корректным — очень велико различие и сам принцип работы.*

### Входящие в состав редактора приложения

*Основная статья: **"LevelBuilder v3.0" beta build (июнь 2001)***

В состав редактора также входят компиляторы геометрии, собранные на несколько дней раньше.

### Недоработки

Здесь перечислены самые заметные недоработки в редакторе уровней, связанные с тем, что приложение постоянно развивалось и до этого момента даже меняло концепцию:

* начальное состояние *Level Environment* — нельзя создать скайбокс к уровню и полноценно работать с глобальным освещением (поэтому в *"XRAY Engine" demo build 756* полностью отсутствует скайбокс на всех уровнях);
* отсутствует *Snap List* для выделяемых объектов;
* невозможность настройки *Respawn Point'*ов;
* объекты *Navigation Point* не рисуются во вьюпорте;
* от старых версий редактора остались нерабочие кнопки *Texturing* и *Contouring*, представляющие собой элементы взаимодействия с объектами, создаваемыми напрямую в редакторе;
* от старых версий редактора в свойствах сцены находятся нерабочие вкладки *Tesselation* и *Visibility*, а также параметр *Amount of distortion*, находящийся во вкладке *Lightmaps*;
* отсутствует инструмент для создания и взаимодействия с партиклами. Как и в самом движке на тот момент;
* зачаточное состояние системы детальных объектов, за счет иной концепции работы детальных объектов, инструментарий здесь разительно отличается от того, что будет в последующих версиях редактора.

## История сборки

*Основная статья: **Oblivion Lost § История разработки***
Устроившись на работу в *GSC Game World*, после ухода из *White Lynx* весной 2000 года, программисты Александр Максимчук и Олесь Шишковцов продолжили развивать принесённый ими движок *X-Ray*. Редактор уровней, изначально написанный в среде разработки *Microsoft Visual Studio 6.0* и использованный ещё для *Alien Logic*, был перенесён в среду *Borland C++ 5.0*. Постепенно из редактора были убраны средства для создания и текстурирования моделей и ландшафта, то есть редактор стал просто связующим между 3D-пакетами и игровым движком. Компиляция уровней была перенесена в отдельную библиотеку — *Level Builder*, в конце декабря 2000 ставшим отдельным приложением.

Постепенно происходили изменения в сторону полноценной поддержки работы с открытыми пространствами в движке, поэтому менялась и технологическая основа: были сделаны первые попытки работы окклюдеров, которые позже стали использовать технологию *Hierarchical Occlusion Maps*, а потребляемую много ресурсов *PVS* полностью заменили на использование секторов и порталов, что полностью повлияло на построение сцен. Всё это также сказывалось и на развитии редактора уровней, где часть ушедших инструментов убирались не сразу и оставались неиспользуемыми элементами интерфейса, которые не принимались ни движком, ни компилятором.

Данная версия редактора находится ровно на границе периодов разработки, когда старые инструменты построения сцены остались ещё в небольшом количестве в разной степени заброшенности, а нововведения до конца не сформированы и позже будут сильно отличаться по принципу использования и работы.

Редактор был выложен пользователем **Loxotron** на *GAMEINATOR forums* в сливе сборок от 9 февраля 2011 года.

## Технические особенности

* Все пути к файловым директориям записаны в редакторе напрямую, поэтому для запуска и работы редактора и компилятора стало обязательно создавать виртуальный диск *X:\*
* Библиотека ассетов не сканирует директорию *meshes*, а использует для этого файл *library*, являющийся файловым каталогом, сохранённым с применением компрессии, что по сути делает систему папок и расположения файлов в редакторе библиотеки виртуальными
* В отличие от создания окклюдеров в публичных финальных версиях редактора, здесь они создаются вручную отдельными плоскостями, с помощью указания конечных вершин самой плоскости в пространстве, с возможностью указания плотности самого окклюдера
* Система детейлов также разительно отличается от конечной версии по принципу своей системы расстановки детальных объектов. В этой версии они рисуются кистью по геометрии сцены, а не генерируются через текстуру-маску;
* Сектора не создаются через выделение мешей, а только с помощью выделения полигонов, независимо от того, выделяются одновременно полигоны с разных мешей, или с одного. Для ускорения создания секторов, был добавлен *Box Pick* и *Ties*, который также мог рекурсивно выделять полигоны, учитывая угол наклона поверхности в градусах;
* Для отображения секторов можно использовать Convex Hull *(рус. Выпуклая оболочка)*, которая показывала множество и смежность секторов

## Скачивание и запуск

Установка виртуального диска и запуск редактора
Редактор можно запустить при наличии виртуального диска *X*, ссылаемого на директорию с редактором. Для этого нужно создать *.bat* файл с следующим содержимым:

```
@%systemroot%\system32\subst.exe x: .

```

После создания виртуального диска запустить *ed.exe* на диске *X*.

Удаление виртуального диска
В командной строке ввести команду:

```
subst x: /d

```

*Запуск редактора на **Windows 10** с наличием последних обновлений невозможна — при попытке запуска появляется ошибка **Nonshared DATA Segment required**.*

## Галерея

* Стартовое пустое окно сцены
* Настройка *Event*
* Добавление на уровень детальных объектов
* Окно редактора шейдеров, создание вершинного шейдера с альфа-каналом
* SDK вместе с некоторыми объектами

## Примечания

1. ^ Напрямую связано с древовидным построением иерархии уровня и применением технологии *PVS*, которая уже не использовалась даже в *"XRAY Engine" demo build 749*.
2. ^ Некогда подразумевалось применять дизеринг для лайтмапов, указывая нужный коэффициент в настройках сцены, но к *"XRAY Engine" demo build 749* от этого уже отказались.
3. ^ Условно говоря, по типу брашей.
4. ^ Последнее изменение *xrLBuilder.dll* датируется 26 декабря, из чего можно предположить, что тогда же проект приложения был изменён с динамической библиотеки на отдельное приложение.
5. ^ В этом редакторе они именуются как *PClipper* (Plane Clipper).
6. ^ Выделение нескольких элементов через обведение нужной области курсором
7. ^ Выделение смежных полигонов, находящихся рядом с одним выделенным