We've Moved! Just as Gamepedia has joined forces with Fandom, this wiki had joined forces with our Fandom equivalent. The wiki has been archived and we ask that readers and editors move to the now combined wiki on Fandom. Click to go to the new wiki.

Build 749/Искусственный интеллект

Jumper.jpg
Jumper
Mover.jpg
Mover
Alien.jpg
Alien

"XRAY Engine" demo build 749 предназначался для тестирования различных аспектов движка, в том числе и отладки искусственного интеллекта. Было создано три типа поведения ИИ с разной логикой и моделями: alien, mover и jumper.

Описание

Все 3 монстра не являются NPC как таковыми — это внешнее представление первого вида ИИ, написанного Олесем Шишковцовым для движка X-Ray. Модели для них создавались для более наглядного отображения поведения ИИ и наблюдения за ним, на что также косвенно указывает качество моделей mover и jumper.

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

Способности и поведение

Все три модели отражали различные варианты поведения, но не были привязаны к ним (им может быть подставлена почти любая ogf-модель и написан свой отдельный ИИ с совсем другим поведением):

  • Alien — самые первые тесты поведения проверялись на модели alien, которая осталась в достаточно проработанном виде, но в сборке не используется. Модель поведения строила сплайновый путь на основе данных из игровой коллизии геометрии сцены и просто перемещалась по уровню. Сам программный объект монстра был написан во внешней динамической библиотеке object_alien.dll (в составе сборки отсутствует). В течение месяца (конец января — февраль 2001) модель поведения и просчёты улучшались, что позже легло в основу двух последующих моделей поведения.
  • Mover — движется по прямой, в спокойном состоянии крутится из стороны в сторону. Из-за постоянного ускорения может достигать очень большой скорости и бесконечно преследовать игрока без потери его из вида на любой дистанции.
  • Jumper — передвигается прыжками с задержкой примерно в 2 секунды, атака происходит во время прыжка (при попадании в стену может от неё отскочить; сила и расстояние отскока могут быть разными). В спокойном состоянии крутится из стороны в сторону, суммарно примерно на 270 градусов (иногда происходит баг, когда при атаке в прыжке он продолжает крутиться).

Отношение к игроку

Целью монстров Mover и Jumper является обнаружение игрока, построение к нему пути и достижение конечной точки. Поэтому они всегда движутся в его сторону и своими моделями «налезают» на коллизию модели игрока, из-за чего происходят повреждения с последующей потерей управления.

История создания

Модель и текстура

Дата Автор Описание
19 декабря 2000 Была нарисована текстура eye1.TGA. Возможно тогда же были созданы первые версии моделей alien1.ogf и alien2.ogf
23 января 2001 Сергей Кармальский Была создана модель alien.ogf, к которой было нарисовано 8 текстур: coilBMP.TGA, coilyello.TGA, FACE.TGA, RIBS2.TGA, Tissue.TGA, TOOTH.TGA, VIENS.TGA, Yellotrans.TGA
10 апреля 2001 Сергей Кармальский Была экспортирована модель alien1.ogf[прим. 1]
11 апреля 2001 Сергей Кармальский Была экспортирована модель alien2.ogf[прим. 2]

Программирование

В конце января 2001 года Олесь Шишковцов начал писать первый исходный код, связанный с работой искусственного интеллекта. Для тестов использовалась модель alien.ogf, которая должна была, исходя из наличия окклюзии, просто передвигаться по уровню. Были созданы функции, отвечающие за зрение и передвижение монстра. В последующие дни происходили работы над написанием кода, связанным с искусственным интеллектом, но позже было решено реализовывать поведение на встроенном в X-Ray скриптовом языке программирования C-Scripting Engine, а основа работы ИИ оставалась в движке.

Конфиги

В начале 2001 года в файле system.ltx была создана секция [m_alien], в которой были прописаны переменные eye_fov и eye_distance с определёнными значениями.

Скрипты

Начиная с февраля, были созданы скрипты iq_alien.c и iq_jumper.c, которые также были скомпилированы[прим. 3] в бинарный вид[прим. 4] для чтения движком. В апреле на уровне L1 day были продолжены тесты поведения монстров и скрипты менялись: в последний раз iq_jumper.c правился 17 апреля, а iq_alien.c — 24-го.

Галерея

Примечания

Комментарии
  1. ^ Mover.
  2. ^ Jumper.
  3. ^ Парсинг и компиляция происходят во время запуска игры.
  4. ^ iq_alien.cs и iq_jumper.cs соответственно.
  5. ^ Стандартная модель mover заменена моделью alien.
  6. ^ Стандартная модель mover заменена моделью игрока.
Источники
  1. \\game\XR_3DA.exe\.data
  2. \\game\data\meshes\alien.ogf (ревизия 23.01.2001)
  3. \\game\data\meshes\alien1.ogf (ревизия 10.04.2001)
  4. \\game\data\meshes\alien2.ogf (ревизия 11.04.2001)
  5. \\game\data\scripts\iq_jumper.c (ревизия 17.04.2001)
  6. \\game\data\scripts\iq_alien.c (ревизия 18.04.2001)
  7. \\game\data\scripts\iq_jumper.c (ревизия 18.04.2001)
  8. \\game\data\scripts\iq_alien.c (ревизия 24.04.2001)
Материалы сообщества доступны в соответствии с условиями лицензии CC BY-NC-SA 3.0, если не указано иное.