Build 1097 (xrAI)

xrAI.exe

Компилятор AI-сетки, присутствует в полном составе в составе SDK 1097, под именем *xrAI.exe*.

## Описание

Является самой старой из известных сообществу версией компилятора ИИ. Был предназначен для сборки AI-сетки на уровнях, с последующей линковкой нод для передвижения по ним ИИ и просчетом укрытий.

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

Написанная в начале 2001 года Олесем Шишковцовым система перемещения ИИ, основанная на проверки коллизии и построению сплайновых путей показывала себя неудовлетворительно в тестовой сборке и в последующих тестах ИИ. В сентябре 2001, вместе с Александром Максимчуком были проведены тесты и доработка передвижения, реакции ИИ и возможность предсказать передвижение игрока, где было решено изменить систему передвижения ИИ по уровню, посредством перемещения по нодам, которые расставлялись уже исходя из имеющейся геометрии, не требуя постоянной адресации к коллизии сцены. ИИ оставалось только выбирать наилучший ближайший AI-нод, чтобы перемещаться по пространству, все также прокладывая сплайновую линию от исходной точки до точки назначения.

Изначально xrAI умел только генерировать AI-ноды по геометрии загружаемой сцены для передвижения ИИ, но за октябрь 2001 его функционал дополнялся. Была добавлена функция сглаживания нод для более плавного наклона плоскостей, возможность объединять несколько нод в одну большую, там, где не требуется большая точность перемещения и возможность визуально отслеживать процесс компиляции.

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

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

Компилятор не ссылается на библиотеки, которые включены в состав X-Ray. Однако, в каталоге SDK, вместе с компиляторами находятся и старые библиотеки, используемые прошлыми версиями компилятора. Среди них находится *xrSpherical.dll*, которая отсутствовала в прошлой известной версии, но была используема компилятором примерно с июля 2001 года до неизвестного срока.

Компилятор содержит в себе следующий функционал, который отсутствует в последующих и релизных версиях xrAI, выводя ряд характерных особенностей:

* Были добавлены ключи запуска компилятора: *-f*, *-h*/*-?*, *-o*;
* xrAI сам генерирует AI-сетку на уровне, не получая её от редактора;
* Уже в этой версии имеется просчет укрытий для АИ;
* Возможность объединять несколько AI-нод в одну большую;
* Присутствует закомментированая функция xrDisplay, отвечающая за просмотр собранной AI-сетки, с различными режимами отображения, например, просчитанных укрытий;
* Для генерации AI-сетки, компилятор размещает эмиттеры, от которых идет покрытие геометрии локации AI-нодами. Но могут возникать случаи, когда эмиттер не может быть поставлен и редактор вылетит с ошибкой *Can't align emitter*;
* Для работы с геометрией, компилятор считывает файл *build.cform*, что сохранится вплоть до релизной версии компилятора;

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

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

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

```

Сама компиляция уровня вызывается через bat-файл или командную строку, в которых нужно прописать:

```
x:\xrLC.exe -f %1

```

Где *-f* — ключ, осуществляющий компиляцию, а *%1* — имя собранной в редакторе сцены.

## Интересные факты

* Первая известная сообществу версия xrAI.
* Первый известный компилятор AI-сетки, где появились ключи запуска.
* Единственный известный компилятор AI-сетки, чья форма окна оформлена в книжной ориентации.

## Галерея

* Режимы визуализации *xrDisplay* (зеленые пиксели отображают незадействованную область)
* Отображение глубины расположения AI-нод
* Карта высот расположения AI-нод
* Нормали мешей AI-нод
* Принадлежность AI-нод к конкретному сектору
* Распределение AI-нод и их формы

* Скриншоты визуализации AI-сетки в ближайших по совместимости к компилятору сборках
* AI-сетка в debug режиме отображения. Наглядно видны разные прямоугольные формы, как следствие работы объединения AI-нод
* Для AI-сетки также просчитывалось глобальное затенение
* AI-сетка в сборке 1114. Зомби прокладывает сплайновый путь до ближайшей "лучшей" AI-ноды

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

1. ^ В SDK 1097 в редакторе отсутствует возможность собирать AI-сетку, потому что данный функционал присутствует здесь
2. ^ **-f <ИМЯ>** — главный ключ запуска, отвечающий за компиляцию уровня
**-h** (или **-?**) — ключ для вывода окна о существующих ключах запуска. Если запускать компилятор как обычное приложение, то это окно будет инициализироваться при запуске
**-o** — возможность изменить настройки компилируемого уровня, вызывающий окно настройки сцены редактора, которое содержится в библиотеке *xrLC\_Options.dll*
3. ^ Однако реальная нужда в *xrLC\_Options.dll* отсутствует по той причине, что его настройки предназначены только под xrLC, и при попытке вызова опций настройки здесь, xrAI закономерно вылетает
4. ^ Компилятор содержит в себе фазу *Building nodes...*
5. ^ Компилятор содержит в себе фазу *Calculating coverage...*
6. ^ Компилятор содержит в себе фазу *Merging nodes...*
7. ^ Компилятор содержит в себе фазу *Visualising nodes...*
8. ^ Вызов функции xrDisplay был закомментирован, поэтому без дополнительных правок реализовать её невозможно

Источник
1. ^ C:\Projects\xrLC\xrAI\compiler\_build.cpp (файл упоминается в двоичном коде приложения)
2. ^ C:\Projects\xrLC\xrAI\xrAI.cpp (файл упоминается в двоичном коде приложения)
3. ^ C:\Projects\xrLC\xrAI\compiler\_cover.cpp (файл упоминается в двоичном коде приложения)
4. ^ C:\Projects\xrLC\xrAI\compiler\_merge.cpp (файл упоминается в двоичном коде приложения)
5. ^ C:\Projects\xrLC\xrAI\compiler\_display.cpp (файл упоминается в двоичном коде приложения)