Вместе с Unity AD публикует истории разработки игровых проектов, созданных на базе популярной технологии. Расскажите о своём кейсе, чтобы попасть в рубрику.
Сегодня в рубрике — рассказ одного из создателей приключенческой игры The Uncertain Артёма Нетягина о том, как велась разработка проекта и какие инструменты использовала команда.
Всё начиналось с простенькой мобильной демки. Никто тогда даже не думал о полноценном ПК-проекте. Это, по большому счёту, даже не задумывалось как игра, просто проба пера в приключенческой point-and-click-механике. И ни для кого не секрет, что огромным вдохновителем и, по сути, даже в какой-то мере учителем для нас стала студия TellTale Games, выпустившая много замечательных игр в этом жанре.
Нами было смоделировано небольшое тестовое помещение, был взят в качестве персонажа бесплатный робот Kyle из Unity Asset Store и несколько наших простеньких моделек мебели. Затем мы заставили его ходить и взаимодействовать с предметами и пробовали запускать то, что получилось, на разных платформах. Все это делалось еще на Unity 4, так как у нас уже имелся немалый опыт работы с этим прекрасным движком.
Но, как это зачастую бывает, аппетит пришёл во время еды, и мы начали усложнять проект — как визуально, так и геймплейно. Не было никакой конкретной цели, не было задумки или сюжета. Простой полёт фантазии, вдохновения и желание сделать что-то похожее на любимые игры.
То, что у нас получалось в итоге, понравилось нам, и даже не только нам. Картинка обрела цвет, модели получили текстуры, освещение стало более уютным. Очень на руку сыграл контраст пасмурной атмосферы снаружи и ламповой — внутри помещения, благодаря чему многие отметили некую схожесть с любимым S.T.A.L.K.E.R.
Хотя изначально персонаж был взят совершенно спонтанно, уже на данном этапе он никому не показался чем-то инородным в этой картинке. Никто не подумал, что это временная модель для тестирования механики.
И даже наоборот — стали появляться интересные вопросы: почему этот робот находится в старом доме? Что случилось с людьми? Понимает ли он, для чего нужны те или иные предметы? Всё это показало нам, что мы движемся в верном направлении, и мы решили развивать эту тему и дать ответы на все вопросы. В результате мы, уже небольшой командой, привели игру вот к такому виду:
К этому моменту мы работали на Unity 4.6. Для оптимизации под мобильные платформы мы старались придерживаться планки в 100 дроуколлов (drawcalls). Деревья и кусты снаружи дома мы сделали спрайтами. Свет — только запеченный, потому что большинство мобильных устройств ещё не готовы к Realtime-теням ввиду слабой производительности.
Хочу отдельно отметить ассет, который нам очень понравился для тестирования производительности на мобильных устройствах:
FPS Graph. По сути, это упрощённая версия Profiler, который выводится прямо в приложении. С его помощью можно отслеживать по графику нагрузку на центральный процессор, память и рендер, видеть FPS, количество объектов, текстур в кадре и так далее.
Итого — у нас есть готовый прототип не самого плохого вида с базовым геймплеем. Возникает вопрос: что дальше? И в этот момент мы понимаем, что начали не с того конца.
Unity славится своей кроссплатформенностью, однако сделать красивую ПК-версию игры и адаптировать её впоследствии под мобильные устройства — звучит разумнее, чем делать наоборот, потому что для адаптации, в основном, нужно будет помучать текстуры, свет и постэффекты.
А если адаптировать мобильную игру под ПК — едва ли можно будет выжать из неё графику приемлемого ныне уровня. Либо это означает полную переделку контента с нуля с более высоким качеством, что весьма затратно. Поэтому мы решили начать всё с начала, но уже делая упор не на оптимизацию, а на качество картинки, и нацелиться на Steam.
К этому моменту Unity 5 вышла из беты и мы успели её как следует «пощупать». Оценив преимущества таких нововведений, как новая система освещения Enlighten (которая хоть и не работает ещё в полную силу, но тем не менее значительно улучшает качество картинки), новой системой Reflection Probes, великолепно сменившие старые добрые Cubemap, PBR шейдеры, благодаря которым наконец-то можно было добиться действительно Next-gen графики, а так же прочие вкусности, мы, не долго думая, решили сразу работать в Unity 5 — и до сих пор не жалеем.
Enlighten в действии. Глобальное освещение комнаты меняется в зависимости от яркости источника света
Reflection Probes. Теперь можно совершенно не задумываться о создании cubemap, Unity сама все делает за нас. А в результате мы можем иметь совершенно достоверные отражения и бесшовно состыкованные текстуры
С этого переломного момента и началась настоящая разработка. Мы собрали мощную команду из 3D-моделлеров, художников, программистов, звукорежиссеров, сценаристов и проделали серьёзную работу над документацией, потому как без организации было бы сложно контролировать стольких людей.
Основным помощником в этом выступил
Google Docs, так как он позволяет удобно работать с документами прямо в онлайне, давать доступ к чтению и редактированию любому количеству людей, имеет мобильную поддержку и совершенно бесплатен.
Для работы с roadmap мы отдали предпочтение
Gantter. Хотя сервис и не лишен недостатков, он оказался наиболее удобным и простым редактором диаграмм Ганта, какой нам удалось найти.
Игры жанра Adventure обычно характеризуются наличием небольших, но красочных локаций. Поэтому нам было важно вытянуть графику на хороший уровень и сделать качественную детализацию. Если по второму вопросу всё зависит от level-дизайнера, художников, моделлеров и качества и количества игрового контента, то сама картинка — результат не только хорошо нарисованных текстур и шейдеров, но и хорошо подобранных и настроенных эффектов постобработки.
К сожалению, не все встроенные эффекты удовлетворяли нашим рамкам качества и производительности, поэтому мы вновь прибегли к помощи Asset Store. Ниже мы покажем, какие эффекты мы использовали (стандартные и не очень), и покажем примеры их работы. Те, которые не являются частью стандартных эффектов Unity, легко можно найти по названию в Asset Store.
Depth of Field (DX11). DOF имитирует эффект глубины резкости (фотографам ближе термин ГРИП, глубина резко изображаемого пространства). С его помощью можно эффективно направлять взгляд игрока на нужный предмет или персонаж.
Сравните следующие две картинки и обратите внимание, как при выключенном эффекте теряется внимание на объектах, на которых оно сосредоточено при включенном. Кроме того, им можно успешно «прятать» места, которые игрок не должен увидеть. В частности, это земля за окном, которая выглядит слишком примитивно:
SSAO Pro — этот ассет — отличная альтернатива встроенным Screen Space Ambient Occlusion/Obscurance. Если говорить простыми словами, он в реальном времени имитирует затемнения от рассеянного освещения, тем самым повышая детализацию сцены. Стыки и углы объектов выглядят более мягкими. Примеры ниже:
Amplify Motion Blur — также является альтернативной стандартному Motion Blur. Назначение его понятно из названия — размытие в движении. Этот эффект легко воспроизвести в реальной жизни с помощью любой камеры, достаточно снять быстро движущийся объект.
Увидеть его работу в нашей игре невооруженным глазом можно только на достаточно динамичных моментах в игре (и это очень хорошо, так как иначе он бы постоянно напрягал игрока). Но когда эффект есть, динамика очень сильно повышается, смазывая картинку в нужных местах и усиливая впечатление реалистичности происходящего:
Остальные постэффекты не столь явны, но тоже вносят свой вклад.
Tonemapping помогает выравнивать экспозицию картинки в том или ином кадре. Vignetting and Chromatic Aberration создаёт виньетку и хроматические аберрации. Первое — затемняет углы кадра, что является распространённым художественным приёмом, а второе — слегка расслаивает картинку по краям на каналы (практически незаметно) что добавляет некой «мягкости» изображению.
Vintage Inkwell — накладывает на кадр цветовой фильтр, наподобие тех, что используются в Instagram. Noise and Grain — добавляет картинке лёгкую зернистость, что усиливает реалистичность.
Теперь мы хотим рассказать немного больше об игровых локациях. Поскольку мы сами решаем, что будет видеть игрок, и камеры находятся в заранее заданных положениях, мы смогли сэкономить на проработке некоторых участков, которые никогда не попадут в поле зрения игрока, и, соответственно, усилить прорисовку тех, которые он увидит.
Хотя этот подход используется в любых играх, в нашей он получился наиболее очевидным, и игровые локации действительно начинают напоминать сцены для съемок фильма. Камеры в The Uncertain, по сути, делятся на два вида: игровые камеры, в которых мы видим максимально большую часть локации и можем перемещаться на ней, и кинематографические камеры, которые активируются при взаимодействии с хотспотом или при диалоге.
Первые мы расставляли с учётом максимального охвата сцены и красоты композиции, а вторые — согласно давно установленным канонам в кинематографе касательно ракурсов видеосъемки.
При этом практически ни одна камера не является статичной. Геймплейные камеры слегка поворачиваются вслед за курсором игрока, а также могут немного перемещаться в пространстве в зависимости от расположения персонажа.
Кроме того, на всех камерах висит скрипт, который слегка покачивает их по всем осям, имитируя модную сегодня в фильмах «съёмку с рук». Всё это усиливает общую динамику игры и позволяет пользователям погрузиться в происходящее.
Перемещение по локации в данный момент осуществляется свободно, при помощи клавиш WASD или левого стика геймпада. Мышка или правый стик играют роль курсора. Кроме того, мы задействовали встроенный в Unity NavMesh, благодаря которому наш персонаж может сам подойти к любому хотспоту в пределах видимости.
Сами локации состоят в основном из статичных моделей. С некоторыми можно взаимодействовать. Если наш курсор находится близко к такому объекту, хотспот начинает подсвечиваться, и чем ближе — тем ярче. Одни хотспоты необходимо посетить для прохождения игры, другие лишь позволяют разглядеть предмет или узнать что-то новое. Есть и третья категория — «пасхалки», которые либо имеют хотспот, либо просто визуальные — и только знающие люди смогут разглядеть их.
Последнего добра в игре планируется сделать много, но внедряться оно будет очень ненавязчиво, не привлекая излишнего внимания и лишь даря легкую улыбку игроку, который её обнаружил и повод порассуждать о том или ином найденном предмете на форумах. Ну и, конечно же, ачивки.
Таким образом нам удается сочетать классический приключенческий геймплей, приятную для глаз графику и интересный сюжет — всё то, чего так ждут любители данного жанра. Тема «интерактивного кино» набирает обороты, и мы постараемся вас не разочаровать.
Сейчас игра находится в активной разработке. Вы можете следить за новостями в нашей
группе во «ВКонтакте» и на официальном сайте.
До скорой встречи в Steam.
Если вы работаете на технологии Unity, хотите рассказать о своём опыте разработки или задать вопрос экспертам — оставьте заявку нашим менторам с помощью специальной формы.
About the author