Как создавалась de_dust

Один человек сделал реалистичный шутер. Это разве возможно?

На первый взгляд Bright Memory: Infinite впечатляет, но это скорее пример того, как один человек может сделать иллюзию дорогого проекта с помощью современных инструментов разработки. Игра создана на Unreal Engine 4, одном из самых передовых движков с тысячами обучающих видео и гайдов. В 2015-м году Epic Games изменила условия лицензии, по которой распространяется движок: теперь им может пользоваться кто угодно и совершенно бесплатно. Можно даже сделать свою игру на UE4 и свободно ее продавать – в таком случае придется лишь отдавать Epic Games лишь 5% своей выручки, после того как она превысит 3 тысячи долларов.

Шутеры – не самый распространенный жанр среди инди-разработчиков, но в теории сделать такую игру не очень сложно. Нужно найти несколько подробных инструкций, изучить среду разработки движка и собрать свой проект. Для этого даже не нужно копаться в голом коде, достаточно вникнуть в подобные логические схемы движка и разобраться, за что отвечает каждое значение. За один день что-то осмысленное сделать не получится, но за несколько месяцев или лет – вполне. Там будет и какая-никакая стрельба, и более-менее адекватная физика, и все остальные механики, которые выбрал разработчик.

Творческие навыки в современной инди-разработке, конечно, крайне желательны, но не обязательны. Локации, модели персонажей, анимации, звуковые эффекты и даже программные модули можно загрузить в официальном магазине Unreal Engine 4, а затем использовать в своем проекте любые их комбинации. Такие товары (ассеты) выкладывают разработчики со всего мира: кто-то предлагает свои работы бесплатно, другие выставляют ценник от нескольких до сотен евро.

(этот фотореалистичный лес продают за 186 евро)

Из-за такой доступности готовых (и довольно впечатляющих) ассетов в Steam, например, появились сотни однотипных инди-хорроров, действие которых зачастую разворачивается в одних и тех же локациях. Сильно полагаться на чужие ассеты непрестижно, геймеры и интернет это чаще всего замечают и высмеивают. Разработчик Bright Memory обжегся на использовании краденых моделей, а в остальном очевидно, что игра вторична и собрана из чужих наработок – отсюда отсутствие общего стиля. Поверхностный сюжет про слияние нескольких эпох из-за временной аномалии – отличное оправдание для использования всех понравившихся ассетов.

Где-то половина зрелищности Bright Memory: Infinite – графические улучшайзеры, которые добавить в проект не так уж и сложно. Например, Unreal Engine 4 отлично симулирует различные материалы, а также эффекты частиц (дождь, огненные искры и так далее). На максимальных настройках в игре повсюду кружат вихри мусора, игрок тоже редко стоит на месте – в динамике картинка всегда выглядит лучше.

Главный вау-эффект игры обеспечивает трассировка лучей (RTX). Эта новомодная технология, работающая только на топовых видеокартах Nvidia RTX и еще не вышедших консолях Xbox Series X и PlayStation 5, добавляет в игры реалистичное освещение. Версия без требовательной технологии выглядит пресно:

Наконец, играет роль и срок разработки. Birght Memory – линейная и довольно небольшая игра, которую создают уже больше трех лет. Это немаленький срок для такого крошечного проекта. Кажется, главный секрет Цзэн Сянчэна в том, что он пускает в ход все идеи, которые ему приходят в голову – в то время как другие разработчики тратят много времени на поиск подходящего концепта и создание прототипов без мусорных механик.

* * *

Первый эпизод игры продолжительностью примерно в один час уже давно доступен в Steam. Автор обещает, что его покупатели получат более продолжительную Infinite бесплатно.

Bright Memory: Infinite будет работать в разрешении 4K при 120 FPS на Xbox Series X. Игра также выйдет на PC, Xbox One, PS4 и, предположительно, PlayStation 5 в 2021 году.

BETA-релизы

