Каждый раз, когда техно-энтузиасты на Хабре начинают петь оды ИИ, который вот-вот заменит всех разработчиков, меня охватывает легкий скепсис. Дело в том, что многие простые задачи совсем не так просты, как кажутся нейросетям или продакту. Знаменитое: “да что там делать, вон ИИ отдай, к вечеру уже на прод зальете”, обычно открывает такую кроличью нору, что проваливаться и падать там можно неделями, а приземление оказывается очень болезненным. 

Вот казалось бы, что сложного, сделать дверь в игре? В 2014 году у Liz England вышло отличное эссе “Проблема Двери”, где Лиза описывает 22 логических вопроса, на которые должен ответить гейм-дизайнер при установке двери в игре. Эссе стало настолько классическим, что в сабредите r/GameDesign автомод прикрепляет ссылку на него в каждый тред. При этом эссе явно выходит за границы геймдева и становится универсальным, показывая, что кажущаяся простота в нашем деле часто не является таковой. Это касается и дверей в игре, и “просто логина на сайте”, и задачи вызова лифта, и визуализации прогресса ожидания и ещё тысячи вещей, необходимость детального продумывания которых менеджментом обычно в расчет не берется.

Поскольку просто переводить эссе - дело неблагодарное  (с переводом справится даже переводчик без ИИ), я буду разбавлять вопросы Лизы Английской примерами, где эти правила были либо интересно обыграны разработчиками, либо наоборот - проигнорированы и это привело к забавным багам.

Итак, вопрос первый: будут ли в вашей игре двери?

  1. Если да, то может ли игрок их открывать?

  2. Все ли двери в игре можно открыть?

  3. Или некоторые двери - просто декорация?

В Minecraft (до версии Village & Pillage) был эпичный баг: механикой игры дом определялся как деревянная дверь с "внутренней" и "внешней" стороной. Игра сравнивала 5 блоков за дверью и 5 блоков перед ней и считала, что та сторона, где больше "крыши" (крышей считается непрозрачный блок на любой высоте, который блокирует прямой солнечный свет) - это "внутри", а если таких блоков поровну, то дверь вообще не считается домом.

Чтобы сделать "деревню" и зареспавнить голема, игроку нужно было набрать определенное количество дверей-домов в радиусе. Продвинутые игроки быстро сообразили: если алгоритм считает дверь домом, можно строить «квартиры» из одной двери и двух блоков - и фармить голема без лишних усилий 

Тяп-ляп, и “дом” сдан. Почти как в жизни :)
Тяп-ляп, и “дом” сдан. Почти как в жизни :)

4. Как игрок отличит одно от другого?

В игре The Stanley Parable, реализованной на движке Unity и работающей в жанре визуальной новеллы, рассказчик требует от игрока идти в красную дверь.

Если игрок идет в синюю, его возвращают к выбору двери. На очередной “неправильный” выбор игра физически переносит синюю дверь за спину игроку и рисует стрелку к красной. При этом в синюю дверь по-прежнему можно войти, но она ведет в Unfinished Section с техническими текстурами .

The Stanley Parable - Blue door / Red door endings

5. Открываемые двери зелёные, закрытые - красные? Перед заколоченными навалена рухлядь? Или вы просто убрали дверные ручки и решили, что этого достаточно?

6. Можно ли двери запирать и отпирать?

7. Как игрок понимает, что дверь заперта, но откроется - в отличие от двери, которая не откроется никогда?

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

8. Знает ли игрок, как открыть запертую дверь? Нужен ли ключ? Взлом консоли? Решение головоломки? Или нужно дождаться определённого момента в сюжете?

9. Есть ли двери, которые открываются, но войти в них нельзя?

10. Откуда появляются враги? Вбегают через двери? Запираются ли эти двери после?

В Cyberpunk 2077 (даже после нескольких первых патчей) копы NCPD не входили через двери, а сразу спавнились за спиной игрока. Иногда прямо между ним и стеной. 

Видео не привожу из-за обилия сцен насилия, но вот ссылка для желающих.

