Топографический кретинизм у ИИ

Материал из Posmotreli
Перейти к навигации Перейти к поиску

Бойцы, слушай мою команду! Шагом марш в пункт В, координаты такие-то. Вперёд!

Эй, вы куда! Кратчайший путь — вон же, вы почему по этой дороге пошли?!

Так, ну и какого хрена вы устроили затор в этом узком проходе?! Проходите по очереди, не толпитесь здесь!

Стой, куда пошёл?! Этот недоумок, пока остальные столпились в узком проходе, решил обойти его стороной… прямо через позиции врага!

Так, проход преодолели… а где остальные? Вас же должно было быть больше? Что значит отстали в пути?

Знакомьтесь: топографический кретинизм у ИИ, частный случай искусственного идиота, следствие проблем с алгоритмом поиска пути, головная боль повелителей зелёной рамки. Чаще всего появляется в стратегиях в реальном времени, но встречается и в других жанрах.

Примеры[править]

  • Act of War: Direct Action: юниты обожают срезать дорогу через вражескую базу, а ремонтный Хамер ТГК легко давит союзною пехоту.
  • Серия игр «В тылу врага», и прочие игры на GEM Engine: солдаты не различают воду от трясины, и пытаются всё время переплыть вплавь. По Воде солдат поплывёт, в трясине — тут же погибнет: её пересечь кроме как в обход можно только при помощи авиации или морского транспорта. Техника же может утопиться под водой или насмерть застрять где-нибудь.
  • Mummy Maze — для победы нужно пользоваться топографическим кретинизмом у врагов и заманивать их в ловушку. Причем разные враги используют разные алгоритмы передвижения (либо сначала диагональ либо вертикаль) К тому же враги при столкновениях дерутся, чем упрощают прохождение.
  • Классическая игра «Chase» образца 1976 года: здесь это не бага, а фича. Роботы-противники всегда идут в направлении игрока, и единственный способ с ними справиться — сделать так, чтобы они сталкивались друг с другом. Игра выдержала множество переработок, в процессе называлась «Escape!», «Robot Minefield», «Daleks», «robots», «Tobor», и много как ещё.
  • Общий случай для многих боевиков: любые перепады высоты являются для компьютерных противников непреодолимым препятствием, они не могут ни спрыгнуть вниз, ни залезть наверх. Если противники снабжены дистанционной атакой, они будут блуждать туда-сюда на возвышении, где они находятся, или под возвышением, где стоит игрок, время от времени стреляя в него, но если они умеют атаковать только в ближнем бою, они могут лишь бесцельно бегать туда-сюда, пока игрок не поднимется/спустится к ним сам.
  • Игры типа Lode Runner — там это багофича, позволяющая заманивать чертей в «медвежьи углы». И многие уровни были бы практически непроходимыми, добавь разработчики ботам немножко ума, поэтому багофичу нигде не трогают.
    • Из них игра «Клад» для компьютера «Корвет» обладала особым кретинизмом: враги наводились сначала по горизонтали, потом по вертикали. Врагам есть куда идти, но они стоят и тупят. Если в настоящем Lode Runner можно было хоть пробегать по упавшему в яму чёрту, здесь простреленная стена становилась проходимой для всех, и всё, что можно сделать — заманить его куда-то.
    • В игре Rockman для ZX-Spectrum и её порте «Тролль» для «Корвета» были разные принципы поведения вампиров (на ZX наводились по горизонтали, потом по вертикали, на «Корвете» наоборот). Многие уровни проходились совершенно по-разному (а один на «Корвете» проходился чистым везением).
    • И вообще в клонах старых аркадных игр ИИ используется древний и тупой, ещё с 80-начала 90 годов. Ведь такие игры как правило казуальные, штампованые, и допиливать ИИ до вменяемого состояния разрабы не хотят, «денег нету», к тому же аудитория при хорошем ИИ получать удовольствие не сможет (когда на самом деле наоборот: она раскатывает врагов по полу, скучает и уходит).
  • Первые Command & Conquer и Command & Conquer: Red Alert — проблема мостов. При их пересечении техника часто создавала затор, в результате которого другие юниты (особенно автоматические харвестеры) считали мост непроходимым и направлялись в объезд через полкарты… в том числе через вражескую базу.
  • Warhammer 40,000: Dawn of War — та же фигня. Если большой отряд пехоты разделится на части чтобы пропустить по узкому проходу технику, это всё может намертво застрять, потому что отошедшие слишком далеко друг от друга пехотинцы будут отказываться продолжать движение к цели пока не соберутся в кучу, а мешающий это сделать танк не сможет никуда уехать потому что ему с обеих сторон мешают пехотинцы. Автор правки особенно часто сталкивался с этим при игре за Имперскую Гвардию, у которой армия состоит из 100500 гвардейцев и десятка юнитов техники. Даже если выехать с базы можно благодаря БТРам, то проблема может настигнуть при штурме вражеской базы, когда хочешь не хочешь, а войска придётся развернуть. Особенно весело получалось если пробку создавал огромный «Бейнблейд». А вот у орков конкретно с техникой проблем меньше, зато размеры их пехотных отрядов позволяют без неё обойтись при создании пробки.
  • Starcraft — драгунам и голиафам достались алгоритмы поиска пути от гидралисков, не учитывающие, что эти юниты вообще-то крупнее, — в результате при любой попытке пройти через узкий проход или подняться на лестнице они устраивают затор. Да и морпехи, если их слишком много, толпятся, устраивают затор и крутятся как слепые котята.
  • Игры серии Golden Axe — противники не умеют учитывать пропасти. Если на пути между ними и протагонистом находится пропасть, они без тени сомнения будут идти к нему по кратчайшему пути, шагая в бездну. Игроки этим беззастенчиво пользуются.
    • Впрочем, в третьей части противники таки научились перепрыгивать пропасти. Но не все.
  • Все части Baldur's Gate и Icewind Dale — ровно то, что написано в начале статьи. Особенно усугубляется ближе к концу игры, когда у вас появляются персонажи, которые по тем или иным причинам движутся быстрее других.
  • Alien Shooter — монстры умеют двигаться и стрелять только по прямой, ведущей к игроку. Если на их пути находится угол стены, они упрутся в него, бодая его головой и перебирая лапами, пока игрок сам не выйдет им навстречу, или они медленно-медленно не выйдут из-за угла, протирая головой стену. Стреляющие монстры при этом будут стрелять в направлении игрока даже в том случае, если между ними и игроком стены и толпа других монстров, чем хитрый игрок и пользуется для сокращения их поголовья.
  • Stellaris — Обычно этот троп здесь не появляется, но когда игрок заказывает подкрепления флоту, с автодолетом до него, или же сбор на определенной точке, ИИ не учитывает опасности по пути, и легко можно влезть в систему с враждебными нейтралами, левиафаном, или противниками, и поодиночке гробить суда, пока игрок не заметит косяк.
    • Лечится «костылём» в виде запрета на влёт в ту или иную систему.
  • Космические рейнджеры 2 — Встречается в планетарных битвах, когда приказываешь толпе роботов подойти куда-либо на близкое расстояние (к примеру командуя ими в бою), они начинают добираться до него дикими зигзагами, и заезжая хрен знает куда, через все турели и врагов. Иногда еще троп встречается у противников, когда они двигаясь по воде, возле камней или разбитых баз, застревают в них намертво.
  • Spore — в «Космических приключениях» NPC охотнее пересечёт реку вплавь, чем перейдёт по мосту, и вообще довольно сильно глючит рпи взаимодействии с постройками.
  • Cities: Skylines — водители в игре очень любят игнорировать наиболее удобные дороги. Вывозить из города экспортную нефть, используя для этого чудесную эстакаду, которая напрямую соединяет район нефтяных вышек с шоссе? Нет, это не путь настоящего джедая дальнобойщика! Поедем через весь город, по узким и вечно забитым улочкам, где нельзя гнать быстрее сорока километров в час, и где грузовик утонет в бездорожье!
  • Galactic Civilizations — корабли здесь иногда могут лететь не напрямую, а каким-то странным крюком — сначала параллельно одной из сторон карты, и только потом поворачивать на цель.
  • Warframe — педаль в асфальт: мобы могут тыкаться в стекло и кружиться на месте, а роботы Корпуса иногда сбрасываются в пропасть, перепрыгивая при этом специально поставленный заборчик.
  • Supreme Commander — если бы существовал приз за самых тупых юнитов, он определённо достался бы этой игре:
    • Из-за физики всего и вся иногда юниты застревают на каком-нибудь крутом склоне и не могут никуда уехать. Больше всего этим страдают кибранские «богомолы» и «цари обезьян».
    • Да в общем-то кто угодно может игнорировать приказы двигаться и на ровном месте. Чтобы вылечить таких, приходится терять время на многократное закликивание в разные точки рядом, чтобы он с каждой командой понемногу поворачивал и, наконец, пошёл нормально.
    • Корабли иногда натурально садятся на мель, если место в строю заставляет их встать слишком близко к берегу. Был задокументирован эпизод с линкором, который в попытках выйти с верфи выбросился на сушу (и разработчики даже предвидели эту возможность!). Кибраснкие «Иерусалимы» в этом случае выпускают ноги или вообще выходят достаточно далеко на берег, и когда флот начинает движение, они от него отстают из-за низкой скорости шага и необходимости вернуться в морской режим.
    • Если приказать рабочему строить или утилизировать что-то за пределами дальности его инженерного модуля, он подойдёт к месту в упор даже если не хватает совсем чуть-чуть. А если здание строится толпой инженеров, то по мере её увеличения растёт шанс того, что следующий затупит и будет без толку кататься вокруг, пока не прикажешь повторно — тогда он начнёт строить прямо с того места, даже если ему всё равно не хватает дальности, причём в два-три раза.
    • БМК и АКБП не умеют разворачиваться на месте, поэтому иногда описывают немалые крюки, и не всегда в нужную сторону.
    • В норме бомбардировщики разворачиваются далеко от цели, описывая большой крюк, естественно, через всю базу с турелями. Но если пытаться искусственно этот крюк сократить путём спама приказами лететь в точку совсем рядом, то при получении команды атаковать самолёт может попытаться выйти на привычный путь, чем сделает всё ещё хуже.
    • Истребители тоже тупят при некоторых манёврах и выполняют их с опозданием.
    • По не вполне понятной причине если приказать армии длинный марш-бросок, юниты не просто разделятся в зависимости от своей скорости, а вытянутся вдоль пути в несколько линий. Если они так идут в атаку, будут подходить по два-три и умирать от превосходящих сил без всякой пользы. А иногда они наоборот смертельно тормозят, пытаясь сначала собраться в кучку и потом куда-то идти вместо того чтобы каждому двигаться кратчайшим путём.
    • Транспорта имеют склонность высаживать юнитов довольно далеко от указанных точек.
  • «Механоиды» — в обеих частях есть баг, из-за которого боты зависали на месте носом вниз и вращались вокруг своей оси. Одна из возможных причин — попытка достать что-то под мостом с этого самого моста. Отдельно во второй они вскоре после загрузки локации едут к строению и ждут, пока игра выпишет другой пункт назначения.
    • В первой части одна группа Диких спавнится в озере лавы и вообще не пытается его покинуть.
    • Во второй также появились довольно частые случаи тыканья в слишком крутые подъёмы вместо поиска обходного пути, особенно если наверху есть лут или враг. Также это проблема набивших полный трюм, из-за которого подвижность глайдера снижается, и умение забираться наверх особенно. Похоже, ИИ это не учитывает.
  • World of Warships — «Система избегания столкновений» В теории, помогает нубам не врезаться в сушу/сокомандников увлекшись стрельбой. На практике — часто срабатывает там где не надо, а при 2 и более препятствиях с разных сторон, ведет себя совершенно непредсказуемо, практически гарантируя это самое столкновение.
  • Total War:
    • В Attila армии ИИ почему-то боятся разрушенных (ничьих) регионов и часто идут до врага в обход. В особо тяжёлых кампаниях это приводило к созданию игроками «великих стен» из уничтоженных поселений у своих границ.
    • В Medieval 2 попытка поплыть из Британии или Скандинавии в крестовый поход на Иерусалим разбивалась о массовое дезертирство — обход Пиренейского полуострова малограмотные крестоносцы принимали за позорное отклонение от цели похода, после чего убегали прямо с кораблей.
    • Также алгоритм поиска пути отрицает возможность маршрута, включающего 2 и более спуска на воду/выхода на сушу, поэтому если просто отправить отряд на другой берег залива, отряд пойдёт в обход залива, каким бы узким и глубоким он не был. По счастью, если сначала указать конечной точкой воду, а потом сушу, то алгоритм будет работать нормально.
    • Встречается и на тактической карте. Бойцы отказываются бросать своих, и если удалось связать сколько-нибудь значительную часть отряда ближним боем (например, одну колесницу из девяти), остальные тоже полезут в драку, игнорируя ваши приказы, и, скорее всего, бесславно погибнут все. Впрочем, если приказ повторить (раз десять для верности), солдаты поймут, что от них требуют отступить. Сами же отстающие вместо того чтобы обогнуть вражеский отряд пока это возможно, начинают протискиваться сквозь него, и развернутся только получив приказ бежать в обратную сторону… что вернёт в лапы врагов основную массу.
    • Лучники каким-то образом умудряются выписывать зигзаги. В одних случаях они радостно палят сквозь союзников, деревья, стены и башни, теряя об них половину стрел, в других — воображают себя орками и вместо того, чтобы стрелять поверх тех самых стен, лезут в упор по осадным башням или в ворота. А ещё они всегда, всегда перестраиваются перед атакой по приказу.
    • ИИ не вполне осмысливает край уровня: если игрок кемперит в углу, он попытается завести кавалерию в обход, но та упрётся в невидимые стены и останется стоять до прибытия основных сил. Скорее всего, под обстрелом.
    • В Medieval 2 боты игнорируют открытые их собственными шпионами ворота вражеской крепости и всё равно лезут на стены, а в Warhammer они игнорируют ворота, открытые самим игроком.
  • The Guild 2 — тут уже в дело вступают баги, из-за которых юниты могут начать на ровном месте крутить хороводы или делать крюки вокруг города, вместо того, чтобы пройти прямо. Всё это решается переконтролем, но попробуй за всеми уследи.
  • Terraria — защитить дом от хардмодных призраков с их хождением сквозь стены можно если подвесить его в воздухе: призраки начнут содержимое конструкции игнорировать. В прочем, от мотронов из солнечного затмения это не помогает.
  • В Streets of Rage Remake авторы нашли гениальный способ борьбы с сабжем: управляемого компьютером напарника почти что в любой момент можно позвать к себе (двойным нажатием кнопки «Хитрость»; ваш персонаж при этом воскликнет «Хэй!»).
  • Не стоит играть в самую первую версию игры Tenchu, вышедшей раньше всех прочих в одноимённой франшизе! Только в её доработанную версию, именуемую Tenchu Stealth Assassins. Дело в том, что в пилотной (ванильной, нулевой) версии интеллект врагов не был проработан как следует, и то и дело случались казусы вроде «Два самурая из патрулирующих локацию начали бесконечно идти прямо друг в друга, грудь в грудь, и ни один из двоих не догадывается посторониться».
  • Старая (2001 года) стратегия Fate of the Dragon — педаль как минимум до Австралии. Каждый юнит по пути заглядывает во все шахты, здания (если в городе), если юнитов несколько — неизбежна давка. На пути поворот? Столпятся перед ним так как «по прямой нельзя!». Нужно обойти препятствие? Подходит, упирается, отходит в сторону… у него в графической голове видимо появляется мысль «я же отклонился от пути!», и он возвращается к препятствию, видит, что нельзя пройти, отходит в сторону… и все по кругу до тех пор пока не погибнет, или игрок лично за руку мышкой не отведет куда нужно. Одно радует: юниты противника творят тоже самое, так что сражение превращается в броуновское движение.