Dust подвергалась изменениям в каждой новой бете. Изменения часто были несущественными, ещё чаще были просто визуальными, но иногда совершенно переворачивали игровой процесс.

BETA 4

Сравнивая первые версии Dust с финальной, можно отследить все значимые изменения. После BETA 4 ящиков и укрытий стало больше – всё в угоду балансу и совершенствованию атакующих/оборонительных стратегий. Эстетически финальная версия карты чище и мягче, благодаря специальному скайбоксу и улучшенному освещению.

В CS 1.6 солнце слегка сдвинули и тени стали длиннее, а контрастность выше, что лучше сочетается с новым скайбоксом

После CS BETA 4 спаун террористов слегка приукрасили с помощью граффити

Расположение солнца и теней помогло привлечь внимание террористов к точкам закладки

BETA 5

Версия Dust в BETA 5 обзавелась визуальными и геймплейными изменениями. Одно, на вид небольшое, изменение касается отломанной стены, с которой снайперы спецназа просматривают подземный переход. Теперь снайперы были на виду, что должно было облегчить террористам проход этим путём. В поддержку этой идеи я поставил в переходе дополнительные ящики, на таком расстоянии, чтобы в снайпера можно было попасть гранатой.

В BETA 5 спецназ получил весомое преимущество на переходе – сломанная стена и нехватка укрытий усложнили террористам задачу.

Сломанная стена сработала в обратную сторону. Вместо того, чтобы раскрыть снайперов, она предоставила им прекрасный вид на обратную сторону перехода. К счастью, целую стену вернули в BETA 6.

BETA 6.1 и 6.5

В BETA 6.1 были внесены небольшие изменения в точки спауна, которые привели к значительным последствиям. Я считал, что баланс карты смещён в пользу террористов и хотел найти способ компенсировать их преимущество. Для этого я сместил CT-спаун на несколько метров вперёд, сдвинув линию первого контакта команд.

Расположение точек спауна на Dust всегда играло важнейшую роль в балансе, и я знал, что даже аккуратная настройка может резко всё изменить. Однако я был недостаточно аккуратен – в итоге баланс в 6.1 стал ощутимо хуже.

Версия 1.0

В апреле 2000 Valve купила Counter-Strike и добилась права включить Dust в коробочную версию игры. Я не мог поверить, что маленькая карта, которую я сделал на досуге всего лишь год назад, появится на полках магазинов. Однако 1 ноября 2000 – за несколько дней до годовщины создания Dust – как раз это и произошло. Мне было 17, и Dust стала моей первой официально изданной работой (спустя несколько месяцев моя четвёртая карта для CS – с изобретательным названием de_dust2 – была добавлена в CS 1.1. Подробнее о ней можно почитать тут: The Making Of: Dust 2).

24/7

Когда-то Dust была самой популярной картой среди всех шутеров, как в плане количества играющих, так и в плане времени, проведённом игроками на карте

Были тысячи серверов «Dust 24/7», и карта быстро завоевала внимание новичков, хоть и не была в почёте на клановых тренировках. Dust стала идеальным местом для знакомства с правилами игры благодаря своей простой схеме

Невозможно предсказать, что бы стало с Dust, если бы в неё в итоге прошли некоторые моменты: точка B в переходе, снайперская стена или лестница в коридор. Мне кажется, они не пошли бы карте на пользу.

Но я не могу утверждать, будто знал, что делаю, когда по кусочкам собирал Dust. Я связываю её успех больше с неимоверной удачей и отсутствием воображения, чем с уровнем моих навыков. В любом случае, я узнал больше нового, глядя на Dust после официального релиза (и даже сейчас узнаю, пока пишу эти строки!), чем во время её создания.

Экстраполяция

Имея под рукой готовый дизайн первой области, для создания полноценного игрового окружения достаточно экстраполировать его на оставшиеся участки карты. Сказать такое проще, чем сделать – следующий этап работы получился куда более трудным.

