Те, кто играл в бета-версию Starcraft 2, наверняка заметили, как изменился алгоритм поиска путей для юнитов.
Многое из сказанного в статье основано на личных оценках.
Я не программировал BroodWar или StarCraft 2 и некоторые выводы будут основаны на моих догадках.
Также не верьте на 100% тому, что я говорю, попробуйте сделать выводы сами.
В статье будут как факты, так и предположения.
Перевод статьи Механика поиска пути в Starcraft 2
Поиск маршрута
StarCraft 2 использует алгоритм поиска пути, называемый «стаей» или «роевой ИИ», который пытается координировать движение таких юнитов, как косяк рыб или стая птиц.Похоже, что StarCraft 2 использует усовершенствованный алгоритм, который находит минимальное количество контрольных точек и позволяет юнитам самостоятельно прокладывать плавный маршрут, чтобы избежать препятствий или других юнитов.
Что касается достигнутых результатов, Blizzard проделали большую работу над алгоритмом.
Конечно, это закрытая территория и подробной информации о ней нет. Но тот факт, что 200 юнитов перемещаются по карте безупречно, говорит о том, что алгоритм работает эффективно.
Подобные технологии требуют больших усилий игрового сообщества, а потому Blizzard не могла игнорировать эту проблему.
Когда я начал играть в BroodWar, я потратил много времени, пытаясь понять, как это работает. В BroodWar поиск пути работает немного по-другому.
На изометрической карте юнит может двигаться только в 8 направлениях и вам не придется тратить много процессорного времени на алгоритм.
Следовательно, алгоритм поиска маршрута в данной ситуации может быть основан на алгоритме А* (A-Star – волновой алгоритм ) и глядя на передвижение юнитов, я думаю, что это предположение очень близко к истине.
Применение алгоритма A-Star в broodWar
Что видит игрок в этой ситуации?
Карта покрыта большим количеством узлов, как тайлов.
Попав в узел, отряд знает, куда двигаться дальше (каждый узел связан с возможными направлениями движения) и так далее, пока не достигнет пункта назначения.
Ориентирами становятся узлы, через которые прошел агрегат. Но StarCraft 2 позволяет избегать столкновений, избегая других юнитов на маршруте малого радиуса, а в BroodWar юниты конкурируют за узлы.
Это основная причина, почему в StarCraft 2 окружающая среда лучше, чем в BroodWar, но она имеет и противоположный эффект: юниты разбегаются при движении навстречу друг другу.
Муталиски выбирают разные точки привязки при повороте на 180 градусов.
Попытка смоделировать алгоритм BroodWar путем указания большого количества ключевых точек.
Разница в том, что в BroodWar юниты используют одни и те же ключевые точки, согласно алгоритму А*, продвигаясь шаг за шагом.
А в StarCraft 2 для каждого юнита просчитывается отдельный маршрут и используется минимальное количество узлов.
Защита от столкновений
В BroodWar защита от столкновений тоже более примитивна.Отряд избегает столкновений, останавливаясь и позволяя другому пройти, или рассчитывая новый маршрут движения.
В BroodWar при разведке с рабочими часто можно увидеть ситуацию, когда один игрок останавливает разведчика своим отрядом, а другой пытается обойти препятствие, либо оба игрока пытаются таким образом задержать друг друга.
В StarCraft 2 юниты избегают столкновений и препятствий, меняя свой маршрут. Логично предположить, что у каждого агрегата есть датчик столкновения, который в нужный момент подаст сигнал об обходе препятствия.
Это также позволяет юнитам сливаться или разделяться без необходимости рассчитывать совершенно новый путь или терять импульс.
В худшем случае юниты могут игнорировать радиус столкновения, что обеспечивает более плавное движение и более высокую общую эффективность движения.
OpenSteer : Библиотека с открытым исходным кодом для обхода препятствий.
Зерги BroodWar решают, кто прибежит первым.
А в StarCraft 2 зерги начинают разворачиваться заранее.
Большому количеству поклонников BroodWar новый алгоритм не нравится, и на это есть веские причины.
Одна из наиболее эффективных тактик в начале игры — фланговое и окружение.
Но, если подразделения противника будут двигаться близко друг к другу, то окружение будет не столь эффективным.
Зерглинги наносят такой большой урон морским пехотинцам, когда они не стоят в куче, потому что морские пехотинцы атакуют на расстоянии, а зерглинги этого не делают. Если уменьшить «площадь поверхности» вашей армии (например, расположить ее по кругу), то юниты будут получать гораздо меньше урона.
Соответственно, чем больше численность армии, тем больше эффект от такой тактики.
Flash vs Effort (3-я финальная игра OSL).
Причалы Флэша расположены довольно далеко друг от друга.
Поэтому их перебили набежавшие с фланга зерглинги.
Это стоило Флэшу победы
выводы
Другая проблема заключается в том, что в идеале количество усилий, затрачиваемых на движение подразделения, должно напрямую коррелировать с его эффективностью.Те.
за это должны быть наказаны игроки, не контролирующие свои отряды.
Но похоже, что в Starcraft 2 алгоритм может управлять юнитами лучше, чем игрок, а значит, вы получите противоположный эффект от своих действий.
Я думаю, что «неправильное» перемещение юнита может нанести ущерб планам новичков, и для Blizzard нет ничего хуже, чем показать, что игра несовершенна.
Я также считаю, что юниты должны убегать при неосторожном обращении, и наоборот. Людей не следует заставлять «бороться с интерфейсом», чтобы создать баланс в игре.
Хочу добавить, что с математической точки зрения Blizzard разработала очень хороший алгоритм.
Они должны были это опубликовать.
Примечание: статья написана до официального релиза SC2. Теги: #StarCraft 2 #игры #Алгоритмы #Алгоритмы
-
Бета-Тестирование
19 Oct, 24 -
Жизненная Проверка Закона Мура
19 Oct, 24 -
22 Августа — Alfa Js Meetup Спб
19 Oct, 24 -
Инвестиции В Ит Вырастут До $1,48 Трлн
19 Oct, 24