Левел-дизайн позволяет нам создавать карты, а игрокам — получать удовольствие от геймплея. Оба эти утверждения будут работать только в том случае, если левел-дизайн поддерживает механики игры.
В этой статье я расскажу, как на проекте War Robots при создании карт мы учитываем основные механики, усиливаем их положительные стороны и сглаживаем недостатки.
Для начала немного об игре. War Robots — это мобильный сессионный PvP-шутер про огромных роботов. Игроки здесь делятся на две команды и сражаются в одном из режимов: захват маяков или дезматч. Кор-геймплей формируют следующие механики:
Стрельба;
Перемещение;
Режимы боя.
Каждая из них так или иначе влияет на облик игровых карт. О том, как учесть особенности этих механик в левел-дизайне, и пойдет речь далее.
Особенности стрельбы
Автоматическая вертикальная наводка
В War Robots игроки могут наводить прицел вручную только в горизонтальной плоскости — то есть, перемещать его влево-вправо. В вертикальной плоскости он перемещается автоматически в центр вражеского робота. Пример изображен на картинке: враг находится ниже игрока, и прицел опускается до его уровня автоматически вместе с камерой. Такая наводка упрощает управление стрельбой, но может приводить к некоторым проблемам в геймплее.
Одна из таких проблем — игрок плохо контролирует прицеливание во врагов на разной высоте. Если враг находится слишком высоко, игрок его не увидит: он окажется за пределами обзора камеры. Но если игрок наведется в горизонтальной плоскости на противника, камера сама поднимется высоко вверх. А если игрок случайно отведет прицел влево или вправо, камера упадет обратно вниз. Такие плохо контролируемые скачки камеры могут раздражать игроков.
Чтобы их избежать, мы не используем большие перепады высот. Как правило, на всех наших картах есть три уровня высоты с разницей примерно в один рост робота. Этого достаточно, чтобы разнообразить лэйаут и избежать проблем с камерой.
Например, на изображении ниже показаны три уровня высоты на карте Powerplant: большая часть карты — первый уровень, низина — нулевой уровень, крыши зданий и возвышенности — второй уровень.
Другая проблема возникает, когда несколько врагов находятся на разной высоте и на одной линии выстрела. В этом случае прицел автоматически сводится на ближайшего противника, даже если он недоступен для стрельбы.
На картинке ниже перед игроком два врага, и прицел свелся на противника на нижней палубе корабля, хотя в него невозможно попасть. Конечно, есть кнопка ручного переключения между целями, но ее использование — лишние манипуляции, которые отвлекают игрока.
Чтобы этого избежать, мы стараемся не использовать многоуровневую геометрию, по которой можно перемещаться одновременно сверху и снизу. Вместо этого мы применяем ступенчатую геометрию, позволяющую снизить вероятность возникновения таких проблем с наводкой.
Еще одна проблема автоматической наводки — положение точки сведения отличается от расположения пушек.
Пушки у роботов всегда располагаются сверху или сбоку корпуса, а точки сведения — ровно в центре. То есть, снаряды игрока вылетают из пушек, а вражеские прилетают в центр корпуса.
Благодаря разнице в положении этих точек можно встать за укрытием так, чтобы центр робота был спрятан, а пушки выступали за край. Игроки используют эту особенность для безопасной стрельбы из-за укрытия.
Это может стать проблемой в бою, ведь когда враг спокойно стоит за укрытием и стреляет в тебя, а ты ничего не можешь сделать ему в ответ, это может сильно раздражать.
Проблему можно разделить на две части: абьюз боковых пушек и абьюз верхних пушек.
Абьюз боковых пушек меньше влияет на геймплей, ведь так можно высунуть из-за укрытия только одну боковую пушку, а с нее много урона не нанесешь. Это хорошо, потому что левел-дизайном эту проблему решить не получится: игроки перемещаются вдоль укрытий и всегда найдут возможность высунуть боковую пушку за край.
Абьюз верхних пушек — более серьезная проблема. На одном роботе может быть три и даже четыре верхних пушки, которые выдают существенный урон. Но, к счастью, эту проблему можно уменьшить с помощью левел-дизайна.
Что мы для этого делаем? Во-первых, закладываем решение в метрики укрытий. Минимальная высота укрытий должна быть не меньше, чем положение верхних пушек на самом высоком роботе.
Во-вторых, осторожно размещаем на картах наклонные поверхности. Их тоже можно использовать для абьюза верхних пушек, если наклонная поверхность загораживает точку сведения робота. В таком случае лучше сделать ее ниже или размещать подобные наклонные поверхности в тех местах карты, где нет смысла абьюзить их верхними пушками.
Самонаводящиеся ракеты и урон по площади
Некоторые виды пушек имеют механики, влияющие на метрики укрытий. Например, они могут стрелять самонаводящимися ракетами, которые обогнут укрытие сверху и нанесут урон роботу за ним. Получается, что если все укрытия будут минимальной высоты, игрокам будет негде укрыться от таких ракет. Так у нас появляется дополнительная метрика — высота укрытия достаточная, чтобы избежать атаки самонаводящихся ракет. На картах мы размещаем как низкие укрытия, так и высокие, сохраняя баланс между открытыми позициями и безопасным пространством.
На примере карты Dead City можно видеть, что большая часть укрытий — низкая (отмечены красным), но есть и высокие (отмечены зеленым).
Некоторые пушки стреляют ракетами, наносящими урон по площади. Если робот стоит прямо у края укрытия, ему можно нанести урон, стреляя по области рядом с укрытием. Эту особенность тоже нужно учитывать при проектировании лэйаута. Если нам нужно обезопасить зону и при этом не дать игрокам возможность занять в ней глухую оборону, мы используем узкие укрытия. Если мы хотим разместить хорошо защищенную зону, нужно убедиться, что укрытие окажется достаточно широким, и у игрока за ним есть возможность избежать урона по площади.
Наглядный пример изображен на картинке ниже. За узким укрытием робот не может избежать урона по площади, а за соседним широким — может.
Разная дистанция стрельбы
Обычное дело для шутеров, что пушки отличаются дистанцией стрельбы. У нас она делится на дальнюю, среднюю и ближнюю. Чтобы поддерживать спрос на все виды пушек и дать игрокам больше тактического выбора в бою, карты должны предусматривать возможность сражаться на разных дистанциях. Акцент на дистанции боя формируется соотношением количества укрытий к открытому пространству: большее количество укрытий смещает акцент в сторону ближней дистанции боя, а большее количество открытого пространства — в сторону дальней дистанции.
Ниже — два фрагмента одной и той же карты Rome. На ней хорошо виден контраст между пространствами с разным количеством укрытий.
Другой пример — карта Factory. На ней есть зона для ближней (красная рамка) и средней (зеленая рамка) дистанции боя. То есть, акцент сделан только на две дистанции из трех. И так со всеми нашими картами.
Почему мы не используем три дистанции на каждой карте? Это обусловлено размером карт и совокупностью механик, которые не позволяют нам этот размер увеличить. Бой длится 10 минут, в нем участвует 12 игроков. Увеличивая размер карты, мы не сможем равномерно распределить геймплей по всем ее зонам и при этом сохранить длительность боя в пределах 10 минут.
Вдобавок к этому, у игроков и так достаточно тактического выбора в бою. Каждый раз игрок попадает на случайную карту. Их в проекте уже довольно много, и такая их ротация хорошо поддерживает все виды пушек.
Особенности перемещения
Управление
War Robots — игра для мобильных телефонов, поэтому управление в ней менее отзывчивое, чем могло бы быть на ПК. В результате робот игрока перемещается неточно: есть погрешность между его фактическим движением и тем, как это планировал игрок. Мы это учитываем при построении лэйаута таким образом:
Делаем пространства просторнее и шире: арены — достаточно большие для возможности маневрировать; коридоры — достаточно широкие, чтобы не цепляться за стены при движении; мосты и рампы — достаточно широкие, чтобы с них случайно не упасть.
Никаких элементов платформера: если игрок может где-то пройти или куда-то запрыгнуть, это должно быть легко — не нужно заставлять его сражаться с управлением. Например, на карте Castle есть пропасть, которую игроки могут без проблем перепрыгнуть. Для этого не нужно подходить к самому краю обрыва или разбегаться перед прыжком.
Низкая скорость
Большинство наших роботов имеет относительно низкую скорость в сравнении с дальностью пушек. Это повлияло на типовые размеры карт, предрасположенные к определенным дистанциям боя. Так, у нас есть маленькие карты для ближней дистанции боя (800х800 м), средние — для средней (1000х1000 м) и большие — для дальней (1200х1200 м). При этом карты максимального размера многие игроки уже воспринимают как слишком большие: они успевают заскучать на них, пока идут от спавна к точке столкновения.
На примере изображена одна из таких больших карт — карта Springfield. Чтобы дойти от спавна до ее центра, нужно примерно 40 секунд. Игрок спавнится в бою до шести раз — то есть, четыре минуты из десяти он будет только идти от точки спавна до места столкновения.
Низкая скорость влияет не только на размеры карт, но и на траекторию движения. В контексте медленных роботов проблема запутанных путей на карте ощущается особенно остро. Мы стараемся их упрощать.
Во-первых, мы не используем сложных траекторий вроде зигзага.
На карте Springfield есть коридор, в котором раньше были полуоткрытые ворота. Чтобы его пройти, нужно было двигаться по зигзагообразной траектории движения. В какой-то момент мы решили эти ворота раскрыть, и теперь игроки могут быстро пройти этот коридор по прямой.
Во-вторых, мы упрощаем заходы на возвышенности.
На картинке показаны одновременно плохой и хороший примеры. Длинная рампа — неудачное решение: подниматься наверх по ней слишком долго. Со временем рядом появилась еще одна, по которой подниматься гораздо быстрее.
В-третьих, мы следим за частыми развязками движения.
На изображении ниже — неудачный пример с карты Powerplant. Если игроку нужно захватить маяк в низине, он спрыгивает вниз, а обратно может подняться только по двум рампам, расположенным в противоположных концах карты. Это неудобно и долго. Хорошим решением было бы добавить подъемы ближе к маяку.
Размеры роботов
В нашей игре размеры могут значительно отличаться от робота к роботу: так, пауки шире двуногих, а Титаны — в два раза выше остальных мехов. Все они должны перемещаться по карте без проблем. Эти разновидности роботов вводились в игру со временем, и левел-дизайн поначалу не учитывал их особенностей.
Так, с введением пауков нам пришлось расширять проходы на картах. При этом мы зафиксировали максимальную ширину пауков и больше не выпускали роботов шире.
Титанов разрабатывали сразу той же ширины, что и пауков, но они должны были оказаться гораздо выше обычных роботов. У нас на картах есть проходы, ограниченные по высоте. Обычные роботы там проходят спокойно, а Титаны — нет. Или, что еще хуже, они вообще могут там застрять. Поэтому нам пришлось увеличивать высоту проходов везде, где это возможно. Например, мы разломали мосты на карте Springfield, и теперь Титаны могут без проблем там пройти.
Там, где высоту проходов поднять было нельзя, мы ее намеренно уменьшали, чтобы Титаны точно не могли там застрять. К примеру, именно так в тоннелях Dreadnought появились металлические балки под потолком.
Чтобы новые Титаны и роботы не испытывали проблем с перемещением в дальнейшем, мы ввели метрики высоты и ширины роботов: чтобы обычный робот помещался в низком проходе, он должен быть не выше 25 метров. В свою очередь, чтобы Титан там точно не застрял, он должен быть не ниже 28,5 метров.
Прыжки и полет
Многие роботы, помимо перемещения шагом, могут использовать абилки, которые позволяют им прыгать или летать. Активное использование такого способа перемещения по воздуху определенно влияет на построение лэйаута карты. В результате формируется целый список вещей, которые необходимо учитывать.
На карте должно быть свободное пространство для использования абилок. Для этого в геймплейной зоне мы размещаем минимальное количество объектов, через которые нельзя перепрыгнуть или перелететь.
Помним, что игроки могут запрыгнуть или взлететь на крышу почти любого здания на карте. Значит, на них должна быть ровная поверхность, чтобы по ним можно было ходить без проблем. Если на них есть объекты, за которыми можно укрыться, они должны соответствовать метрикам укрытий по высоте.
Прыгающие и летающие роботы атакуют противника с воздуха. Соответственно, геометрия карты должна давать возможность игрокам на земле укрыться от таких атак. Для этого подходят высокие объекты или пространства, закрытые крышей.
Игроки могут приземлиться после прыжка или полета почти в любое место карты. То есть, по всей карте не должно быть мест, где робот может застрять. Для этого, во-первых, объекты на карте не должны образовывать узких щелей и ям. Так, на карте Castle роботы намертво застревали в дыре между трубами, и нам пришлось ее оперативно закрывать.
Во-вторых, сложная геометрия должна иметь упрощенные коллайдеры. На картинке ниже изображен хороший пример объекта со сложной геометрией — металлоконструкция с карты Canyon. Чтобы робот не мог провалиться внутрь, ее коллайдер упрощен до куба, повторяющего габариты объекта.
Килл-зоны на картах
У большинства наших карт долгое время не было собственных механик. И вот появилась первая, она же пока единственная, — килл-зона. Это зона, при попадании в которую робот мгновенно уничтожается. Интересно то, что эта механика синергирует с механиками перемещения роботов. Рассмотрим примеры.
На карте Carrier геймплейная зона — корабль — окружена килл-зоной — водой. Она не влияет напрямую на геймплей, но обретает значимость при использовании роботами прыжков и полета. В таком случае игроки рискуют свалиться за борт при неточном исполнении абилки. Это добавляет напряжения и вообще ощущается весело. Таким образом, применение абилок движения добавляет смысла механике карты.
Через всю карту Castle проходит обрыв с килл-зоной. Теперь механика играет гораздо большую роль в геймплее. При использовании абилок движения, таких как прыжок, полет, а теперь еще и дэш, риск не только остался, но и увеличился. Случайно потерять робота теперь можно прямо в центре геймплейной зоны.
Но главное — теперь механика килл-зоны сама поддерживает механики движения. У роботов с прыжками и полетом появляются дополнительные тактические возможности перебраться через пропасть по кратчайшему пути.
С картой Factory примерно та же ситуация, что и с картой Castle: в центре карты размещены модификации килл-зоны — дамаг-зоны. Роботы в них не уничтожаются мгновенно, но получают периодический урон. То есть, сохраняется риск использования абилок движения. Вдобавок к этому, у роботов есть возможность быстро преодолеть дамаг-зоны, не получив урон, но добравшись до цели по кратчайшему пути.
Особенности режимов
В нашей игре четыре режима: по два на захват маяков и на убийства. Все они играются на одних и тех же картах, но у каждого есть свои особенности левел-дизайна.
Domination
Это основной режим игры, и все карты строятся в первую очередь под него. Его особенности:
На карте 5 маяков;
2 команды по 6 игроков;
У каждой команды своя база со спавнами;
Контроль маяков приносит команде очки;
Побеждает команда, первая набравшая заданное количество очков.
Цель игроков — захватывать маяки. Соответственно, лэйаут построен именно вокруг них. На примере ниже — схема расположения маяков для карты Factory. Такая схема создается еще на этапе концепта карты. Бирюзовые точки здесь — маяки, а красные и синие — зоны спавна команд.
Вокруг маяков разворачиваются самые интенсивные столкновения. Чтобы их поддержать, мы формируем в этих местах арены — просторные зоны для сражения большого количества игроков.
Маяки соединяются между собой проходами и флангами, по которым игроки могут атаковать противника или перемещаться для захвата и защиты уже захваченных маяков.
Зоны спавна команд мы размещаем по одной для каждой команды в разных концах карты.
При таком построении лэйаута от маяков игрокам удобно воевать на карте. От них требуется захватывать маяки — и геометрия карты построена с учетом этой задачи.
Но в режиме Domination есть одна проблема: игрокам слишком долго идти от спавна до зоны столкновения с врагом, особенно на больших картах. Эту проблему удалось решить в новом режиме — Beacon Rush, который в итоге самым стал популярным в игре.
Beacon Rush
Это тот же Domination, но теперь игроки могут спавниться на маяках. Вместе с этой особенностью в режим добавили миникарту, на которой игроки могут выбирать место спавна. Синие и красные круги на ней — союзные и вражеские маяки и спавны, красные и синие треугольники — другие игроки.
Введение дополнительных спавнов привело к некоторым положительным изменениям в геймплее:
Сократилось время сближения с врагом: игрокам теперь не нужно долго идти от стартового спавна до точки столкновения;
Повысилась динамика боя: столкновения на маяках стали более ожесточенными, ведь игроки теперь спавнятся прямо на них;
Увеличилась важность захвата маяков: например, можно захватить маяк рядом с вражеской базой и спавниться у противника в тылу.
Так, введение одних лишь дополнительных спавнов сделало режим самым популярным в игре.
Team Deathmatch
Переходим к режимам на убийство игроков. Первый из них — Team Deathmatch, классический режим для шутеров. Его особенности:
2 команды по 6 игроков;
Цель — уничтожение вражеских роботов;
Побеждает команда, уничтожившая всех роботов противника.
Этот режим играется на тех же картах, что и режимы с маяками. При построении лэйаута от маяков в нем уже закладываются все элементы, необходимые и для TDM: арены, фланги и снайперские позиции.
Но в этом режиме мы используем по три зоны спавна на команду. Теперь здесь нет маяков, на которых можно высаживаться, поэтому три зоны спавна позволяют игроку быстрее попасть в нужную ему часть карты. Кроме того, если противник заблокировал одну из зон спавна, игрок может высадить робота на соседней и зайти противнику в тыл.
Зоны спавна отмечены маркерами. Эти маркеры позволяют игрокам лучше ориентироваться на карте. Кроме того, когда при наступлении на вражескую базу игрок видит такой маркер, он понимает, что в этом месте в любой момент может заспавниться противник, и не стоит поворачиваться к нему спиной.
Поскольку в этом режиме нет маяков, цель игроков — стрельба друг по другу. В таких условиях пересекать открытые участки карт становится особенно опасно. Нам же нужно мотивировать игроков сближаться: так мы повышаем динамику и поддерживаем разные дистанция боя. В этом нам помогают дополнительные укрытия на слишком открытых участках карты.
Free for All
Последний режим — «каждый сам за себя»:
всего 6 игроков;
цель — уничтожить вражеских роботов;
побеждает игрок, совершивший наибольшее количество убийств.
В этом режиме снова используются те же карты, но здесь не работает линия фронта, вдоль которой развернуто большинство укрытий на карте. Но она и не нужна в этом режиме, ведь игроков стало в два раза меньше и каждый сражается сам за себя. В таких условиях столкновения чаще происходят один-на-один, и для них подходит любой участок карты, если это не открытое поле.
Так как игроки сражаются каждый сам за себя, в начале боя их нужно распределить по всей карте, чтобы у каждого было одинаковое количество врагов вокруг. В этом нам помогают двенадцать точек спавна, равномерно распределенных по периметру карты.
Вдобавок к этому, игрок спавнится на максимальном удалении от противников. То есть, в начале боя все игроки распределены по спавнам через один, а каждый последующий спавн игрок попадает в наиболее безопасное место на карте. Так мы избегаем ситуации, когда игрок спавнится прямо перед противником и сразу попадает под обстрел.
Хотя спавны распределены по всему периметру карты, между соседними часто бывают открытые прострелы. Мы их закрываем дополнительными укрытиями: так мы создаем безопасную зону вокруг каждой точки спавна.
Итак, мы рассмотрели влияние на левел-дизайн основных механик кор-геймплея игры War Robots: стрельбы, перемещения, режимов боя. Учитывая их особенности при построении лэйаута, мы поддерживаем и дополняем механики игры, на выходе получая интересный геймплей на картах.
neurocore
Про точку сведения в центре объекта было забавно читать (особенно ту часть где вы построили кучу костылей, чтобы поддержать эту «фичу»). Мне казалось, что тест коллизии с bounding box не сильно дорогой будет по ресурсам.
Enot487 Автор
Это важная фича для упрощения управления стрельбой в условиях игры на мобильном телефоне. Так что да, для ее поддержания требуются некоторые костыли в левел-дизайне.
Enot487 Автор
а конкретно про тест коллизии с bounding box не понял, что имеете ввиду
neurocore
Можно провести дешёвый тест на видимость точки сведения вражеского юнита и если эта точка не видна, то использовать нечто вроде следующего. Юниты прекрасно укладываются в bounding box, окей, смотрим какие точки box'а видны пушкам, ну а дальше немного ифов: видны хотя бы 2 верхние точки — целимся в верхнюю часть, только одна — в нужный уголок.
Enot487 Автор
Дельное предложение. Я не могу конструктивно обсудить технические подробности реализации нашего кор геймплея, но наверняка у нас есть ограничения по его доработкам.