На выходе из CT-спауна я добавил T-образную развилку, но понятия не имел, что с ней делать дальше. Мой опыт картостроения в основном сводился к тесным внутренним пространствам, так что я чувствовал себя в тупике. В отчаянии я втиснул с одной стороны развилки спуск, заканчивающийся подземным помещением.

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

Разумеется, решение было неудачным. CT-спаун был светлым и просторным, а эта большая комната – мрачной и тесной, она казалась безжизненной на фоне первой солнечной области. Осознав, что и геймплейный потенциал у неё тоже отсутствует, я решительно всё убрал. Dust будет картой на открытой местности.

Я всё ещё не знал, куда двигаться дальше. Это один из тех моментов, когда очень сложно работать без первоначальной целостной идеи. Ты смотришь, что у тебя есть, и не можешь решить, что с этим сделать – каждый шаг в одну сторону означает удаление от возможностей, доступных в другом направлении, и какое из них лучше, заранее неизвестно. Очень велик соблазн всё бросить и начать с нуля. Все свои предыдущие карты я делал по одной комнате за раз, по ходу дела доводя их до ума в соответствии с небольшим предварительным планом, соответственно, они получались весьма неплохими. Я надеялся, что смогу сделать нечто подобное и в этот раз.

К счастью, всё так и обернулось.

Спаун террористов и плавный спуск в переход ниже

Всего через несколько часов – будто из ниоткуда – возникла начальная зона террористов. Эта часть карты меня порадовала: видимо, я начал привыкать к архитектурному и визуальному стилю. Плавный спуск в переход – один из моих любимых элементов, как с точки зрения эстетики, так и с точки зрения игрока с Steyr Scout, выцеливающего головы противников с возвышения.

В какой то момент я подумывал добавить обходной путь к снайперской точке спецназа, но он показался мне слишком длинным, слишком прямым и вообще слишком бесхитростным. Вместо этого я наставил в переходе ящиков, их всё ещё можно увидеть в оригинальной версии карты (и на скриншоте выше).

Центральный коридор Dust был важным связующим звеном всех готовых элементов. К сожалению, я мало что могу вспомнить о его создании, не считая моих очевидных стараний сделать его непросматриваемым из одного конца в другой. Каждый ящик в коридоре расположен так, чтобы сократить обзор и повысить производительность. В этом месте команды обычно сталкиваются друг с другом, так что здесь не должно быть преимущества у какой-то из сторон и необходим небольшой уклон в оборону.

Центральный коридор, террористы заходят сверху, спецназ снизу

Обратите внимание на ящики в правом углу, перекрывающие обзор по всей длине. Сейчас уже сразу понятно, что форма перевёрнутой «T» – дающая спецназу две точки для обороны против одного входа у террористов – играет ключевую роль в определении темпа движения команд

Хорошая команда спецназа будет терпеливо держать свои позиции, вынуждая террористов проверять оба угла. Однако у террористов будет похожее преимущество, если спецназ переоценит свои возможности и продвинется слишком далеко

Сейчас уже сразу понятно, что форма перевёрнутой «T» – дающая спецназу две точки для обороны против одного входа у террористов – играет ключевую роль в определении темпа движения команд. Хорошая команда спецназа будет терпеливо держать свои позиции, вынуждая террористов проверять оба угла. Однако у террористов будет похожее преимущество, если спецназ переоценит свои возможности и продвинется слишком далеко.

Правильный баланс в данном случае зависит от времени. Я хотел убедиться, что обе команды могут первыми заметить врага в коридоре. Зная, что большинство игроков с первой секунды бегут вперёд, я делал так же, засекая, сколько времени требуется каждой стороне, чтобы добраться до коридора. Сделав расстояние одинаковым, я мог с точностью обозначать наиболее вероятное место первого контакта.

Последняя версия Counter-Strike вышла в 2012 (это был жаркий август месяц). Вся профессиональная киберспортивная сцена плевалась на факт замены CS 1.6 на CS:GO.