11. Как игрок открывает дверь? Подходит - и она сама едет в сторону? Распахивается? Нужно нажать кнопку?

В игре Hitman: World of Assassination двери могли не открываться, если Агент 47 стоял слишком близко - анимация требовала пространства перед дверью, и если 47 или предмет на полу стояли слишком близко, дверь не открывалась.

12. Издает ли она звук при открытии?

В Alien Isolation звук открытия двери похож на звуки Чужого. Это было сделано намеренно, чтобы усилить атмосферу страха в игре. Плюс, сам звук открытия привлекал Чужих в округе.

13. Запираются ли двери за спиной у игрока?

14. Что происходит, если игроков двое? Дверь запирается только после того, как оба прошли?

В игре Half Life есть арена Surface Tension, в которой есть NPC-персонаж Барни, важный для сюжета. Если Барни умрет, сюжет не пойдет дальше. 

Чтобы Барни случайно не умер, конкретно в этой локации у двери прописан damage −1. Т.е. при взрыве двери вас и Барни не сечет осколками, а в прямом смысле лечит. Чем и стали активно пользоваться спидранеры.

15. А если уровень огромный и целиком не помещается в память? Если один игрок остался позади, пол может уйти у него из-под ног. Что делать?

16. Запрещать второму игроку двигаться дальше, пока оба не окажутся в одной комнате?

17. Телепортировать отставшего?

18. Какого размера дверь?

19. Достаточно ли она велика, чтобы игрок мог пройти?

В Half-Life: Alyx, которая была сделана для VR, крюк ломика незаметно цеплялся за дверной косяк. Игрок шел дальше, а ломик оставался висеть на двери. Valve пробовала отключать физику конкретно у  ломика, но неизменно ломала что-то другое. В итоге символ серии целиком выпилили из игры.

20. А если игроков двое? Если первый встал в проходе - он мешает второму?

21. А союзники, которые идут следом? Сколько их должно пройти, не застряв?

22. А враги? Мини-боссы крупнее человека - они тоже должны пролезать в дверь?

В Fallout 4 скрипт каравана иногда выбирает точку спавна внутри здания поселения, и двухголовый брамин с большим грузом не пролезает в дверь и блокирует её. Из той же серии: спутники, оказавшиеся слишком далеко в момент перехода через дверь, перестают следовать за игроком.

На этом вопросы заканчиваются. И как бы забавно они не звучали, по факту работа с дверьми в геймдеве оказывается одной из наиболее сложных. 

В интервью с создателями Ведьмака 3, авторы вспоминали: в дополнении “Кровь и Вино” есть квест на осаду замка Дун Тынне. Квестовая команда хотела заблокировать все дома на время миссии. Но логика блокировки была написана так, что игра не помнила исходное состояние двери - и после квеста все двери в игре просто открывались. Включая проходы в декоративные дома, под которыми даже не было земли и войдя в которые Геральд проваливался в пустоту. В итоге дизайнеру пришлось вручную пройти через каждую дверь локации и проставить тег «эта дверь была закрытой, и после квеста должна остаться закрытой».

Заключение

Иронично, что последняя история с ручным обходом всех дверей выглядит вообще как иллюстрация ко всей идее “быстренько дверь мне запили”. Менеджмент искренне считает, что там работы максимум на час, а команда тратит месяц на работу по фиче. И еще черти-сколько времени на ее поддержку. 

Еще более иронично, что Liz England написала своё эссе еще в 2014 году и с тех пор мало что изменилось. Конечно, теперь у нас есть ИИ и это ему можно сказать «включи вот эту фичу и залей на прод». И он даже начнет что-то там генерировать. Но сколько времени уйдет на доработку логики позже? И какова будет цена этих доработок?

Кстати, а поделитесь в комментариях, была ли у вас была такая же «дверь»? Задача, которая пришла как тривиальная и неожиданно (или ожидаемо) превратилась во что-то большое и болезненное?


Размещайте облачную инфраструктуру и масштабируйте сервисы с надежным облачным провайдером Beget.

Эксклюзивно для читателей Хабра мы даем бонус 10% при первом пополнении.

Воспользоваться