Электронная библиотека

Хакер


Хакер

О чем думают монстры в Кваке

Xakep, номер #006, стр. 006-071-2


Бег в мешках

Как видишь, монстры могут быть крутыми до полного отпада, больше того, создать их такими гораздо проще, чем реально населяющих игры. "Но это же будет чистое жульничество! - запротестуешь ты. - Игрок и монстр находятся в разных условиях!". Ладно, создадим им "равные" условия. Пусть монстр видит и слышит точно так же, как и игрок, но дадим ему возможность и думать так же.

Вот ты стоишь в лабиринте и слышишь чьи-то шаги. Ход твоих размышлений примерно таков: "Шаги слышны спереди и слева. Там на этом уровне длинный проход без разветвлений. Если шаги будут приближаться, подожду тут и выстрелю, как только он появится. Если удаляться - быстро выскочу из-за угла и врежу ему в спину". Любой программер скажет тебе, что реализовать такой алгоритм как два пальца оплевать, так что монстр вполне способен размышлять аналогичным образом. Но у него перед тобой будет несколько преимуществ - абсолютная память, точность расчетов и скорость реакции. Тренированный человек может довольно точно определить местонахождение объекта по звуку, монстр же, если дать ему возможность пользоваться формулами акустики, сможет сделать это с абсолютной точностью. Ну а то, что у него есть возможность никогда не промахиваться, ясно. Долго ли тебе удастся продержаться против такого противника?

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

Шаг вперед и два налево

Сперва поговорим о фильме "Терминатор 2". Помнишь, как тот самый жидкометаллический Терминатор искал свою жертву? Поведение его было очень и очень разумным, он просачивался сквозь стены, преображался в разных людей и совершал другие хитроумные поступки. Но вот жертва оказывается в пределах видимости, и Терминатор превращается в тупого монстра. Он прет напролом, не обращая внимания на препятствия и противодействие неприятеля, в его жидком мозгу одна мысль - добраться до объекта преследования. Перед нами типичный пример использования алгоритма преследования.

А вот первый Терминатор (Шварценеггер) действовал в таких случаях более тонко, он не лез понапрасну под пули, а, получив критические повреждения, мог и вовсе прекратить преследование и отправиться залечивать раны. Здесь мы имеем примеры алгоритмов уклонения и убегания.

С алгоритмом преследования все ясно, в переводе с машинного на человеческий он звучит так: стремиться уменьшить разность координат своих и объекта. Убегание отличается от преследования только знаком. Стоит поменять минус на плюс, и монстр вместо того, чтобы сближаться с игроком, начнет удаляться от него. Как видишь, тут все предельно просто, существует всего по одному варианту обоих этих алгоритмов. А вот вариантов уклонения существует вагон и маленькая тележка.

Назад на стр. 006-071-1  Содержание  Вперед на стр. 006-071-3