Летом 2019 года исполнится ровно 7 лет, как шутер имеет высокую популярность, но не имеет хорошую графику. Разработчик по имени Wiktor Ohma решил выложить в интернет свой концепт на реализацию игры на новом движке.

Сейчас Counter-Strike:Global Offenssive использует полностью свой личный движок разработанный компанией Valve. Виктор предложил свой личный вариант, который будет базироваться на движке  Unreal Engine 4.

Он предложил использовать графические технологии, которые используются во всех современных шутерах, а также новое освещение и детализацию объектов. Новый визуал получили такие объекты, как: бочки, стены, машины, камни, ящики, прочее… Детализация всех мельчайших тонкостей ударились в художественные нюансы.

«На Unreal мне удалось увидеть именно то, что я хотел»

За свое существование игра полностью поменяла визуал: сначала проект использовал Unity как в 2D, так и в 3D версии, а позже был переделан под Unreal Engine.

Свой выбор в пользу последнего движка основатель объясняет просто: его впечатлил результат. В процессе работы над проектом нашлись специалисты, которые разбирались в Unreal и смогли сделать локации эффектнее. После этого Денис сделал вывод, что нужно переходить на другой движок, так как это значительно улучшит визуал игры. 

Unity
Unreal Engine

Денис Листов: «Дело, скорее, даже не в движке, а в людях. Где найти профессионалов, чтобы они сделали качественно? Если бы у меня были специалисты, у которых был опыт с каким-то другим движком, возможно, я бы перешел на него. Но только на Unreal мне удалось увидеть именно то, что я хотел. Не спорю, что на Unity тоже можно добиться отличного визуала. Но мне кажется, на это уйдет больше времени. Да и мне, как геймдизайнеру, который тоже заходит в редактор, гораздо комфортнее с ним работать.»

Сетевая оптимизация

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

  • Реплицируйте только тех экторов, которые важны для геймплея и меняются с течением игры.
  • Выставляйте соответствующий NetUpdateFrequency. Чем важнее частое обновление эктора — тем выше должно быть значение.
  • Reliable RPC должны использоваться только на геймплейно важных ивентах.
  • Просчитывайте на сервере только геймплейно важные куски кода. Визуализацию и менее важные вещи оставьте клиентам.
  • Клиентов старайтесь тоже не нагружать. Порой что-то выгоднее просчитать на сервере, чем скидывать эту ношу на клиента.
  • Не используйте сетевую релевантность, если она вам не нужна.
  • Используйте NetCullDistance для оптимизации клиента. Однако при входе эктора в эту дистанцию он будет заново создан, что может нагрузить клиент сполна.
  • Используйте NetworkProfiler — встроенную утилиту для обнаружения сетевых особенностей вашего кода.

На хабре есть статья, посвященная сетевой оптимизации

Обязательно уделите ей внимание, особенно, если вы работаете на C++

Когда упорство все же побеждает

Геймдизайнер перешел к активным действиям. Информация о проекте была размещена на сотне сайтов по инвестированию, в том числе зарубежных. Стали приходить сообщения от заинтересованных лиц из разных стран. Все утверждали, что видят в проекте потенциал, а через пару недель исчезали из виду. Так продолжалось долгое время, пока не появился один инвестор. До этого момента пришло уже около 15 отказов, поэтому в серьезность его намерений профинансировать игру поверить было сложно. Переговоры продолжались несколько месяцев, и наконец, стороны подписали договор. Теперь можно было нанять команду профессионалов и сделать играбельный билд, который не стыдно показать. К работе подключились два программиста, левел-дизайнер, аниматор, а также моделлеры с частичной занятостью. А в последние 2 месяца намечается плотная работа со звукорежиссером и композитором. Фактически, все члены студии — это контрактеры, которые за зарплату осуществляют задумки геймдизайнера. Но при этом они крайне ответственно относятся к своей работе и стараются выполнить ее на высшем уровне. Сейчас коллектив под названием Ludus Future трудится по 12-16 часов в сутки, иногда без выходных, по собственной инициативе. Сам Денис слово “студия” не очень любит — слишком официально. А в коллективе все же преобладают дружеские отношения, несмотря на то, что все участники проекта живут в разных регионах страны.

