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

Материал из Zone Chronicles
Перейти к: навигация, поиск
Build 749/Искусственный интеллект
Alien.jpg
Типксеноморф
Высота тела0,25 м (jumper)
1,25 м (mover)
Тип атакивзаимодействие с коллизией игрока
Jumper
Mover

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

Описание[править | править код]

Все 3 монстра не являются NPC как таковыми — это внешнее представление первого вида искусственного интеллекта, написанного Олесем Шишковцовым для движка. Модели для них создавались для более наглядного отображения поведения ИИ и наблюдения за ним, на что также косвенно указывает качество моделей 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)