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

Материал из Posmotre.li
(перенаправлено с «Поиск пути»)
Перейти к: навигация, поиск

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

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

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

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

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

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

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

  • Mummy Maze — для победы нужно пользоваться топографическим кретинизмом у врагов и заманивать их в ловушку. Причем разные враги используют разные алгоритмы передвижения (либо сначала диагональ либо вертикаль) К тому же враги при столкновениях дерутся, чем упрощают прохождение.
  • Классическая игра «Chase» образца 1976 года: здесь это не бага, а фича. Роботы-противники всегда идут в направлении игрока, и единственный способ с ними справиться — сделать так, чтобы они сталкивались друг с другом. Игра выдержала множество переработок, в процессе называлась «Escape!», «Robot Minefield», «Daleks», «robots», «Tobor», и много как ещё.
  • Общий случай для многих боевиков: любые перепады высоты являются для компьютерных противников непреодолимым препятствием, они не могут ни спрыгнуть вниз, ни залезть наверх. Если противники снабжены дистанционной атакой, они будут блуждать туда-сюда на возвышении, где они находятся, или под возвышением, где стоит игрок, время от времени стреляя в него, но если они умеют атаковать только в ближнем бою, они могут лишь бесцельно бегать туда-сюда, пока игрок не поднимется/спустится к ним сам.
  • Игры типа Lode Runner — там это багофича, позволяющая заманивать чертей в «медвежьи углы».
    • Из них игра «Клад» для компьютера «Корвет» обладала особым кретинизмом: враги наводились сначала по горизонтали, потом по вертикали. Врагам есть куда идти, но они стоят и тупят. Если в настоящем Lode Runner можно было хоть пробегать по упавшему в яму чёрту, здесь простреленная стена становилась проходимой для всех, и всё, что можно сделать — заманить его куда-то.
    • В игре Rockman для ZX-Spectrum и её порте «Тролль» для «Корвета» были разные принципы поведения вампиров (на ZX наводились по горизонтали, потом по вертикали, на «Корвете» наоборот). Многие уровни проходились совершенно по-разному (а один на «Корвете» проходился чистым везением).
  • Первые Command&Conquer и Red Alert — проблема мостов. При их пересечении техника часто создавала затор, в результате которого другие юниты (особенно автоматические харвестеры) считали мост непроходимым и направлялись в объезд через полкарты… в том числе через вражескую базу.
  • Warhammer 40,000: Dawn of War — та же фигня. Если большой отряд пехоты разделится на части чтобы пропустить по узкому проходу технику, это всё может намертво застрять, потому что отошедшие слишком далеко друг от друга пехотинцы будут отказываться продолжать движение к цели пока не соберутся в кучу, а мешающий это сделать танк не сможет никуда уехать потому что ему с обеих сторон мешают пехотинцы. Автор правки особенно часто сталкивался с этим при игре за Имперскую Гвардию, у которой армия состоит из 100500 гвардейцев и десятка юнитов техники. Даже если выехать с базы можно благодаря БТРам, то проблема может настигнуть при штурме вражеской базы, когда хочешь не хочешь, а войска придётся развернуть. Особенно весело получалось если пробку создавал огромный «Бейнблейд». А вот у орков конкретно с техникой проблем меньше, зато размеры их пехотных отрядов позволяют без неё обойтись при создании пробки.
  • Starcraft — драгунам и голиафам достались алгоритмы поиска пути от гидралисков, не учитывающие, что эти юниты вообще-то крупнее, — в результате при любой попытке пройти через узкий проход или подняться на лестнице они устраивают затор. Да и морпехи, если их слишком много, толпятся, устраивают затор и крутятся как слепые котята.
  • Игры серии Golden Axe — противники не умеют учитывать пропасти. Если на пути между ними и протагонистом находится пропасть, они без тени сомнения будут идти к нему по кратчайшему пути, шагая в бездну. Игроки этим беззастенчиво пользуются.
  • Alien Shooter — монстры умеют двигаться и стрелять только по прямой, ведущей к игроку. Если на их пути находится угол стены, они упрутся в него, бодая его головой и перебирая лапами, пока игрок сам не выйдет им навстречу, или они медленно-медленно не выйдут из-за угла, протирая головой стену. Стреляющие монстры при этом будут стрелять в направлении игрока даже в том случае, если между ними и игроком стены и толпа других монстров, чем хитрый игрок и пользуется для сокращения их поголовья.
  • Stellaris — Обычно этот троп здесь не появляется, но когда игрок заказывает подкрепления флоту, с автодолетом до него, или же сбор на определенной точке, ИИ не учитывает опасности по пути, и легко можно влезть в систему с враждебными нейтралами, левиафаном, или противниками, и поодиночке гробить суда, пока игрок не заметит косяк.
  • Космические рейнджеры 2 — Встречается в планетарных битвах, когда приказываешь толпе роботов подойти куда-либо на близкое расстояние (к примеру командуя ими в бою), они начинают добираться до него дикими зигзагами, и заезжая хрен знает куда, через все турели и врагов. Иногда еще троп встречается у противников, когда они двигаясь по воде, возле камней или разбитых баз, застревают в них намертво.
  • Spore — в «Космических приключениях» NPC охотнее пересечёт реку вплавь, чем перейдёт по мосту, и вообще довольно сильно глючит рпи взаимодействии с постройками.
  • Cities: Skylines — водители в игре очень любят игнорировать наиболее удобные дороги. Вывозить из города экспортную нефть, используя для этого чудесную эстакаду, которая напрямую соединяет район нефтяных вышек с шоссе? Нет, это не путь настоящего джедая дальнобойщика! Поедем через весь город, по узким и вечно забитым улочкам, где нельзя гнать быстрее сорока километров в час!
  • Galactic Civilizations — корабли здесь иногда могут лететь не напрямую, а каким-то странным крюком — сначала параллельно одной из сторон карты, и только потом поворачивать на цель.
  • Warframe — педаль в асфальт: мобы могут тыкаться в стекло и кружиться на месте, а роботы Корпуса иногда сбрасываются в пропасть, перепрыгивая при этом специально поставленный заборчик.
  • Supreme Commander:
    • Из-за физики всего и вся иногда юниты застревают на склоне и не могут никуда уехать. Больше всего этим страдают кибранские «богомолы» и «цари обезьян».
    • Аналогично корабли иногда натурально садятся на мель, если место в строю заставляет их встать слишком близко к берегу. Был задокументирован эпизод с линкором, который в попытках выйти с верфи натурально выбросился на сушу (и разработчики даже предвидели эту возможность!). Кибраснкие «Иерусалимы» в этом случае выпускают ноги или вообще выходят достаточно далеко на берег, и когда флот начинает движение, они от него отстают из-за низкой скорости шага и необходимости вернуться в морской режим.
    • Если приказать рабочему строить или утилизировать что-то за пределами дальности его инженерного модуля, он подойдёт к месту в упор даже если не хватает совсем чуть-чуть. А если здание строится толпой инженеров, то по мере её увеличения растёт шанс того, что следующий затупит и будет без толку кататься вокруг, пока не прикажешь повторно — тогда он начнёт строить прямо с того места, даже если ему всё равно не хватает дальности, причём в два-три раза.
    • БМК и АКБП не умеют разворачиваться на месте, поэтому иногда описывают немалые крюки, и не всегда в нужную сторону.
    • В норме бомбардировщики разворачиваются далеко от цели, описывая большой крюк, естественно, через всю базу с турелями. Но если пытаться искусственно этот крюк сократить путём спама приказами лететь в точку совсем рядом, то при получении команды атаковать самолёт может попытаться выйти на привычный путь, чем сделает всё ещё хуже.
    • По не вполне понятной причине если приказать армии длинный марш-бросок, юниты не просто разделятся в зависимости от своей скорости, а вытянутся вдоль пути в несколько линий. Если они так идут в атаку, будут подходить по два-три и умирать от превосходящих сил без всякой пользы.
  • «Механоиды» — в обеих частях есть баг, из-за которого боты зависали на месте носом вниз и вращались вокруг своей оси. Одна из возможных причин — попытка достать что-то под мостом с этого самого моста. Во второй также появились довольно частые случаи тыканья в слишком крутые подъёмы вместо поиска обходного пути, особенно если наверху есть лут или враг. Также это проблема набивших полный трюм, из-за которого подвижность глайдера снижается, и умение забираться наверх особенно. Похоже, ИИ это не учитывает.