Бонус

Один из разработчиков Mail.ru собрал актуальный вопросник по работе с сетью, который упоминается в этой статье. Мы попробуем ответить на некоторые из представленных вопросов. Заодно читатели проверят полученные из этой статьи знания, а я — достоверность знаний, которые вам преподал :)

Вопрос: где хранить геймплейные данные пользователя (например, инвентарь или количество очков) во время игровой сессии? Является ли APlayerController подходящим местом?Ответ: и Player Controller и Player State уничтожаются при отключении игрока от сервера. Так что — нет, хранить данные в них ненадежно. Можно хранить данные в персонаже или любом другом объекте, если в процессе игры мы его не уничтожаем. Идеальным решением будет хранить данные в GameInstance, который сохраняется даже при переходе на другой уровень. Есть вариант поймать момент, когда игрок отключается от сервера, и забрать всю информацию, хранящуюся в его Контроллере или Стейте. К сожалению, пока эта функция доступна только в C++. 

Вопрос: как PlayerState’ы реплицируются на клиенты? Каков жизненный цикл PlayerController’а и PlayerState’ов при переподключении игрока?Ответ: сервер отправляет значения переменных на все клиенты. Все все знают друг о друге. Контроллер и Стейт уничтожаются при отключении игрока или его переходе на новый уровень, поэтому при переподключении под игрока будут созданы новые Контроллер и Стейт.

Вопрос: на каких классах можно вызывать RPC и почему? Можно ли расширить эту возможность на другой класс/сущность? Какие накладные расходы существуют на вызов RPC?Ответ: RPC можно вызвать на любом объекте, находящемся в сцене, т.е. — экторе. Но чтобы вызов дошел до сервера, контроллер обязан владеть эктором, с которого он хочет отправить RPC.
Эту возможность можно также встроить в Actor Component, который, по сути, является модулем, надбавкой к уже имеющемуся классу. RPC должен быть обоснован, равно как и параметр Reliable. Если мы все можем просчитать на клиенте — то и смысла обращаться к серверу нет. Если злоупотреблять Reliable, можно запросто забить сервер пакетами.

Вопрос: как реплицируются массивы? И как реплицируются вложенные свойства (реплицируемое поле является структурой)?Ответ: обновление всех элементов массива происходит одновременно при добавлении / удалении / перемещении одного из элементов. Структуры же реплицируют только измененный элемент. Эта фишка была добавлена в UE4, до этого в третьей версии движка структура реплицировалась как эктор, т.е. все и сразу.  

Вопрос: какие ограничения сети существуют? (Цифры!) Как профилировать нагрузку на сеть? Какие методы оптимизации сети применяются? Для чего нужен ForceNetUpdate?Ответ: во-первых, это частота обновления эктора, которую мы уже рассмотрели. По-умолчанию частота обновления клиента равна 100 раз в секунду. Очевидно, что клиент не сможет так часто обновляться, если его ФПС, конечно, не превышает эту цифру. Выставляйте адекватную частоту обновления. Во-вторых, это приоритет эктора при обновлении. Его значение может быть от 1 до скольки угодно. Если перейти на общие вещи, то сюда можно приписать максимальное количество игроков на один сервер, рекорд по которому превысил 140 подсоединенных клиентов. По большей части, вместимость сервера зависит от железа, на котором хостится сессия.
Чтобы профилировать сеть, достаточно тщательно выбирать реплицируемых экторов. Если в этом нет необходимости — выключите галку с репликации или понизьте его частоту обновления.
Также рекомендуется следить за тем, что вы выполняете на сервере, а что — на клиенте. Если кусок кода не особо важен для геймплея — нагрузите клиент, пусть сам все посчитает.
Общее решение — запустите утилиту Network Profiler и отследите проблемные места в вашем сетевом коде.ForceNetUpdate вызывает моментальное обновление эктора на всех клиентах. Особенно это полезно, когда вы используете низкую частоту обновления.

