Рассылка закрыта
При закрытии подписчики были переданы в рассылку "BloggLand и Я | Блоггландия" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Январь 2003 → | ||||||
1
|
2
|
3
|
4
|
5
|
||
---|---|---|---|---|---|---|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
14
|
15
|
16
|
17
|
18
|
19
|
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
Статистика
0 за неделю
DarkBASIC - легко создаем 3D миры и игры!
Информационный Канал Subscribe.Ru |
![]() |
Ограничение по трафику Номер 20/декабрь 2002 |
Замирая в глубоком пардоне, Илья Середа. Содержание номера:
В январе Crow Interactive обещает показать новые скриншоты, которые
"... покажут все что будет в ДЕМО, драки, графику, визуализацию, AI, световые
эффекты, магия, NPC, короче все что вы еще не видели. Посмотрите на обновленный
двигатель. Короче другими словами основная работа, над самим двигателем переходит
на стадию завершения. Теперь только штамповка и безумная красота нашего МИРА.
Как говорится чем больше тем лучше. Ну а потом подождем какого нибудь КОНКУРСА,
Ха-ха-ха. Мы надеемся на успех." Я тоже надеюсь на ваш успех
и жду скриншоты! :-)
Дмитрий Хороших (aka David Good)
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ В КОМПЬЮТЕРНЫХ ИГРАХ
Продолжение.
Уклонение
Продолжу
свою статью разговором о явлении
противоположном преследованию - об
уклонении. Чтобы заставить объект, которым
управляет компьютер, уклоняться от игрока
нужно сделать в точности противоположное
предыдущим действиям. Т.е. поменять плюс на
минус, а минус на плюс. Или, в нашем случае, Dec
на Inc, а Inc на Dec.
Листинг
1.2. показывает это:
`Мозг :-) врага:
Как видите, ничего
сложного. Т.к. шар компьютера перемещается
теперь самостоятельно, т.е. куда ему "заблагорассудится",
я вынужден был добавить код, препятствующий
его выходу за пределы матрицы.
Чтобы увидеть этот
алгоритм в действии, скопируйте код из
предыдущего листинга в редактор и замените
код преследования на код уклонения из
листинга 1.2.
Шаблоны В небезызвестной игре Galaxian маленькие космические корабли пришельцев делают несколько кругов, стреляют в вас некоторое время, а затем возвращаются на прежнее место в стаю своих сородичей. Когда они выполняют эти движения, то всего лишь следуют командам, заранее написанных шаблонов. Конструирование шаблонов чрезвычайно легкое занятие и они нашли применение во многих играх. Шаблоны чаще всего представляют собой массив координат для объекта. Массивы координат создают двумя способами - либо набирают их вручную, либо в специальном редакторе просто указывают путь для объекта и сохраняют в файле. Последний способ используется во всех современных играх. Вспомним небезызвестную игру Unreal. Все печатные издания посвященные компьютерным играм восхищались не только великолепной графикой, но и необычно высоким интеллектом монстров для игр того времени. На самом же деле интеллект монстров в игре представлял собой удачную комбинацию алгоритма преследования, фреймовой и скелетной 3D анимации и шаблонов. Возьмем к примеру самого агрессивного и коварного монстра этой игры:
К сожалению не знаю как он называется. Алгоритм его действий достаточно прост. После запуска уровня монстр находится в спокойном состоянии и просто стоит на месте или совершает обход территории (о том как он это делает, читайте ниже). Как только игрок приближается к монстру на определенное расстояние включается алгоритм преследования комбинированный с алгоритмом обхода препятствий. Теперь посмотрим, что происходит, когда игрок стреляет в монстра. Вот здесь и срабатывает один из шаблонов уклонения от пуль. Двигатель игры начинает воспроизводить анимацию прыжка с переворотом и одновременно выполняет шаблон - перемещение по кривой в сторону. Слаженное выполнение анимации и шаблона создает иллюзию осмысленного уклонения монстра от пуль игрока. Все достаточно просто, но нам кажется, что монстр наделен разумом. Кто помнит, этот монстр прыгал и вправо и влево. Для этого использовались две анимации и два шаблона. Нужный шаблон выбирался в зависимости от того, какая сторона была свободна от препятствий для прыжка. Если прыгнуть было невозможно - включался алгоритм уклонения и монстр убегал за угол. В некоторых случаях мы можем выбирать шаблоны случайным образом и это уже похоже на некое подобие мыслительного процесса, состоящего из двух стадий. Случайное число подается на вход селектора шаблонов, который выбирает новый шаблон для игры.
По аналогии с нервной системой, случайное число можно представить как нервный импульс, а выбранный шаблон действий - реакцию на него. Пути А сейчас я расскажу вам о том, как заставить монстра совершать обход территории. Прогуливающийся монстр производит на нас впечатление разумного существа, но на самом деле здесь так же действует специальный вариант того же шаблона. На терминологии дизайнеров уровней такие шаблоны называются путями. Пути, как и шаблоны, представляют собой набор координат в пространстве. Самый простой вариант присутствует в приставочной игре "Super Mario". Каждый, кто играл в эту игру, наблюдал как, например, улитка ползала по островку в бесконечном цикле вперед и назад. Ее путь состоял всего из двух координат. В более сложных путях их может быть десять и более. Далее, двигателю игры, остается только перемещать объект от точки к точке. При этом мы должны не забывать воспроизводить анимацию ходьбы (если это, например, гоблин) и поворачивать объект так, чтобы он смотрел на следующую точку. Конструирование путей (как и шаблонов) вручную не благодарное занятие, а при конструировании их на DarkBASIC еще и не для слабонервных. В Microsoft C++ или Microsoft Visual Basic мы можем присваивать элементам массива все числа в одной строке. При программировании на DarkBASIC у нас такой возможности нет. Единственное, что можно попробовать в этом случае - написать шаблон или путь в файле, а затем загружать по мере необходимости в массив функцией Load Array. Созданием путей вручную уже никто не занимается, это делается в редакторе уровней - мы просто расставляем точки на уровне, объединяем их в путь и назначаем объекту. Подведу итог рассказа о путях листингом 1.3., демонстрирующим применение путей. Листинг 1.3.:
`Стандартные настройки
` СтолбыDim mdl_Columns(2) mdl_Columns(1) = 2 mdl_Columns(2) = 3 ` Путь перемещения шара компьютера - десять координат X и ZDim pth_Enemy#(10, 2) pth_dot = 1 pth_Enemy#(1,
1) = 500
`Столбы position object
mdl_Columns(1), 500, 200, 700
`Получим высоту ландшафта под шаром компьютера
После того, как вы узнали, что такое шаблоны и пути, наверняка у вас возник вопрос - чем же отличаются шаблоны от путей? Координатами. Когда мы создаем уровень и расставляем в нем пути для объектов нам заранее известны координаты всех точек в уровне. В случае с шаблонами это не так. Объект, управляемый искусственным интеллектом, может оказаться в любой точке уровня, поэтому мы не можем заранее указать точные координаты в шаблоне. В случае с шаблонами мы указываем относительные координаты, указывающие не конкретную точку в уровне, а смещение относительно текущей позиции объекта. СЛУЧАЙНЫЕ ПЕРЕДВИЖЕНИЯЧто я понимаю под случайными передвижениями? Это выполнение персонажем какого-нибудь не предсказуемого действия. Нечто подобное было описано в предыдущей главе. Однако, мы можем расширить эту концепцию не только выбирая способ реагирования, но и определяя, нужна ли реакция как таковая. Случайные передвижения используются во многих компьютерных играх как один из способов реагирования виртуального мира на действия игрока. Такой образ действий можно назвать "неявной логикой". Неявная логика помогает принять решение при отсутствии части необходимой информации, или полном ее отсутствии. В играх мы можем использовать случайные передвижения и неявную логику для выбора траекторий или действий монстров. К примеру, когда вы сталкиваетесь с решением некоторого вопроса, такого как обход препятствия, возникшего на вашем пути, вы попытаетесь обойти его двигаясь направо или налево. Если все варианты равны между собой и одинаково возможны, решение скорее случайно, и следовательно, является "нейвным решением". Если бы кто-нибудь спросил вас, например, почему вы решили обойти столб справа, а не слева, то вряд ли вы сумели бы внятно объяснить мотивы своего поведения. В нашем случае, "неявная логика" это случайные числа и шаблоны.Продолжение следует.
(c) 2002 Дмитрий Хороших (aka David Good) | |||
|
http://darkbasic.narod.ru - это и так понятно :-) http://virland.narod.ru - "Домашняя киностудия" http://sereda.narod.ru - "ВАЗ 1111 ОКА" |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||