что такое бэктрекинг в играх
Еще раз о регекспах, бэктрекинге и том, как можно положить на лопатки JVM двумя строками «безобидного» кода
Раннее утро, десятая чашка кофе, безуспешные попытки понять почему ваше клиентское (или еще хуже – серверное) java-приложение намертво зависло при вычислении простого регекспа на небольшой строке… Если подобная ситуация уже возникала в вашей жизни, вы уже наверняка знаете про бэктрекинг и темную сторону регулярных выражений. Остальным – добро пожаловать под кат!
Бэктрекинг, или вечное ожидание результата
Проблема бэктрекинга при матчинге регулярных выражений уже неоднократно поднималась в различных статьях на хабре (раз, два, три), поэтому опишем ее суть без погружения в детали. Рассмотрим простой синтетический пример – типичный экземпляр из так называемых «evil regexes» (аналог изначально представлен тут):
Если запустить код на JDK8 (почему на более актуальных версиях воспроизводиться не будет – опишем далее), то JVM будет очень долго вычислять результат работы метода matches(). Едва ли вам удастся его дождаться, не состарившись на несколько месяцев или даже лет.
Что же пошло не так? Стандартная реализация Pattern/Matcher из пакета java.util.regex будет искать решение из теста следующим образом:
Произведем откат (backtrack) к начальному состоянию. Мы попытались захватить максимальную группу из нулей и нас ждал провал; давайте теперь возьмём на один нолик меньше. Тогда группа (0) захватит все нули без одного, снаружи группы укажет на наличие единственной группы, а оставшийся ноль не равен единице. Снова провал.
Снова откатываемся к начальному состоянию и забираем группой (0) все нули без двух последних. Но ведь оставшиеся два нуля тоже могут заматчиться группой (0)! И теперь эта группа тоже попытается сначала захватить два нуля, после чего попытается взять один ноль, и после этого произойдет откат и попытка матчинга строки уже без трех нулей.
Легко догадаться, что по мере уменьшения «начальной» жадной группы будет появляться множество вариаций соседних групп (0), которые также придется откатывать и проверять все большее количество комбинаций. Сложность будет расти экспоненциально; при наличии достаточного количества нулей в строке – прямо как в нашем примере – возникнет так называемый катастрофический бэктрекинг, который и приведет к печальным последствиям.
Представленная тестовая строка имеет длину 80 символов и сгенерирована случайным образом. Она не заставит JVM на JDK8+ работать вечно – всего лишь около 30 минут – но этого уже достаточно, чтобы нанести вашему приложению существенный вред. В случае разработки серверных приложений риск многократно увеличивается из-за возможности проведения ReDoS-атак. Причиной же подобного поведения, как и в первом примере, является бэктрекинг, а именно – сочетание квантификаторов «+» внутри группы и «<1,10>« – снаружи.
Война с бэктрекингом или с разработчиками Java SDK?
Чем запутаннее паттерн, тем сложнее для неопытного человека увидеть проблемы в регулярном выражении. Причем речь сейчас идет вовсе не о внешних пользователях, использующих ваше ПО, а о разработчиках. Так, с конца нулевых было создано значительное количество тикетов с жалобой на бесконечно работающий матчинг. Несколько примеров: JDK-5026912, JDK-7006761, JDK-8139263. Реже можно встретить жалобы на StackOverflowError, который тоже типичен при проведении матчинга (JDK-5050507). Все подобные баги закрывались с одними и теми же формулировками: «неэффективный регексп», «катастрофический бектрекинг», «не является багом».
Доработки алгоритма действительно происходили. Так, в JDK9 реализовано следующее улучшение: каждый раз, когда применяется жадный квантификатор, не соответствующий данным для проверки, выставляется курсор, указывающий на позицию в проверяемом выражении. При повторной проверке после отката достаточно убедиться, что если для текущей позиции проверка уже была провалена, продолжение текущего подхода лишено смысла и проводиться не будет (JDK-6328855, пояснение). Это позволило исключить бесконечный матчинг в тесте testRegexJDK8Only() начиная с версии jdk9-b119, однако второй тест вызывает задержки вне зависимости от версии JDK. Более того, при наличии обратных ссылок в регулярных выражениях оптимизация не используется.
Опасный враг: внешнее управление
Публикации, упомянутые в самом начале статьи, отлично раскрывают варианты оптимизации регулярных выражений, в результате чего катастрофический бектрекинг перестает быть опасным врагом; для сложных случаев потребуется дополнительная экспертиза, но в целом регулярное выражение можно почти всегда записать «безопасным» образом. Да и проверить себя тоже можно, например, на npmjs.com. Проблема остается при составлении очень сложных регулярок, а также в тех сценариях, когда регулярное выражение задается не программистом, а аналитиком, заказчиком после передачи решения, или же пользователем. В последнем случае управление сложностью регулярного выражения оказывается снаружи – и вам придется позаботиться о том, чтобы при любых условиях приложение продолжало корректную работу.
В конце января 2021 года был опубликован драфт JEP-а, в котором предлагается создать движок для регулярных выражений с матчингом за линейное время, и одним из основных подходов в реализации является именно RE2.
Может показаться, что переход на RE2/J – отличный выбор практически для каждого проекта. Какова цена линейного времени выполнения?
У RE2/J отсутствует ряд методов API у Matcher;
Синтаксис регулярных выражений совпадает не полностью (у RE2/J отсутствует часть конструкций, в том числе – обратные ссылки, backreferences). Вполне вероятно, после замены импорта ваша регулярка перестанет корректно распознаваться;
Несмотря на то, что формально код принадлежит Google, библиотека не является официальной, а основным ее мейнтейнером является единственный разработчик – Джеймс Ринг.
Разработчик фреймворка подчеркивает: «Основная задача RE2/J заключается в обеспечении линейного времени выполнения матчинга при наличии регулярных выражений от внешних источников. Если все регулярные выражения находятся под контролем разработчика, вероятно, использование java.util.regex является лучшим выбором«.
Надеюсь, этих пунктов достаточно, чтобы убедиться: RE2/J – не серебряная пуля; фреймворк не является бескомпромиссным решением для проверки на соответствие регулярным выражениям. Реализация при создании кода повлечет ограниченный функционал, а прямая замена импорта в уже существующем коде может негативно сказаться на стабильности работы приложения.
Итоги
Даже простые регулярные выражения при невнимательном написании могут сделать ваш продукт уязвимым для ReDoS.
Движков регулярных выражений, которые были бы одновременно максимально функциональны, быстры и стабильны, не существует.
Если все регулярные выражения в приложении находятся под контролем разработчика – обязательно тестируйте их, чтобы убедиться в отсутствии риска падения.
Если возможность самостоятельно задавать регулярное выражение есть не только у разработчика, то стоит реализовать защиту от вечной проверки с помощью создания таймаута или использования сторонних решений, позволяющих решать задачу матчинга за линейное время – например, таких, как RE2/J.
Что такое бэктрекинг в играх?
Многие начинающие геймеры (возраст значения не имеет), не слишком знакомые с англоязычными терминами в индустрии, задаются вопросом: что такое бэктрекинг в играх? Это слово встречается во многих обзорах, причём обязательно в негативном ключе.
И действительно, сам термин носит отрицательный эмоциональный окрас. Речь о возвращении на предыдущие локации с целью выполнения обновлённых заданий, когда ключевые персонажи и объекты располагаются в старых местах.
Яркий пример, ставший каноничным – Dragon Age 2. В ней мы получали обширные городские локации, где герою и его компании приходилось выполнять бесконечные квесты. Увы, ничего кроме города здесь нет, приходилось многократно возвращаться в старые места, выполняя там новые миссии.
Аналогичным образом были реализованы и местные лабиринты-подземелья. Ситуация доходила до абсурда, поскольку в уже изученных казематах внезапно появлялись комнаты и двери, прежде отсутствовавшие.
Бэктрекинг в играх – это злободневная проблема
Выучив окружение впервые, геймер вряд ли испытает желание изучать закоулки второй, третий, десятый раз, не получая при этом каких-то уникальных ощущений. Проблема характерна не только для низкобюджетных AAA-поделок, но и для разработок от крупных корпораций, которые стремятся сократить временные затраты до минимума. Каждое архитектурное сооружение – плод кропотливого труда, порой растягивающегося на недели и месяцы…
Иногда искусственно растягивается общая продолжительность. В Persona 5 ближе к финалу, когда к главной битве достаточно протянуть руку, открываются побочные задания, не несущие смысловой нагрузки. А потом – ещё немного, и ещё… И так на добрые 10-15 часов, что изрядно раздражает людей, желающих побыстрее узнать, чем же закончится основная история.
В школьные годы, когда времени уйма и стремишься продлить удовольствие от процесса как можно дольше, вопросов у игрока обычно не возникает. Позднее краткость становится родной сестрой таланта авторов, ведь время – единственный ресурс, который не возобновляется никогда.
Как вы воспринимаете бэктрекинг в видеоиграх? Напишите в комментариях.
Что такое бэктрекинг в играх?
«Бэктрекинг» — дословно «возврат». В видеоигровой терминологии так называют возвращение в уже пройденные локации по какой-либо причине: чтобы выполнить квест, подобрать нужный предмет или поговорить с важным НПС.
Обычно этот термин вспоминают в отрицательном ключе, когда бэктрекинга становится слишком много и он начинает раздражать. Из-за этого кажется, что бэктрекинг — зло, которого в играх быть не должно. На самом деле он есть в большинстве игр, просто появляется там в разных количествах.
Зачем нужен бэктрекинг?
На этом приёме практически построен жанр метроидвании. Например, в Ori and the Will of the Wisps постоянно встречаются участки, которые преодолеваются только с особыми умениями, открывающимися в других локациях. Это делает прохождение последовательным и заставляет постоянно возвращаться в уже пройденные места и изучать их — вдруг теперь здесь можно открыть какой-то секрет?
Бэктрекинг экономит деньги и время разработчиков. Дешевле, проще и лучше сделать меньше локаций, но насытить их контентом, чем создавать большой полупустой мир, ведь на его графическую проработку понадобятся ресурсы.
Без бэктрекинга игрок никогда не привяжется к миру. Чтобы какое-то место запало в душу, нужно вернуться в него несколько раз — так оно станет привычным и появится эмоциональная связь. Поэтому игроки хорошо запоминают города из RPG, с которыми связано большое количество квестов, такие как Новиград из The Witcher 3: Wild Hunt.
У плохих геймдизайнеров бэктрекинг служит одним из средств искусственного растягивания игры. Часто это происходит непреднамеренно в попытках добавить происходящему реализма. Так в игре с большим миром может отсутствовать система быстрых перемещений, что заставляет игрока против его воли несколько раз проходить по одним и тем же местам.
Когда бэктрекинг становится проблемой?
Бартош Вон Охман, дизайнер открытого мира The Witcher 3: Wild Hunt, сформулировал «правило 40 секунд», согласно которому именно через такой промежуток времени игрок должен встречать что-то интересное. Если он надолго остаётся без нового опыта, то быстро начинает скучать. Избыток бэктрекинга приводит к тому, что все точки интереса на повторяющихся маршрутах будут исчерпаны и игра вместо того чтобы развлекать начнёт утомлять.
Искуственный, но показательный пример. В Skyrim практически все подземелья (кроме совсем коротких) заканчиваются тайным ходом, ведущим к самому началу. А теперь представьте, что его нет. Придётся каждый раз проходить тот же уровень, но в обратную сторону. При этом ничего интересного происходить не будет, ведь все враги уже повержены, а лут собран. Учитывая, насколько длинными в Скайриме бывают данжи, вряд ли кто-то хотел бы заходить в них добровольно.
В недавно вышедшей Breathedge бэктрекинг способен довести до белого каления даже самых терпеливых игроков. По сюжету игроку постоянно приходится далеко отлетать от базы чтобы выполнить задания, а для них нужны различные предметы. Но игра никогда заранее не сообщает, что понадобится в следующий раз. Приходится прилетать на точку миссии, узнавать это, возвращаться на базу, брать нужное, возвращаться обратно… только чтобы через пять минут упереться в такой же барьер необходимости в изоленте, которую вы с собой не прихватили из-за преступно маленького инвентаря. При этом ваше путешествие каждый раз проходит через холодный, негостеприимный и не слишком живописный космос.
Похожей проблемой страдает множество инди-квестов, не дающих подбирать предметы до того как они понадобятся по сюжету. Стоящая в конце уровня дверь открывается ключом, который вы видели в самом начале, но вам не дали его взять с собой? Возвращайтесь назад и постарайтесь не уснуть во время этого увлекательного путешествия.
Как сделать бэктрекинг интересным?
Есть много приёмов, сглаживающих бэктрекинг и делающих его приятным. Самые популярные из них:
Время — невосполнимый ресурс, и люди очень злятся, когда разработчики тратят драгоценные часы их жизни впустую. Но если игра сделана грамотно, бэктрекинг никогда не будет мешать — в приятное место всегда хочется вернуться.
Что такое бэктрекинг в играх и для чего нужен
«Бэктрекинг» — дословно «возврат». В видеоигровой терминологии так называют возвращение в уже пройденные локации по какой-либо причине: чтобы выполнить квест, подобрать нужный предмет или поговорить с важным НПС.
Обычно этот термин вспоминают в отрицательном ключе, когда бэктрекинга становится слишком много и он начинает раздражать. Из-за этого кажется, что бэктрекинг — зло, которого в играх быть не должно. На самом деле он есть в большинстве игр, просто появляется там в разных количествах.
Зачем нужен бэктрекинг?
На этом приёме практически построен жанр метроидвании. Например, в Ori and the Will of the Wisps постоянно встречаются участки, которые преодолеваются только с особыми умениями, открывающимися в других локациях. Это делает прохождение последовательным и заставляет постоянно возвращаться в уже пройденные места и изучать их — вдруг теперь здесь можно открыть какой-то секрет?
Бэктрекинг экономит деньги и время разработчиков. Дешевле, проще и лучше сделать меньше локаций, но насытить их контентом, чем создавать большой полупустой мир, ведь на его графическую проработку понадобятся ресурсы.
Без бэктрекинга игрок никогда не привяжется к миру. Чтобы какое-то место запало в душу, нужно вернуться в него несколько раз — так оно станет привычным и появится эмоциональная связь. Поэтому игроки хорошо запоминают города из RPG, с которыми связано большое количество квестов, такие как Новиград из The Witcher 3: Wild Hunt.
У плохих геймдизайнеров бэктрекинг служит одним из средств искусственного растягивания игры. Часто это происходит непреднамеренно в попытках добавить происходящему реализма. Так в игре с большим миром может отсутствовать система быстрых перемещений, что заставляет игрока против его воли несколько раз проходить по одним и тем же местам.
Когда бэктрекинг становится проблемой?
Бартош Вон Охман, дизайнер открытого мира The Witcher 3: Wild Hunt, сформулировал «правило 40 секунд», согласно которому именно через такой промежуток времени игрок должен встречать что-то интересное. Если он надолго остаётся без нового опыта, то быстро начинает скучать. Избыток бэктрекинга приводит к тому, что все точки интереса на повторяющихся маршрутах будут исчерпаны и игра вместо того чтобы развлекать начнёт утомлять.
Искуственный, но показательный пример. В Skyrim практически все подземелья (кроме совсем коротких) заканчиваются тайным ходом, ведущим к самому началу. А теперь представьте, что его нет. Придётся каждый раз проходить тот же уровень, но в обратную сторону. При этом ничего интересного происходить не будет, ведь все враги уже повержены, а лут собран. Учитывая, насколько длинными в Скайриме бывают данжи, вряд ли кто-то хотел бы заходить в них добровольно.
В недавно вышедшей Breathedge бэктрекинг способен довести до белого каления даже самых терпеливых игроков. По сюжету игроку постоянно приходится далеко отлетать от базы чтобы выполнить задания, а для них нужны различные предметы. Но игра никогда заранее не сообщает, что понадобится в следующий раз. Приходится прилетать на точку миссии, узнавать это, возвращаться на базу, брать нужное, возвращаться обратно… только чтобы через пять минут упереться в такой же барьер необходимости в изоленте, которую вы с собой не прихватили из-за преступно маленького инвентаря. При этом ваше путешествие каждый раз проходит через холодный, негостеприимный и не слишком живописный космос.
Похожей проблемой страдает множество инди-квестов, не дающих подбирать предметы до того как они понадобятся по сюжету. Стоящая в конце уровня дверь открывается ключом, который вы видели в самом начале, но вам не дали его взять с собой? Возвращайтесь назад и постарайтесь не уснуть во время этого увлекательного путешествия.
Как сделать бэктрекинг интересным?
Есть много приёмов, сглаживающих бэктрекинг и делающих его приятным. Самые популярные из них:
Время — невосполнимый ресурс, и люди очень злятся, когда разработчики тратят драгоценные часы их жизни впустую. Но если игра сделана грамотно, бэктрекинг никогда не будет мешать — в приятное место всегда хочется вернуться.
Топ‑10 самых раздражающих вещей в видеоиграх
Баир «Vydar» Модонов
Как всем известно, геймеры всегда в ярости. И это объяснимо: игры просто заполнены разными раздражающими вещами. Где-то пользователей держат за идиотов, три часа объясняя, как жать на кнопки, а в другом месте выдают в напарники бойцов с интеллектом картошки. В этой статье мы поговорим об одних из самых выводящих из себя случаев.
Непропускаемое обучение
Само по себе обучение в видеоиграх — штука очень неплохая. Всегда ведь есть вероятность, что этот конкретный тайтл — первый шутер, гонка или платформер в жизни человека. Но порой (а если уж начистоту, практически постоянно) разработчики уж слишком сильно недооценивают обучаемость пользователей.
Решается всё это простой возможностью пропустить обучающий уровень. Специфические особенности управления можно указать отдельно или вынести какой-нибудь кодекс в журнале, а привязка клавиш всегда есть в настройках.
К слову, иногда в раздражающих обучениях встречаются неочевидные и очень находчивые полезные функции. В некоторых играх вас просят воспользоваться мышью или стиком, чтобы посмотреть вверх и вниз. На самом деле в этот момент разработчики не учат вас пользоваться контроллером, а определяют, нужна ли вам инверсия оси Y — она включится автоматически, если вы проведёте в обратном направлении.
Пример раздражающего непропускаемого обучения можно найти практически в любой игре. Апогей же был достигнут в Far Cry 3: Blood Dragon, где разработчики высмеяли все клише с очевидными подсказками. К несчастью, для этого пришлось все их реализовать, что очень не понравилось главному герою.
Немой главный герой
Для того чтобы главный герой игры не разговаривал, существует множество причин. Большинство из них сводится к иммерсивности: это улучшает погружение в игру, заставляя геймера почувствовать, что это именно он сейчас в трёхсотый раз спас человечество. Реплики протагониста разрушили бы этот эффект — разделили бы геймера и героя.
Несмотря на то что есть множество не просто успешных, а культовых игр с немыми главными героями, сам этот сценарный приём сильно раздражает. Особенно когда все остальные персонажи выстраиваются в очередь, чтобы пообщаться. И в этот момент, как ни иронично, та самая иммерсивность и страдает больше всего: игрок в реальной жизни может легко комментировать, но не отвечать. Поэтому очень странно выглядят все те NPC, которые обращаются к протагонисту, что-то рассказывают, задают вопросы и сами на них отвечают.
Пожалуй, самый известный из видеоигровых молчунов — это Гордон Фримен из Half-Life, немногословный профессионал, работающий без лишних вопросов и комментариев. С другой стороны, есть Артём из Metro, которому немота совершенно не идёт. В отличие от Фримена, он не только часть сообщества, но и его лидер. У него есть друзья и союзники, которых необходимо вести за собой и вдохновлять. У него, в конце концов, есть девушка, которой он так и не сказал ни единого слова.
Пустые открытые миры
Когда появились первые игры с открытыми мирами, это было похоже на чудо. Свобода идти на все четыре стороны дурманила рассудок. Когда же эти самые миры перешли в 3D и наполнились минимальной имитацией жизни, казалось, ничего лучше в индустрии уже не произойдёт. К сожалению, спустя десятки лет некоторые разработчики до сих пор в этом уверены.
Сейчас слова «огромный открытый мир» в промоматериалах вызывают уже не восторг, а скорее опасения. В последнее время мы видели слишком много банально пустых игр, главным развлечением в которых были ходьба да плавание. И хорошо, если по дороге попадались, допустим, реконструированные античные города, ведь были случаи, где вся карта — это буквально пустыня.
При этом никто не хочет признаваться, что эти открытые миры пусты. Нам обещают десятки часов игры и кучу наполнения — только все по-разному это понимают. Ты ждёшь живых (до известных пределов) социума и фауны, случайных событий и встреч, какой-то динамики, из-за которой локации со временем меняются, а вместо этого получаешь сотню разбросанных по округе перьев и флажков.
Разумеется, в качестве примера здесь отлично подходит серия Assassin’s Creed. Но в защиту франшизы скажу, что её открытые миры хотя бы красивые — мало где есть возможность побродить по Парфенону или забраться на Эйфелеву башню. Поэтому я приберёг ещё один пример — Mad Max. В этой игре вся карта представляет собой одну сплошную пустыню. Сеттинг такой, всё понятно, но сути дела не меняет.
Бэктрекинг
Проблема бэктрекинга тесно связана с открытыми мирами. В линейных играх зачастую проще спроектировать уровень таким образом, чтобы постоянно идти. Тем не менее миссии, в которых нужно бродить по локациям туда-обратно по несколько раз, встречаются повсеместно.
К счастью, в последнее время всё реже встречаются ситуации, где нужно пробиться до конца условного подземелья, а затем аналогичным образом вернуться к выходу. Однако остались другие проявления бэктрекинга: порой из-за ограниченного пространства и неудачного расположения точек интереса приходится десятки раз пробегать карту по одним и тем же маршрутам. Чтобы избежать этого, нужно уделять большое внимание дизайну уровней, чтобы показывать мир постоянно с новых сторон и он не приедался игроку.
Конечно, иногда бэктрекинг — это часть специфики жанра, например метроидваний. Однако в этом случае у игроков постоянно появляются новые возможности для исследования мира или сам мир меняется. А вот в простой RPG или экшене ситуация становится довольно скучным инструментом искусственного удлинения прохождения.
В качестве примера можно вспомнить Devil May Cry 4, где игрокам приходилось повторно зачищать знакомые уровни. И хотя геймплейно прохождения отличались из-за разных способностей героев, осадок остался. Спустя больше десяти лет после релиза геймдиректор игры Хидеаки Ицуно рассказал, что разработчики были сильно ограничены в финансировании, поэтому не смогли создать уникальные локации для Данте.
Гринд
Десятки раз ходить по одному и тому же маршруту может быть утомительно. А что, если в это время придётся ещё и что-то делать? А что, если придётся делать что-то однообразное и отупляюще скучное? В таком случае мы получим типичную гриндилку. В узком смысле слова это означает добычу ресурсов, но в более широком — любую однотипную и повторяющуюся активность.
В некоторых жанрах гринд считают практически частью очарования геймплея. Приятнее он от этого не становится, но фанаты долгой раскачки персонажей или выбивания ценного лута не возражают (ну или, по крайней мере, не так громко жалуются). Мне, например, иногда нравится погриндить — под сериал на втором мониторе получается своеобразный медитативный процесс.
Совершенно другое дело, когда гринд встречается в сюжетных играх и мешает органичному продвижению. Вспомним Mafia III, где для доступа к миссиям нужно было зачищать второстепенные активности. В более мягкой форме мы видели это в Batman: Arkham Knight — там нужно было выполнить все возможные побочные задания для получения истинной концовки. Есть ещё достижения, ради которых нужно по сто раз делать одно и то же, но это хотя бы не обязательная часть геймплея.
Здесь же можно поговорить про «губки для пуль» и «стены гринда». Зачастую в играх с системой уровней пользователей искусственно держат в определённых областях даже в открытом мире, заставляя качаться и растягивать прохождение. Ведь в противном случае они встретятся с высокоуровневыми врагами, которые почти непобедимы — уровень их здоровья настолько велик, что они становятся «губками для пуль». В The Division, например, рядовой гопник с битой становился смертельно опасным, будь его уровень хоть на один больше, чем у игрока. Для его усмирения требовалось прописать ему целый магазин из АК промеж глаз, что уж говорить о боссах.
Чужеродные механики
Все любят разнообразные игры — это замечательно, когда во время виртуальных приключений активности чередуются так, чтобы ни одна из них не приелась. Однако каждый жанр по-своему уникален, и тот факт, что ты умеешь делать шутеры, не делает тебя автоматически знатоком автосимуляторов. Поэтому, если сторонние механики внедряются спустя рукава, пусть даже «всего на один уровень», это может сильно раздражать.
Самый распространённый случай — принудительный стелс в играх, которые никакого отношения к стелсу не имеют. Ещё лучше, когда обнаружение ведёт к немедленному провалу миссии. Люди ведь явно покупают шутеры и слэшеры, чтобы в случайный момент времени 15 минут прятаться от корявой наспех собранной системы обнаружения. В эту же копилку отправляются уровни с управлением транспортом-утюгом, бессмысленные диалоговые ветки и любые другие механики, никак не связанные с жанром и вставленные просто «чтобы было».
Примеров одних только миссий с чужеродным стелсом так много, что трудно выбрать. Они были в Final Fantasy XV, GTA: San Andreas и даже в Life is Strange. Ни одна из этих игр и близко не имеет никакого отношения к скрытности: в первой нужно сражаться с огромными монстрами, во второй — устраивать хаос, а в третьей — просто следить за сюжетом.
Отдельно стоит упомянуть мини-игры. Иногда они получаются настолько удачными, что получают отдельный релиз или даже выходят в виде настольных игр. Хотя здесь речь, скорее, об исключениях из правила. Куда чаще встречаются какие-нибудь упрощённые версии судоку, крестиков-ноликов, «водопроводчика» и т. п. И ладно, если это побочная активность, но иногда на них приходится отвлекаться и по сюжету.
Миссии по сопровождению
Вспомните самый раздражающий игровой уровень в своей жизни. Не самый сложный, а именно раздражающий. Если это любая миссия по сопровождению NPC, то нас таких уже как минимум двое.
Миссии по сопровождению — один из самых распространённых тропов в геймдизайне, некоторые игры чуть ли не полностью им посвящены. В God of War центральная линия сюжета отведена развитию отношений между Кратосом и его сыном. Оно показано не только в диалогах, но и в геймплее — постепенно мальчик приносит всё больше пользы в бою. Однако куда чаще встречаются NPC, которые только мешают играть.
Эталонного NPC для миссий по сопровождению отличают три особенности. Во-первых, он всегда двигается быстрее вашего шага, но медленнее бега. Во-вторых, он либо вообще не может защитить себя, либо его обороноспособность настолько мала, что он всё равно погибает от любого косого взгляда. В-третьих, он тупой. Он будет идти вперёд под градом пуль, он застрянет, врезавшись в опавший лист дерева, и наверняка возьмёт кредит на свадьбу, если представится возможность.
Миссии с ненужными ограничениями по времени
Что? Сопровождение неигровых персонажей вас особо не трогает? Попробуем зайти с другой стороны. Миссии с ограничениями по времени тоже особой любовью в сообществе геймеров не пользуются. В 2000-х чуть ли не в каждой второй игре нас просили добраться куда-то за десять секунд или одолеть вражескую армию за полминуты, притом поводы зачастую были абсолютно надуманны.
В таймере самом по себе ничего плохого нет. Если вся суть игры завязана на том, чтобы быстро реагировать и оттачивать реакцию, то ограничения по времени могут прийтись очень кстати. Но во всех остальных ситуациях от этой механики больше вреда, чем пользы.
Особо неуместно выглядят ограничения с таймером в сюжетных играх. Пользователь не знает, что его ждёт впереди, он ещё не знаком с локациями, противниками и испытаниями, поэтому не может с первой попытки адекватно рассчитать отведённое ему время.
Помимо этого, таймеры порой сильно сбивают темп. Многим нравится проходить игры не спеша, любуясь видами, рассматривая детали или разыгрывая в бою неторопливые, расчётливые тактики. Ограничения же заставляют продвигаться максимально быстро. Плюс это создаёт некоторый фактор психологического давления — когда тебя подгоняют, это не очень-то приятно.
Микротранзакции в одиночных играх
Строго говоря, мне не нравятся микротранзакции в любых платных играх, будь то сюжетно ориентированные тайтлы, сервисы или мультиплеерные сессионки. Однако в положение разработчиков многопользовательских развлечений ещё можно войти — им нужны средства на поддержку. А вот создателей одиночных игр понять гораздо сложнее.
Главных оправданий здесь два. Во-первых, покупки косметических предметов строго необязательны и никому не вредят. Во-вторых, различного рода усилители нужны тем, у кого мало времени на игры, поэтому им нужна помощь в прохождении. Оба этих постулата хоть формально и верны, но остудить пылание частей тела пониже спины неспособны.
Во-вторых, оправдание продажи геймплейных усилителей заботой о времени геймера либо глупо, либо лицемерно, либо и то и другое. Разработчики и издатели фактически признают часть своей игры ненужной, ведь её можно пропустить за деньги. Например, в Deus Ex: Mankind Divided можно не проходить дополнительные миссии и исследовать мир ради опыта, ресурсов и снаряжения, а просто купить их. Это всё равно что в автосимуляторе вам предложат купить первое место в гонке. Если бы авторы действительно просто хотели облегчить прохождение для чрезмерно занятых геймеров, то могли добавить читы: hesoyam — и в путь!
В рамках разговора о микротранзакциях можно поныть и по поводу DLC. Раньше их выпускали спустя какое-то время, чтобы порадовать фанатов дополнительным приключением. Сейчас же это просто способ раздробить игру на части (отдельно приобретаемые части), ведь зачастую аддоны анонсируют ещё до релиза основного тайтла.
Ранний доступ AAA
Возможность представить широкой публике и потенциальным инвесторам интересный пусть и незавершённый проект спасла многих инди-разработчиков. Благодаря программам раннего доступа они смогли привлечь к себе внимание и найти средства на продолжение производства. Разве не замечательно? Ну, не совсем.
Недоделанный и изобилующий багами тайтл неизбежно портит первые впечатления о себе, и далеко не факт, что от этих недоработок удастся избавиться к релизу. В случае с инди-сценой это простительно — другого выхода может и не быть. Но когда крупные студии и издательства начинают выпускать игры в раннем доступе, трудно придумать им оправдание. К таким проектам относятся DiRT Rally от Codemasters или Baldur’s Gate 3 от Larian — обе студии хоть и независимые (Codemasters была независимой на тот момент), но далеко не маленькие.
Авторам крупнобюджетных проектов, исходя из самого названия, не нужно незамедлительное финансирование — они, в отличие от инди-разработчиков, могут подождать до релиза и не умереть от голода. Помимо этого, у них есть возможность нанимать настоящих QA-специалистов, а не пользоваться бесплатными (а иногда и приносящими деньги) багрепортами простых геймеров. Несмотря на это, многомиллиардные корпорации не стесняются требовать денег за полуфабрикат, просят помогать в его тестировании, а от всех жалоб отбиваются фразой «Это же бета, чего вы хотели?».
Это были десять (или чуть больше) самых раздражающих вещей в видеоиграх. Список, конечно, получился очень субъективным, иначе никак. Возможно, в него стоило бы внести подводные уровни вместо миссий на время, слишком ранний анонс вместо раннего доступа, а также региональные ограничения в магазинах, непропускаемые анимации или что-то ещё. Пишите в комментариях, что вас раздражает в играх больше всего.