Counter-Strike: Global Offensive

У меня отвисла челюсть при виде Dust из CS:S, но версия карты из CS:GO просто размазала меня по полу.

Несомненно, самая детализированная, навороченная и реалистичная Dust.

Над этой версией работали Valve и Hidden Path Entertainment, она основана на пропорциях из CS:S (многие ассеты перекочевали сюда из предыдущей игры, хоть и в слегка изменённом виде). Здесь были внесены наиболее существенные изменения в схему карты с момента официального релиза – мостик над переходом со стороны спецназа и лестница, ведущая наверх из перехода, вновь сделали Dust привлекательной для соревновательной игры и поставили её в один ряд с другими картами последних лет.

Путь к центральному коридору из подземного перехода.

Может показаться, что тут работает одна из моих отвергнутых идей, но это только на первый взгляд. Переход всегда был слишком прямым, и Valve явно согласилась с необходимостью бокового прохода. Однако здесь путь ведёт не прямо в центральный коридор, как задумывал я, а на другую сторону платформы над переходом.

Такая идея гораздо эффективнее, и мне жаль, что я не додумался до неё, пока была возможность!

Скопировать и вставить

Начало было простым: в первой области я сделал длинную дорогу с домами по сторонам, ведущую в арочный проём в стене – всё, как на скриншотах. Я украсил дома узорами в верхней и нижней части, вновь подражая TF2 в попытке добиться того же ощущения реализма, опустошённости и масштабности. Эти элементы впоследствии станут определяющей основой архитектурного стиля Dust.

Моя работа не была совсем уж копией увиденного на скриншотах, но была довольно похожей, и – что самое главное – это было только начало.

Арки стали отличительной чертой карты – «Даст» не был бы «Дастом» без двух-трёх арок, разделяющих карту на отдельные области. Создание первой арки было серьёзной проверкой моих технических навыков, и мне пришлось повозиться, пока я подобрал подходящую технику. Я отказался от треугольника Рёло в пользу обычного полукруга, отчасти из-за того, что так проще, но в первую очередь, чтобы не затруднять игрокам проход. Я вырезал арку в прилегающей стене – прямо как на скриншотах.

Первая версия CT-спауна

Я побоялся копировать скриншоты один-в-один и стал раздумывать, как будет выглядеть всё остальное. Я уже сделал приподнятую платформу и решил, что это место будет точкой появления спецназа. Это потребовало обеспечения защитных мер, так что я добавил несколько окон:

Вид из здания возле CT-спауна

Они не только ужасно выглядели, но и не давали желаемых оборонительных преимуществ и не вписывались в задуманный геймплей. Я не хотел, чтобы спецназ сдерживался, и убрал окна, хотя совершенно не понимал, что буду делать с картой дальше.

Поиск единомышленников и первые контакты с инвесторами

Все началось в 2014 году. Именно тогда Денису пришла в голову мысль сделать игру, которая воплотила бы все его задумки на экране монитора. Так как его деятельность не была связана с разработкой, он принял решение всему научиться сам. Программирование, анимация, графика — все это приходилось осваивать в свободное от основной работы время, включая выходные. Через полгода интенсивного обучения Денис понял, что в одиночку задумку не осуществить. Стал мониторить тематические форумы и искать единомышленников, попутно продолжая учиться. Но согласных участвовать в проекте за идею он так и не нашел.

Денис пришел к выводу, что раз энтузиасты не горят желанием присоединиться — нужны профессионалы, которые качественно выполнят его задумки за деньги. Следовательно, необходимо искать финансирование. Он подготовил необходимую документацию, концепты и занялся поисками инвестора. Разослал сотни писем в соцсетях успешным бизнесменам. Игрой заинтересовалась группа состоятельных молодых людей. Они были готовы профинансировать игру, но поставили условие, что Денис должен найти команду для разработки. На переговоры ушло около двух месяцев. За это время нашелся программист, аниматор и художник. А после случилось то, чем в наше время мало кого удивишь, но для новичка в игровой индустрии оказалось шоком.

Денис Листов: «Мне позвонили и сказали: “Ну вот, теперь у тебя есть команда, молодец. А мы еще раз посовещались и решили, что пока не хотим инвестировать.” Я очень удивился, ведь все это время мы позитивно общались, и казалось, что они согласятся. Можно было поседеть от расстройства…»

Репликация Виджетов

Я выделил виджеты в отдельную тему, потому что у меня ушло несколько месяцев на осознание того, что… Репликации виджетов не существует. Да, эти, казалось бы, примитивные объекты имеет муторную систему коммуникации с сервером, потому что существуют они только на клиенте.

Для общения виджетов с сервером нам нужен посредник. И так получилось, что на момент появления на экране виджет знает только своего владельца. Ага! Это тот, кто нам нужен!

Вместо персонажа рекомендуется брать посредником именно его контроллер. В этом случае, если персонаж уничтожится, виджеты продолжат существовать вместе с контроллером.

Теперь необходимо создать нужный ивент на персонаже и, закастовав к владельцу, вызвать этот ивент прямо в виджете.

Ивент запустится безо всяких проблем, т.к. мы вызываем его с владельца.

Есть и второй вариант — во время создания виджета получить ссылку на другого посредника. Например, 3D карту. 

Чтобы на ноде Create Widget отобразился пин на референс, мы создадим переменную внутри этого виджета и поставим ей галочки на Instance Editable и Expose on Spawn.

При выборе посредника не забудьте, что его класс должен быть реплицируем.

Что же получилось в итоге?

Билд, который Денис отправил на DevGAMM Online, а затем и на UEDC-2020  — колоссальная работа, над которой коллектив трудился в течение полугода. Изменился сюжет, главный герой, а сам проект получил название Demon Skin.

Главный персонаж игры — Рой — состоит в Ордене Странников. Их основная задача — путешествовать по мирам и уничтожать зло. Во время такого похода он погнался за слугами враждебной фракции Хаоса. Но какая-то неведомая сила призывает врагов в портал, и Рой следует за ними.

После телепортации странник понимает, что оказывается в поселении, охваченном огнем: адепты трех зловещих фракций сражаются между собой, а люди в этой войне — просто пушечное мясо

Внимание Роя привлекает некий кристалл, который пытаются пробудить во время этой бойни с помощью жертвоприношений. Странник не понимает смысла ритуала, но осознает, что кристалл — главный источник зла

Так как полчища злодеев ему не убить, возможно, стоит пробраться к алтарю и уничтожить артефакт? Когда Рой разбивает кристалл, происходит кульминация ритуала, и луч с неба проходит сквозь главного героя. После этого происходит мощный взрыв, который уничтожает все живое. Когда Рой очнулся, он уже не был прежним. Из-за луча он утратил свой человеческий облик и потерял память. В этот момент из портала появляется неизвестный и забирает кристалл. Несмотря на то, что Рой ничего не помнит, разум у него остался. Обессиленный, но все еще живой, он отправляется в путь, чтобы найти артефакт и вернуть его на место.

Demon Skin представляет собой 3D платформер с элементами RPG, где основной акцент делается на melee-бои. В качестве основного референса геймдизайнер ориентируется на Severance: Blade of Darkness. Игре почти 20 лет, и о ней мало кто помнит. Но Денис до сих пор считает, что в этой игре была лучшая система ближнего боя.

Денис Листов: «В Severance: Blade of Darkness был один жирный минус: слишком высокий порог вхождения. Новая и поначалу сложная механика, агрессивные противники — точно не для казуалов. Люди просто не могли разобраться, как в нее играть. Возможно, она просто вышла не в свое время. Я решил создать игру со схожей атмосферой, перевел в платформер и добавил своих идей.»

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Клуб GTA
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: