Unreal engine 4 игры на pc. Скрипт в блюпринте. Каскадные карты теней

  • Дата: 23.09.2019

И на нём начали клипать игры, даже уже несколько вышло. Часть получилась хорошей, а другая... скажем так, от них ожидали лучшего. Но все же они вышли, мы в них поиграли, и ждём новых творений на этом движке, так как бесплатный он, и как бы творить да творить. И сегодня я вам расскажу, какие игры выйдут в ближайшем будущем на 4 Unreal.

Ну, и первая игра, о которой я вспоминаю, когда слышу об этом конструкторе, так это Unreal Tournament . Шутер от первого лица с очень динамичным гемплеем, всё взрывается, кровь, кишки повсюду, и даже нет секунды отдохнуть, разве только перед возрождением, и то даже оно здесь почти что моментально. История игры идёт аж с 99 года, тогда вышла первая часть, и все просто были удивлены от её геймплея, дали спокойно лучшую игру года, так как скорость на экране завораживала, и нужно было иметь неплохую реакцию. Сетевой шутер с каждой новой частью не менял динамику сражений, а только графику в лучшую сторону. Всё оставалось и остаётся по сей день в духе старой школы.

Только в 3 части разработчики, которые являются и создателями движка, компания Epic Games , решили добавить военную технику в своём футуристическом стиле, и лишь малая часть восприняла эту новость гневно, мол "всё, игра сдулась, и не будет она больше такой, какой мы привыкли её видеть, да превратиться в обычный шутер...", но техника пошла только на пользу.

В Unreal Tournament также присутствует сюжет, но я его толком не знаю, да и наверно никто его не знает. Слышал лишь, что там какой-то турнир проводят, и всё происходит как в мультиплеере , только с ботами. Ну и кому это будет интересно проходить? Именно поэтому купив, ну или скачав с торрента, все быстренько регистрируются и бегут нажимать кнопку "Поиск игры". И если вы хотите вспомнить те самые ощущения, то скорей идите на официальный сайт, там качайте лаунчер Epic Games и совершенно бесплатно играйте в Unreal Tournament с просто офигительной графикой и безбашенным гемплеем.


А о об этой игре я слышал довольно , она тогда мне приглянулась, и я начал её ждать, но по сети стали ходит слухи, что заморозили этот проект, опять же разработчики Epic Games , и ни слуху ни духу от них. И вот, спустя какое-то время, Эпики начали высылать первые ключи для закрытого альфа тестирования. Тогда-то уже все поняли, что работа над игрой кипит и ничего замораживать не собираются, игра кстати называется Fortnite . Это некая смесь , a, всех и . Вам придётся играть за одного из, скажем, выживших, который, по всей видимости, обладает навыками строительства, огнестрельного и холодного оружия, да и добытчик ещё неплохой.

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

Да не забудьте собрать кучку таких же как вы в кооперативе , как говорится "Один в поле не воин". И если вас Fortnite заинтересовал, то записывайтесь на альфа-тестирование на официальном сайте, а игра по идее должна выйти в этом году.


Следующая по списку (но уже не от Epic Games , хватит) игра Fable Legends . Разрабатывается Lionhead Studios под крылом Microsoft , но увы, уже без Питера Молиньё. Кто хорошо знаком с игрой знают, что он был главным дизайнером. Сюжет игры разворачивается за 400 лет до первой части и будет неким приквелом Fable , вышедшей в 2004 году. К слову, есть ещё одна игрушка с таким же названием, появилась она в 96-м году и совсем от других разработчиков, в жанре квеста. Кто знает, связаны эти игры или нет, пишите в комментариях. Ну а мы вернёмся к сюжету, хотя по сути больше ничего неизвестно, только время, когда будут происходить действия.

Что касается геймплея, так его чутка изменили, добавили те части, которые никогда не должны были попасть сюда. К примеру, кооператив на четверых , возможно это и к лучшему, ведь всегда веселей поиграть с кем-то, чем в одиночку, но в некоторых играх он абсолютно не нужен, кто знает, может и Fable относится сюда. А мультиплеер теперь рассчитан на 5 человек, один из игроков будет злодей, а остальная четвёрка - отважные и добрые герои: Стерлинг , быстрый и вооружён мечом с ножиками, Инга , сильнейшая с щитом, Рук , бородач с арбалетом, да Уинтер , снежная королева и не думаю, что это окончательный список. Героям предстоит убить плохого парня своими силами, а тот, в свою очередь, сможет вызывать на поле сражения гоблинов и расставлять ловушки с засадами.

Также из разряда "Почему?": разрабы сделают игру по системе F2P и разобьют на сезоны, чтобы после окончания сюжета игроки не покидали игру, а покупали новое DLC с новыми квестами и сюжетом. Этими действиями Microsoft решили пополнить игру новой аудиторией, но есть и обратная сторона медали, игра может растерять старых фанатов. Из явных плюсов выделю графическую составляющую в своём стиле, большой, открытый и живописный мир, живущий по своим законам, а остальное всё пока что под вопросом.

Игра должна выйти в этом году на X-ne и поначалу только на нём, но потом анонсировали Windows 10 , теперь игра ещё будет и на PC с 10 виндой.


И как-то я забыл про стратегии, хотя буду точнее, все почему-то забыли этот жанр. Очень мало в наше время выпускают игры, где можно поуправлять государством и каждым бойцом. А если ещё сузить круг, стратегии в космосе так вообще по пальцам пересчитать. И Homeworld Remastered не утолил жажду, так что это собирается сделать инди-студия Snowforged Entertainment в Starfall Tactics .

В игре предстоит воевать на стороне одной из трёх враждующих фракций: VANGUARD , ECLIPSE INC и DEPRIVED . У каждой своя история, кто-то обычные войны, кому-то всего мало и они хотят большего, ну а некоторые просто затаили обиду на всех и готовы сражаться. Но это самая малая часть из того, что нужно знать об этой игре, всего лишь обложка. Создать огромную армию из лучших кораблей можно за любую фракцию. С учётом того, что каждый корабль можно оснастить чем угодно своеручно. От любого двигателя, корпуса, той же покраски, до нужного оружия и брони. И помимо обычного рынка, где всё это продаётся, есть чертежи. С их помощью и нужными ресурсами для создания вы сотворите уникальные корабли, коих не было ранее.

Думаю, про графику говорить не стоит, раз идёт речь о Unreal Engine 4 . Разрушения кораблей, лазеры повсюду, сам космос красив, но по видео гемплея видно, что летать мы будем в плоском пространстве. И хоть игра очень напоминает Homeworld и наверняка разработчики опирались на эту игру при создании своей, выходит вроде хуже или тоже самое. Но я буду надеяться, что ошибаюсь, ведь в Starfall Tactics отличная система настройки любого корабля и F2Pлейность проекта, хотя последнее вносить в плюсы игры не всегда стоит, но про донат пока ни слова. А выйдет игра фиг знает когда, мои поиски этой информации увенчались провалом, но включая вангу могу предположить, что в 2016 на ваших PC игра уже будет.


И раз уже начали говорить о стратегиях, продолжим, не так давно была анонсирована игра по вселенной Warhammer 40 000 с названием Battlefleet Gothic: Armada . Это название и раньше существовало в природе, это также была игра, только не компьютерная, а настольная, и это первая адаптация по ней. Бои будут происходить в космосе в реальном времени. Флоты Империи, Хаоса, Орков и Эльдаров встретятся в Готическом секторе, да победит сильнейший. События разворачиваются в те времена, когда начнётся вторжение Абаддона Осквернителя и Империя будет восстанавливать мир и порядок. Нам выпадет честь играть за Императора и отбиваться от всех четырёх врагов в секторе. Полностью сюжет нам не рассказывают разрабы, но поделились инфой, как они собираются сделать игровой процесс, ведь видео до сих пор нет, и все наслаждаются только скриншотами.

По геймплею известно то, что будет большая карта, и все в системе принадлежит Императору. Но это только в начале, врагов немало: Хаос, Орки, Эльдары и сам Абаддон. Действия на глобальной карте пошаговые, но самое интересное разворачивается в бою. Перед началом вы сможете (прямо как в ) создать свой флот, и как в Starfall Tactics оборудовать каждый корабль. Собрав армию нужно воевать, в бою вы можете даже не управлять ничем, ваши корабли, а точнее их капитаны, которым свойственно прокачиваться после боёв, если выжили, оснащены неплохим интеллектом. И действуют по обстоятельствам, но вы можете им всё-таки отдавать приказы, а если не подчинятся, разрешено казнить. Вы же Император, вам можно, тем самым вы припугнёте других капитанов. Но не всех нужно убивать, мало ли кто-то не захочет отступать и во славу Императору, дабы доказать свою верность пойдёт на таран и принесёт себя в жертву. Тем просто нужно приказать ещё раз, пускай служит, хотя есть вариант разрешить ему. Но часто это делать не стоит, капитаны в скором времени поймут, что вы ослабели, потеряли хватку, потакаете всем и начнут восстание.


Так что игрокам предстоит трудный выбор - быть жестоким, но с сильной армией, которая за него в огонь и в воду, или же добряком с горсткой предателей. Ну, и напоследок обрадую любителей Warhammera и Экстерминатуса. Он в игре будет, если, к примеру, вы не удержали планету, и враг захватил её, одна кнопка и идёт отсчёт до уничтожения планеты. Отобрали назад - таймер выключается.

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

  • Официальный сайт... не нашёл и приуныл

    А на этом первый выпуск "Лучшие игры на Unreal Engine 4 " подошёл к концу, у меня в списке ещё игр так 10 есть точно, и если хотите второй части, то пишите в комментариях и предлагайте свои известия.

  • О, сколько нам открытий чудных подарила и еще подарит дивная конструкция под названием Unreal Engine 3 . Действительно, специалисты Epic Games знают свое дело. На последней версии этого движка разработано уже более десятка игр, нашедших популярность среди игроков всего мира. И примерно столько же проектов, использующих этот движок, сейчас находятся на стадии разработки. Каким же особенно полюбившимся проектам подарило жизнь детище мастеров из Epic Games ? Итак, вот они:

    Жанр: FPS
    Платформа: PC , PS3 , Xbox 360
    Разработчик: Epic Games
    Издатель: Midway Games

    В первую очередь, разумеется, движок создавался ради продолжения самого популярного мультиплеерного проекта (пусть простят меня «квакеры», но…). Вышедшая игра вполне оправдала надежды.

    На такой треноге отчего бы и не позлодействовать?

    Парадоксально, но Epic обратила большое внимание на проработку интеллекта ботов. В процессе разработки был создан сервер, на котором устраивались сражения с участием ботов и обычных игроков. Участники боев должны были определить, какой противник – живой, а какой – компьютерный. Естественный отбор… Теперь Unreal может похвастаться даже неким подобием сюжета для одиночного режима, объединяющим сражения на отдельных картах в полномасштабную борьбу с инопланетными захватчиками.

    Решающий фактор – скорость.

    Ну, и, конечно, полный набор для любителей онлайн-сражений. В основном, режимы игры остались прежними, хотя, игра лишилась привычных Bombing Run , Double Domination и Assault . Можно было бы сказать, что разработчики сделали упор на упрощение, если бы не масштабная система использования транспортных средств, сильно меняющая принцип ведения боя и превращающая некоторые сражения в футуристические гонки.

    Жанр: FPS
    Платформа: PC , PS3 , Xbox 360
    Разработчик: 2K Marin , 2K Boston
    Издатель: 2K Games

    Сколько бы ни уходили фантасты в бескрайние просторы космоса, они всегда будут возвращаться к романтичному стим-панку, стилю, который можно описать как: «Что было бы, если бы фантасты 60-х годов решили написать фантастический роман про наше время». Мрачная антиутопия от рассказывает о таинственном городе Восторг , построенном под водой для того чтобы создать новое общество с новыми идеалами. Восторг ставил ценность научной мысли превыше норм человеческой морали, и однажды вместе с моралью утратила ценность и человеческая жизнь

    А ведь Минздрав предупреждал…

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

    Не злите Большого Папочку!

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

    Жанр: Shooter , Action
    Платформа: Xbox 360
    Разработчик: Epic Games
    Издатель: Microsoft

    Сказать по правде, первая Gears of War , наделавшая в свое время столько шума, была далеко не идеальным проектом. Отличная на тот момент графика и сумасшедший по динамике игровой процесс всей погоды не сделают. В плане сюжета игра сильно проседала. Относительно противника, например, не было известно ничего, кроме того, что «это плохие дядьки, в них надо стрелять». Да и разнообразия в пейзажах не наблюдалось.

    Такого лобовой атакой не возьмешь.

    Однако, разработчики взяли эти моменты под контроль, и в результате добились от Gears of War 2 отличной сбалансированности. Противники теперь имеют свою цивилизацию и даже социальное расслоение. Появился интересный сюжет, показаны отношения между игровыми персонажами. Мир планеты Сера стал куда более красочным и разнообразным.

    Война ошибок не прощает…

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

    Жанр: Action , Adventure
    Платформа: PC , PS3 , Xbox 360
    Разработчик: Digital Illusions Creative Entertainment
    Издатель: Electronic Arts

    «И почтальон сойдет с ума, разыскивая нас». Совершенно новый смысл принимают эти слова в контексте футуристического тоталитарного мира, созданного студией DICE . В этом мире государством контролируется абсолютно все сферы жизни населения, кроме одной – почты. Ну, электронную-то почту можно и прочитать, а чтобы узнать, что скрывается в обычном конверте, нужно догнать почтальона.

    Мегаполис будущего, чистый и холодный.

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

    При исполнении трюков можно увидеть свои любимые руки-ноги.

    По своей сути, Mirror"s Edge это симулятор столь модного на сегодняшний день паркура. Хотя, и без элементов FPS тоже не обошлось – героиня может вступать в схватки и даже использовать захваченное оружие. Однако, благодаря стараниям разработчиков, игру не получится превратить в обычный шутер – менять обоймы нельзя, да и исполнению трюков оружие мешает. Вообще, игра получилась довольно линейная, и свобода действий игрока сводится лишь к выбору из возможных вариантов прохождения заданного «коридора». Но если не делать из этого трагедии, то удовольствие от игры можно получить немалое.

    Жанр: RPG
    Платформа: PC , Xbox 360
    Разработчик: BioWare , Demiurge Studios
    Издатель: Electronic Arts

    И так бывает – движок, создававшийся для FPS , был использован для создания RPG . Очередная сага от создателей Baldur"s Gate , Knights of the Old Republic и Jade Empire выполнена в жанре космической одиссеи. Сюжет игры довольно интересен и по количеству интриг может свободно конкурировать со Star Wars . Создается эффект некоторой нелинейности из-за возможности свободно перемещаться по космосу на личном корабле, брать дополнительные задания, выполняя их в произвольном порядке, исследовать безжизненные планеты, охотиться на космических пиратов и так далее. Правда основная сюжетная линия коротковата, но если не ломиться сразу к финалу, то можно довольно долго исследовать пространства «последнего рубежа».

    Интересно, синтетическая раса должна быть агрессивна по-умолчанию?

    Честно сказать, каких-то принципиальных изменений, по сравнению с предыдущими играми BioWare , в Mass Effect не произошло (кто в курсе, тот поймет). По ходу своего путешествия герой встречает шесть игровых персонажей, которые присоединяются к его поискам. Одновременно в боевых операциях могут участвовать только трое, включая главного героя. Процесс ведения боя предоставляет возможность игровой паузы, во время которой можно отдать приказ напарникам и использовать специальные способности. В игре три основных класса (воин, техник и телепат) и три промежуточных, сочетающих способности основных.

    Атака адепта вынуждает бестолково барахтаться в воздухе.

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

    Так что можно сделать вывод об очень большой эффективности Unreal Engine 3 . Однако, по всей видимости, это был период расцвета, который постепенно подходит к концу. По-прежнему есть в разработке игры на этом движке, и игры неплохие. Среди них , Blade & Soul , , Stargate Worlds , . Но самые перспективные и ожидаемые проекты ищут в качестве базы нечто иное.

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

    Отличительной особенностью игры, являются её Quick Time Events , выполненные по самому мастерски срежиссированному подходу. Присутствуют и адреналиновые погони, как на машинах, так и пешие с применением паркура - бег по крышам. Также, в The Bourne Conspiracy отличная графика и анимация. Мэтт Дэймон в комплекте отсутствует!

    Stranglehold

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

    Достойное продолжение оригинального фильма, которое заслуживает собственную экранизацию. Перестрелки в slo-mo , отталкивание от стен, покатушки на столах, смертоносные комбо, на которых можно совершенствовать мастерство и итоговый ранг прохождений уровней, бесподобное воплощение Чоу Юньфата , в 3D модели которого, узнаётся фирменное выражение лица, инспектора ""Текилы"" - одноимённого персонажа фильма, а теперь и игры.

    Clive Barker’s Jericho

    Шутер с элементами жанра horror, где во главе угла, стоит командная тактика, благодаря которой, можно переключаться между персонажами.

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

    Серия Mass Effect

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

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

    Серия Gears of War

    Родоначальник движка Unreal Engine 3 , успешная серия, которая, как и трилогия Mass Effect, выделяется разным стилем в каждой последующей игре.

    Механика данных шутеров, создала моду на игры с укрытиями и перекатами. Gears of War, по сути своей, остаётся непростой и в меру сложной игрой, более классическим и безбашенным стал лишь Gears of War: Judgment - от создателей оригинального Painkiller и Bulletstorm .

    Mirror’s Edge

    Фантастически красивый и ""чистый"" паркур-экшен, который держится на грани своего непростого баланса (а ведь игра то нелёгкая).

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

    Серия Borderlands

    Капитально изменившийся во время разработки проект, превратившийся из серой и невзрачной графики, в сочное шоу, которое скрасил стильный Сэл-шейдинг .

    Если бы у этой серии ролевых шутеров (не берем в счёт Tales from the Borderlands ), был изначальный типаж, могло и не выйти признания данной серии.

    Painkiller: Hell & Damnation

    Ремейк и сиквел одновременно: правильный, переработанный и дополненный.

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

    Injustice: Gods Among Us


    Файтинг, в котором, главными графическими и технологичными приёмами, являются разрушаемые боевые ""арены"" и физическая модель ударов.

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

    Bulletstorm


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

    Кстати, дизайнеры постарались на славу, проработка мира сделана вручную, без повторений.

    Серия Batman: Arkham

    Неожиданный прорыв серии Arkham прекрасен сам по себе. В этих играх настолько всё идеально, что диву даёшься. Графическое исполнение не стоит выделять чем-то конкретным, оно воедино цельно.

    В грядущей игре Batman: Arkham Knight, все возможности движка выглядят так, что некоторые путают его с только набирающим обороты Unreal Engine 4.

    BioShock Infinite


    Не считая первых двух частей, которые созданы на Vengeance Engine 2 - движке выросшем из Unreal Engine 2.5 , именно третья часть является единственным проектом основанным на Unreal Engine 3 .

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

    Enslaved: Odyssey to the West


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

    Единая гармония всех элементов игры.

    DmC: Devil May Cry

    Unreal Engine 3, очень выгодно пошёл DMC на пользу, уже набившие на знакомой технологии руку, авторы из компании Ninja Theory , выдали настоящую ""конфетку"", сравнивая с тем же Enslaved, видно, что они выпустят ещё не один шедевр.

    Настолько разноплановые разработчики: по стилю, взрослости и манере подачи.

    Murdered: Soul Suspect


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

    Атмосферное приключение по городу Салем, мало кто принял всерьёз, а зря. Опять же, умелая анимация лиц присутствует.

    Dishonored

    Исключение из правил.

    Тот случай, когда не самая лучшая графика на Unreal Engine 3, компенсируется дизайном, атмосферой и слегка карикатурными персонажами.

    Spec Ops: The Line

    Песчаные эффекты, ветер, бури и освещение - один из графических столпов игры.

    Качественная механика и шокирующий сюжет, это основа.

    Mortal Kombat

    Жесточайшие фаталити, рентген удары, ощущаемая физика владения персонажем и выдержанный мрачный стиль.

    Ни на каком ином движке, Mortal Kombat (2011) не представить.

    Sherlock Holmes: Crimes & Punishments

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

    Outlast

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

    Свет и тень, самое ""жуткое"" в Outlast.

    The Vanishing of Ethan Carter

    Ещё один проект, который ""сразу и не узнать"".

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

    X-Men Origins: Wolverine

    Запоминающийся слэшер, не оставляющий шансов скукоте.

    Выделился большим количеством красочной крови на один квадратный метр.

    Бонусом, Хью Джекман!

    Thief

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

    Движок Unreal Engine берёт свои корни ещё в далеком 1998 году. С тех пор было создано немало потрясающих игр. В этой статье мы расскажем про 7 лучших из них. На момент создания движка он использовался для создания простых игр с 2D видом . Постепенно начали появляться более современные 3D экшен игры. Популярность движка обеспечивала уникальная система работы, он имеет одновременно: графическое, физическое ядро, встроенный искусственный интеллект, а также инструменты для управления системами файлов сетями. Главная достопримечательность заключалась в наличии готовой среды для создания игр – UnrealEd .

    #7 - Batman: Arkham Knight

    Данная игра имеет жанр экшен боевика. В основе сюжета лежат события, которые произошли спустя 9 месяцев после известной войны в Аркхем Сити. Так как Джокер мёртв, Готэм начинает возвращаться в привычную колею жизни, наступает более безопасное время для жителей, но равновесие сил пропадает, когда в очередной день жители Готэма бросаются друг на друга в кафе без видимой причины.

    После такого представления на сцене появляется Пугало с заявлением, что он использовал лишь 100 г своего нового токсина и она намерен продолжать, каждый день увеличивая дозу. В связи с этим жители срочно эвакуируются с города.


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

    #6 - Street Fighter V

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


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

    #5 - We Happy Few

    В центре внимания игры 1964 год , когда в городе под названием Веллингтон-Уэллс (наименование вымышлено) были разработаны препараты для увеличения радости, она так и называется - сыворотка «Радость». В её основе лежит очищение воспоминаний. Всё дело в том, что во время Второй Мировой Войны жители прибегли к использованию крайне плохих вещей, что спровоцировали сильное подавление духа нации. Сыворотка призвана устранить эти воспоминания и сделать людей более счастливыми, при чем насильно. Те жители, что отказываются употреблять «Радость» называются «Зануды» и они искореняются.


    Главный герой – Артур Гастингс , обычный клерк, который занимается наложением цензуры на газеты «несчастливых» новостей из прошлого. Перебирая архивы газет, он обнаруживает своё фото и младшего брата на обложке. В его голову прокрадываются воспоминания, и они приносят боль. С целью узнать самого себя он отказывается пить «Радость». После окончания эффекта коллеги различают в нём «Зануду» и начинают преследовать. Это заставляет Артура бежать в подземелья.

    #4 - Gears of War 4

    Культовая серия игр снова вдохновляет пользователя погрузиться в мир «мессива» . В отношении геймплея значительных отличий от предыдущих частей не наблюдается. Игра так и осталась отличным шутером, где присутствуют многочисленные враги и укрытия. Оружия действительно много, вплоть до автомата с бензопилой в роли подствольного штыка. Сражения происходят как с Ордой, они хоть и жуткие, но живые, так и роботами КОГ. Все монстры стремятся поглотить героя.


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

    #3 - Mortal Kombat X

    Mortal Kombat входит в тройку лучших игр на движке Unreal Engine . Она имеет жанр файтинг, который рассматривался ранее на примере Street Fighter V . Здесь присутствует множество персонажей, несметное количество ударов, но их сделать бывает достаточно сложно, так как комбинации длинные и должны выполняться точно. В основе популярности игры лежит великолепный геймплей, зрелищные бои и красивые модели персонажей, местности для драк.


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

    #2 - BioShock Infinite

    BioShock – это интереснейший шутер, который завораживает своей атмосферой и имеет некоторые элементы RPG , то есть можно прокачивать способности персонажа. Игра переносит пользователя в далекий 1912 год , действия происходят в парящем городе Колумбия.


    Пользователю предстоит играть за детектива частной практики Букера Девитта, который попадает в город для поиска Элизабет. После обнаружения девушки оба героя становятся заключенными войны между властями и мятежниками, простым, рабочим классом.

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

    #1 - Dishonored

    Стелс-экшен сегодня становится достаточно популярным жанром, но соревноваться с Dishonored сложно. Дополнительно в игре присутствуют элементы жанра RPG.

    Игра переносит в город, который полностью погряз в эпидемии чумы – это Дануолл. Заметно, что город во многом напоминает Лондон древних лет, приблизительно Викторианской эпохи. Главный герой – Корво Аттано желает восстановить справедливость, ведь на него повесили вину в убийстве императрицы. Из тюремного заключения лорд убегает и пытается наладить равновесие добрых и злых сил.

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


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

    Это руководство призвано помочь разработчикам улучшить производительность в играх, сделанных на Unreal Engine 4 (UE4). Здесь мы расскажем об инструментах, которыми можно пользоваться и в самом движке, и за его пределами, о наилучших подходах в использовании редактора, а также о скриптинге, помогающем увеличить фреймрейт и стабильность проекта.

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

    При написании этого руководства использовался UE4 версии 4.14.

    Единицы измерения

    Для измерения оптимизационных улучшений используются кадры в секунду (эту единицу измерения также называют «фреймрейтом» или «фпс») и миллисекунды на кадр («мс»).

    График ниже показывает отношение между средним фреймрейтом и миллисекундами.

    Чтобы узнать мс при каком-либо фпс, просто узнаем величину, обратную фпс (т.е. берем 1 и делим ее на фпс), а затем умножаем ее на 1000.

    1/ФПС x 1000 = МС

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

    Вот пара примеров увеличения фпс на 20 кадров в секунду:

    • Чтобы поднять фпс с 100 до 120, нужно улучшить результат на 1,66 мс
    • Чтобы поднять фпс с 10 до 30, нужно улучшить результат на 66,67 мс

    Инструменты

    Перед тем, как начать, давайте рассмотрим три инструмента – чтобы понять, что происходит под капотом движка. Это UE4 CPU Profiler, UE4 GPU Visualizer и Intel Graphics Performance Analyzers (Intel GPA).

    Profiler

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

    Чтобы найти Profiler, кликните в UE4 на Window > Developer Tools > Session Frontend.

    Как добраться до окна Session Frontend

    В Session Frontend выберите вкладку Profiler.

    Profiler в Unreal Engine

    Теперь, когда вы в окне Profiler, выберите Play-In-Editor (PIE), а затем выберите Data Preview и Live Preview, чтобы увидеть данные, считываемые с игры. Чтобы начать захват данных, нажмите Data Capture, а чтобы сохранить эти данные для дальнейшего просмотра, отожмите Data Capture.

    Просмотр процессов через Profiler

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

    GPU Visualizer

    UE4 GPU Visualizer определяет, сколько вычислительных ресурсов требуется на проходы рендеринга (от «rendering pass»), а также позволяет во всех подробностях просматривать, что происходит в пределах того или иного кадра.

    Открыть GPU Visualizer можно через консоль разработчика, вписав туда «ProfileGPU».

    Консольная команда ProfileGPU

    После того, как вы впишите команду, появится окно GPU Visualizer. В нем демонстрируется, сколько времени занимают проходы, а также примерное расположение этих проходов в сцене.

    Просмотр процессов через GPU Visualizer

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

    Intel GPA

    Intel Graphics Performance Analyzers (Intel GPA) – это набор инструментов для анализа и оптимизации, призванных помочь разработчикам сделать свои графические проекты более производительными.

    В этом руководстве мы сфокусируемся на двух аспектах этого набора: Analyze Application и Frame Analyzer. Для начала загрузите GPA с Intel Developer Zone. Установив, скомпилируйте свой проект с настройкой Development (чтобы выбрать ее, кликните на File > Package Project > Build Configuration > Development).

    Когда проект скомпилируется, запустите Graphics Monitor, кликните на пункт Analyze Application, выберите нужный файл *.exe в поле Command Line и, нажав на кнопку Run, запустите его.

    Далее запустится игра – так же, как запускается обычно, однако в левом верхнем углу теперь будет меню со статистикой. Чтобы расширить его, кликните Ctrl+F1. Если нажать на Ctrl+F1 один раз, появится несколько окошек с показателями, измеряемыми в реальном времени. Если нажать Ctrl+F1 еще раз, появится список команд (плюс горячие клавиши, которые нужно нажать для их выполнения), с помощью которых можно экспериментировать c игрой, пока та будет запущена.

    Меню Intel GPA в игре

    Чтобы сделать кадр для последующего анализа в Frame Analyzer, нужно зайти в игру и сделать два дополнительных действия.

    Сначала включите Toggle Draw Events. Чтобы сделать это, впишите в консоли «ToggleDrawEvents».

    Консольная команда ToggleDrawEvents

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

    Наконец, сохраните кадр, нажав на горячие клавиши Ctrl+Shift+C.

    Сохранив кадр, запустите Graphics Monitor, кликните на пункт Graphics Frame Analyzer и выберите кадр, который нужно загрузить. После того, как сохранение будет завершено, программа покажет всю информацию о графике, имеющейся в кадре.

    Пример использования Intel GPA

    Обилие данных в Intel GPA поначалу кажется сложным, поэтому давайте начнем с самых больших фрагментов информации. В правом верхнем углу окна выставьте обе оси (X и Y) на GPU Duration – в результате получится график того, какие команды отрисовки в этом кадре являются наиболее ресурсоемкими.

    В нашем примере, т.е. в кадре с пустынным ландшафтом, видно, что самым ресурсоемким получился базовый проход. Выбрав самый большой пик на графике (то есть, в сущности, самую ресурсоемкую команду отрисовки), а также пункт Highlighted в левом нижнем превью-окне (оно называется Render Target Preview), мы видим, что причиной пика стал ландшафт (он подсвечен розовым цветом).

    Далее, перейдя в окно Process Tree List (оно находится выше превью-окна и показывает список процессов), чтобы найти выбранную команду отрисовки, мы видим, что этот ландшафт состоит из 520200 примитивов, а на его обработку у GPU (это и есть показатель GPU Duration) уходит 1,3185 миллисекунд (мс).

    Поиск самой ресурсоемкой команды отрисовки в кадре

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

    Во-первых, ландшафт можно пересобрать при помощи режима Manage у инструмента UE4 для создания ландшафтов, что позволяет снизить количество примитивов до 129032, а GPU Duration – до 0,8605 мс. Таким образом, сцена оптимизируется на 5%.

    Видим уменьшение GPU Duration

    Чтобы снова снизить ресурсную «стоимость» ландшафта, давайте взглянем на материалы. Наш ландшафт использует материал с 13 текстурами 4096 x 4096 (4K), и в результате на текстурный стриминг приходится в целом 212,5 Мб.

    Просмотр отрендеренных текстур в Intel GPA

    Сжав все ландшафтные текстуры до 2048 х 2048 (2K), мы сократили GPU Duration до 0,801 мс и улучшили производительность на дополнительные 6%.

    В итоге снижение текстурного стриминга для ландшафта до 53,1 Мб и уменьшение числа примитивов позволили сделать проект более быстрым. И все это ценой лишь очень небольшого снижения визуального качества ландшафта.

    Видим снижение GPU Duration, достигнутое благодаря снижению размера текстур

    В целом, просто пересобрав сцену и изменив текстуры, мы сумели достичь следующего:

    • Снизили GPU Duration при обработке ландшафта на 40 % (с 1,3185 до 0,801 мс)
    • Улучшили фпс на 18 кадров (с 143 до 161)
    • Снизили мс на 0,7 миллисекунд

    Оптимизация в редакторе

    Forward Rendering против Deferred Rendering

    Deferred Rendering – это стандартный метод рендеринга, используемый в UE4. Использование Deferred Rendering, как правило, улучшает картинку, но и может повлечь проблемы с производительностью, особенно в VR-играх и на слабых машинах. В данных случаях разумнее переключиться на Forward Rendering.

    К примеру, в сцене Reflection из магазина Epic можно заметить что между рендерингом методами Deferred и Forward есть некоторые отличия.

    Сцена Reflection, отрендеренная методом Deferred

    Сцена Reflection, отрендеренная методом Forward

    При Forward-рендеринге страдают отражения, освещение и тени, но остальные визуальные элементы не меняются. В итоге производительность улучшается, но нужны ли такие жертвы, решать, разумеется, вам.

    Если взглянуть в Intel GPA на кадр из этой сцены, отрендеренной методом Deferred, мы увидим, что сцена работает на 103,6 мс (9 фпс), и значительную часть этого времени занимает обработка освещения и отражений.

    Данные о кадре из сцены Reflection, отрендеренной методом Deferred на Intel HD Graphics 530

    А если взглянуть на кадр, отрендеренный методом Forward, мы увидим, что показатель «мс» улучшился с 103,6 до 44,0 (т.е. на 259%), а больше всего времени уходит на базовый проход и пост-обработку, над оптимизацией которых тоже можно поработать.

    Данные о кадре из сцены Reflection, отрендеренной методом Forward на Intel HD Graphics 530

    Уровень детализации

    Статические сетки в UE4 могут состоять из тысяч или даже сотен тысяч треугольников – чтобы показать самые мельчайшие детали, которыми 3D-художник украсил свою работу. Однако, когда игрок находится далеко от модели, он этих деталей не видит, а движок эти треугольники по-прежнему обрабатывает. Чтобы решить эту проблему и тем самым оптимизировать игру, мы можем использовать так называемые «уровни детализации» (или просто LOD – от англ. «level of detalization»), чтобы на близком расстоянии эти детали показывались, а на далеком – нет.

    Генерация LOD

    В стандартном пайплайне LOD’ы создаются 3D-моделлером еще при создании самой модели. Хотя этот метод позволяет контролировать конечный результат, в UE4 встроен отличный инструмент для автоматической генерации LOD’ов.

    Автогенерация LOD’ов

    Для этого выберите нужную модель, перейдите во вкладку Details, а затем к пункту LOD Settings. Там найдите пункт Number of LODs (т.е. количество уровней детализации) и впишите туда нужное значение.

    Автоматическая генерация уровней детализации

    Кликните на Apply Changes. Для движка это станет сигналом для генерации нескольких LOD’ов, и оригинальной моделью среди них будет LOD0. В примере ниже показано, что при создании пяти LOD’ов количество треугольников у нашей статической сетки уменьшается с 568 до 28 – это значительное снижение нагрузки на GPU.

    Количество треугольников и вершин, а также размер на экране для каждого LOD’а

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

    Визуальная демонстрация LOD’ов, показанная в зависимости от размера на экране

    Материалы для LOD’ов

    Еще одна функция LOD’ов – это то, что каждый из них может использовать собственный материал. Это позволяет еще больше снизить «стоимость» статической сетки.

    Материалы, присвоенные каждому уровню детализации

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

    Эту проблему можно решить при помощи LOD’ов. Поскольку LOD0 детализирован до такой степени, что на нем видны мелочи вроде болтов и шурупов, когда игрок рассматривает этот объект вблизи, то испытывает более сильный эффект погружения. Поскольку все эти детали смоделированы, на первом LOD’е от карты нормалей можно отказаться. Когда игрок удаляется от этого объекта, движок переключается на другой LOD, на котором как раз стоит карта нормалей, снижающая детализацию модели. Когда игрок удалится еще дальше, карту нормалей можно убрать, потому что она станет слишком маленькой и ее попросту не будет видно.

    Статические сетки-экземпляры

    Каждый раз, когда на сцене появляется новый объект, это требует вызова дополнительной команды отрисовки на устройстве, обрабатывающем графику. Если это статическая сетка, то для каждой копии этой сетки потребуется отдельный вызов команды отрисовки. Один из способов оптимизировать это (т.е. ситуацию, когда одна и та же статическая сетка повторяется на сцене несколько раз) – создать экземпляры статических сеток и тем самым снизить количество вызываемых команд отрисовки.

    К примеру, у нас есть две сферы, состоящие из 200 восьмигранных сеток – одна зеленая, а другая синяя.

    Сфера из статических сеток и сеток-экземпляров

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

    Команды отрисовки для 200 статических сеток (максимум – 569)

    Синие восьмигранники – это сетки-экземпляры. Это значит, что для генерации всех этих моделей использовался только один набор команд отрисовки.

    Команды отрисовки для 200 сеток-экземпляров (максимум – 143)

    Если взглянуть на оба примера через GPU Visualizer, то базовый проход для зеленой (со статическими сетками) сферы занимает 4,30 мс, а для синей (с сетками-экземплярами) – 3,11 мс. Таким образом, мы оптимизируем сцену на 27%.

    О сетках-экземплярах нужно знать одну вещь – если у такой сетки рендерится какая-то часть, она будет рендериться и у всех остальных «клонов» этой сетки. То есть, если какой-то из «клонов» оказывается за пределами камеры, наш оптимизационный потенциал растрачивается впустую. Поэтому рекомендуем делать сетки-экземпляры небольшими кучками – вроде груды камней, кучи мешков для мусора, горы коробок или модульных зданий, находящихся поодаль.

    Если большинство сеток-экземпляров находится за кадром, они по-прежнему рендерятся

    Иерархические статические сетки-экземпляры

    Если вы используете статические сетки с LOD’ами, обратите внимание на иерархические сетки-экземпляры.

    Сфера из иерархических сеток-экземпляров с LOD’ами

    Как и стандартные сетки-экземпляры, иерархические сетки-экземпляры снижают количество команд отрисовки, но также используют информацию о LOD’ах.

    Сфера из иерархических сеток-экземпляров с LOD’ами; вид вблизи

    Occlusion Culling

    В движке UE4 функция Occlusion Culling – это система, позволяющая сделать так, чтобы объекты, которые игрок не видит, не рендерились. Это позволяет снизить системные требования к игре, поскольку движку больше не приходится рисовать абсолютно все объекты абсолютно во всех сценах и абсолютно во все кадрах.

    Восьмиугольники, разбросанные по сцене

    Чтобы видеть загороженные объекты (они будут показаны прозрачными кубами с зелеными краями), в консоли редактора введите «r.VisualizeOccludedPrimitives 1». Чтобы выключить эту настройку, вместо «1» впишите «0».

    Края загороженных сеток; эти края стали видны после использования команды r.VisualizeOccludedPrimitives 1

    То, будет сетка рендериться или нет, зависит от так называемого «граничного куба» (от англ. «bounding box»). Благодаря ему некоторые объекты могут быть невидимы для игрока, но видны для камеры – в таком случае движок принимает решение рендерить эти объекты.

    Просмотр границ объекта в окне для работы с объектом

    Если сетку нужно отрендерить до того, как ее увидит игрок – например, для рендеринга анимации бездействия (от англ. «idle animation», это анимация персонажа, которая активируется, когда он стоит на месте и ничего не делает; это может быть чесание затылка, ковыряние ногой в земле и т.д.) – то размер граничного куба можно увеличить. Это можно сделать в окне для работы с объектом, в меню Static Mesh Settings. Ищите там пункты Positive Bounds Extension и Negative Bounds Extension.

    Задаем масштаб для границ объекта

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

    Давайте представим мысленный эксперимент, где мы создаем 3D-модель, а затем экспортируем ее в UE4. Как нам подойти к созданию арены в стиле Колизея?

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

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

    Зависит от нескольких факторов. Во-первых, от того, на какие кусочки будет порезана арена, и во-вторых, от того, как форма этих кусочков будет влиять на размер граничных кубов (что важно для Occlusion Culling). Чтобы было проще, давайте представим, что игрок использует камеру с 90-градусным углом обзора.

    Вариант первый – «нарезанная пицца». То есть мы создаем 8 идентичных острых кусочков, «носы» которых направлены в центр арены. Этот метод прост, но для Occlusion Culling он подходит не очень, поскольку в этом случае будет много перехлестов между граничными кубами. Если игрок будет стоять в центре и смотреть вокруг, его камера будет захватывать 3-4 куба, т.е. большую часть времени движку придется рендерить половину арены. В самом худшем случае игрок может стать спиной к стене, посмотреть на арену вокруг него и тем самым захватить в кадр все 8 кусочков «пиццы». Оптимизации никакой.

    Вариант второй – «крестики-нолики». Здесь мы создаем 9 кусочков. Это не самый традиционный метод, но его преимущество в том, что здесь нет перехлестов между граничными кубами. Как и в случае с «пиццей», если игрок будет стоять в центре арены, то захватит в кадр 3-4 кусочка. Однако, став спиной к стене, он захватит в кадр 6 из 9 кусочков, что по сравнению с «пиццей» дает некоторую оптимизацию.

    Последний вариант – «нарезанное яблоко» (1 центральный кусочек и 8 боковых). Это самый распространенный метод для этого мысленного эксперимента, и очень неплохой – перехлест между граничными кубами есть, но небольшой. Если игрок будет стоять в центре арены, то захватит в кадр 5-6 кусочков, но в отличие от первых двух вариантов, в самом худшем случае (вплотную спиной к стене) будут рендериться те же 5-6 кусочков.

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

    Каскадные карты теней

    Хотя каскады динамических теней (от англ. «dynamic shadow cascade») добавляют вашей игре высокий уровень детализации, они могут оказаться очень «дорогостоящими» в плане производительности – чтобы играть в такую игру без потери фреймрейта, понадобится мощный PC.

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

    «Стоимость» каскадов динамических теней на Intel Graphics 350

    Значением в каскадах динамических теней можно управлять динамически. Это можно сделать несколькими способами:

    • Поменяв качество теней в настройке Settings > Engine Scalability Settings > Shadows
    • Отредактировав параметры в файле «BaseScalability.ini»: в настройках Shadow.CSM.MaxCascades (между «0» и «4») и sg.ShadowQuality (между «0» и «3» – для «низкий», «средний», «высокий» и «эпический»)
    • Добавив нод Execute Console Command в блюпринт игры, где вы вручную поменяли параметр Shadow.CSM.MaxCascades

    Оптимизация через скриптинг

    Отключение полностью прозрачных объектов

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

    Чтобы сделать это при помощи блюпринтов, в UE4 нужно задействовать несколько разных систем.

    Набор параметров для материалов

    Во-первых, создаем набор параметров для материалов (или просто MPC – от англ. «material parameter collection»). Здесь будут храниться линейные и векторные параметры, которые можно будет привязать к любому материалу в игре. Их можно использовать для модификации этих материалов прямо во время игры – для создания динамических эффектов.

    Создаем MPC, кликая на вкладке Content Browser по Add New > Materials & Textures > Material Parameter Collection.

    Создание MPC

    Будучи в MPC, мы можем создать, назвать и задать дефолтные значения для линейных и векторных параметров. В нашем случае понадобится линейный параметр – мы назовем его Opacity (т.е. «прозрачность») и с его помощью будем управлять прозрачностью нашего материала.

    Задаем линейный параметр под названием Opacity

    Материал

    Поиск нода Collection Parameter в материале

    Создав нод, соединяем его с параметром Opacity на базовом материале.

    Настраиваем Collection Parameter в материале

    Скрипт в блюпринте

    Создав MPC и материал, заходим в блюпринт и настраиваем его так, чтобы можно было задавать и считывать значения с MPC. Это делается при помощи нодов Get/Set Scalar Parameter Value и Get/Set Vector Parameter Value. Далее заходим в эти ноды, в пункте Collection выбираем набор, который хотим использовать (MPC), а в пункте Parameter Name – название параметра из этого набора.

    Для этого примера мы делаем так, чтобы линейное значение Opacity было синусом ко времени игры – чтобы видеть значения в диапазоне от «1» до «-1».

    Задаем и считываем линейный параметр, а также используем его значение в функции

    Чтобы определять, рендерится объект или нет, создаем новую функцию под названием Set Visible Opacity. Входными значениями у нее будут параметр Opacity из MPC и статическая сетка, а выходным – значение типа Boolean, сообщающее о том, виден ли объект или нет.

    Далее мы запускаем проверку на то, чтобы значение было чуть больше «0» (в данном случае, больше «0,05»). Проверка на «0» может сработать, но при приближении к «0» игрок больше не сможет видеть объект, поэтому мы можем просто выключить его до того, когда значение станет «0». Кроме того, это позволяет создать буфер – на случай ошибок с плавающей точкой, из-за которых линейный параметр не сможет получить точный «0». К примеру, если значением будет «0,0001», эта система его просто выключит.

    Далее создаем нод Branch – если на выходе у него будет True, то и видимости объекта (верхний нод Set Visibility) будет дано значение «true», а если False, то видимости объекта (нижний нод Set Visibility) будет дано «false».

    Функция Set Visible Opacity

    Нод Event Tick, время и проверка на рендер

    Если в блюпринте сцены используется нод Event Tick, эти скрипты будут работать, даже если объектов на экране не видно. Как правило, в этом нет ничего страшного, но чем меньше блюпринтов «тикает» в течение каждого кадра, тем шустрее эта сцена бегает.

    Вот несколько ситуаций, когда можно использовать этот тип оптимизации:

    • Вещи, которым необязательно работать, когда игрок на них не смотрит
    • Процессы, которые выполняются в зависимости от игрового времени
    • Неигровые персонажи (NPC), которым необязательно что-то делать, когда рядом нет игрока

    В качестве самого простого решения перед Event Tick можно поставить нод Was Recently Rendered. Таким образом, для того, чтобы наш Event Tick включался/выключался, нам не нужно подключать к нему специальные события и детекторы. Кроме того, эта система по-прежнему может быть независима от других процессов, происходящих в сцене.

    Управление нодом Event Tick с помощью проверки на рендер

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

    Значение Emissive Value в Material Collection задано таким образом, что во время рендера оно будет работать как абсолютная синусоида игрового времени

    Граф выше следит за тем, сколько прошло игрового времени, а затем пропускает это значение через абсолютный синус плюс единица, что в итоге дает синусную волну, варьирующуюся между значениями «1» и «2».

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

    Это работает и с остатком целочисленного деления, но в этом случае граф выглядит по-другому.

    Проверку на рендер при помощи нода Was Recently Rendered можно сделать и чуть позже. То есть, если у объекта, которым управляет нод Event Tick, есть какие-то задачи, которые нужно выполнять каждый кадр, но можно сделать так, чтобы эти задачи выполнялись и до проверки на рендер (см. граф ниже). Чем меньше нодов будет вызываться с каждым «тиком» нода Event Tick, тем лучше.

    Использование проверки на рендер для управления визуальными фрагментами блюпринта

    Еще один способ снизить «стоимость» блюпринта – это замедлить его и позволить ноду Event Tick «тикать» только один раз в течение определенного интервала. Этот интервал задается при помощи нода Set Actor Tick Interval.

    Переключение между интервалами

    Кроме того, интервал, с которым «тикает» нод Event Tick, можно задать в пункте Tick Interval – он находится во вкладке Details у блюпринта, над которым вы работаете. Здесь интервал задается в секундах.

    Пункт Tick Interval во вкладке Details

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

    Создаем параллельный счетчик, срабатывающий каждую секунду

    В качестве примера того, как этот тип оптимизации может снизить средний показатель мс, давайте взглянем на граф ниже:

    Невероятно полезный пример того, как делать не нужно

    Здесь у нас нод ForLoop, который считает от «0» до «10000», и для него через нод SET задано целое число Count. Этот граф очень ресурсоемок и неэффективен – настолько, что показатель мс у нашей сцены составляет целых 53,49 мс.

    Просмотр в Stat Unit «стоимости» невероятно полезного примера

    Перейдя в Profiler, мы понимаем почему. Этот простой, но крайне неэффективный блюпринт за каждый тик «поедает» 43 мс.

    Просмотр в Profiler фрагмента, отвечающего за срабатывание Event Tick в каждом кадре

    Но если заставить этот блюпринт «тикать» каждую секунду, то большую часть времени он будет «поедать» 0 мс. Если посмотреть на среднее время (выделите какой-нибудь фрагмент таймлайна в окне Graph View) за три «тика», мы увидим, что средний показатель составляет 0,716 мс.

    Просмотр в Profiler фрагмента, отвечающего за срабатывание Event Tick каждую секунду

    Или возьмем более распространенный случай: допустим, у нашего блюпринта 1,4 мс, и если сцена будет работать на 60 фпс, то на обработку этого блюпринта будет уходить 84 мс. Но если уменьшить время, в течение которого у блюпринта «тикает» нод Event Tick, то это снизит и общее время, затрачиваемое на обработку этого блюпринта.

    Массовое движение, нод ForLoop и многопоточность

    Когда несколько моделей движутся одновременно, это выглядит очень здорово и может сделать визуальный стиль очень привлекательным. Правда, в таком случае на CPU ложится большая нагрузка, из-за чего в конечном счете страдает и фпс. Впрочем, это тоже можно оптимизировать, разбив массовое движение на несколько блюпринтов – благодаря многопоточности и умению UE4 управлять рабочими потоками.

    В этом разделе мы воспользуемся скриптом, который будет динамически перемещать 1600 сфер-экземпляров вверх/вниз по модифицированной синусной кривой.

    Ниже – простой скрипт, создающий решетку. Просто добавляем компонент Instanced Static Mesh, во вкладке Details выбираем сетку, которую будем использовать, а затем добавляем следующие ноды:

    Скрипт для создания простой решетки

    Создав решетку, добавляем этот скрипт во вкладку Event Graph.

    Пару слов о ноде Update Instance Transform. Если какой-либо из экземпляров будет трансформирован, это изменение не будет показано, пока пункт Mark Render State Dirty не будет помечен как «true». Но это ресурсоемкая операция, т.к. проверка идет через каждую сетку. Чтобы сэкономить вычислительные ресурсы, особенно если этот нод запускается по несколько раз за «тик», можно сделать так, чтобы сетки обновлялись в конце блюпринта. В скрипте ниже пункт Mark Render State Dirty помечается как «true» только при соблюдении двух условий – если на ноде ForLoop стоит Last Index и если значение в Index соответствует Grid Size минус 1.

    Блюпринт с динамическим движением для статических сеток-экземпляров

    Кроме того, при помощи блюпринта типа Actor, скрипта для создания решетки и события для динамического движения мы можем создать разные варианты решетки, где одновременно будет показываться 1600 сеток.

    Несколько вариантов решетки с 1600 сетками

    Запустив сцену, мы увидим элементы решетки, плавающие вверх и вниз.

    Решетка из 1600 статических сеток-экземпляров, динамически двигающихся вверх и вниз

    Тем не менее, тип разбиения на фрагменты влияет на скорость, с которой работает сцена.

    Во-первых, если решетка будет состоять из 1600 отдельных фрагментов, то все 1600 блюпринтов будут обработаны за 16,86 мс (т.е. в среднем 0,0105 мс на один блюпринт). То есть, хотя «цена» одного блюпринта невелика, их суммарное количество замедляет систему. Единственная вещь, которую здесь можно сделать – это уменьшить количество блюпринтов, срабатывающих с каждым «тиком». Другая причина большой нагрузки заключается в большом количестве отдельных сеток, из-за чего увеличивается количество и команд отрисовки, и команд для трансформации сетки.

    Во-вторых, если решетка будет состоять из одного фрагмента, в который входит 1600 сеток, то этот вариант будет очень хорошо оптимизирован в плане команд отрисовки (потому что на всю решетку потребуется только одна команда отрисовки), но «стоимость» блюпринта, которому за один «тик» нужно будет обработать 1600 сеток, составит 19,63 мс.

    Но если разбить решетку по-другому (на 4 фрагмента на 400 сеток, на 64 по 25 или на 16 по 100), то результат получается более оптимизированным – благодаря уменьшенному времени обработки скрипта и умению UE4 работать с многопоточностью. Благодаря последней UE4 может распределять нагрузку по обработке блюпринтов по нескольким рабочим потокам, тем самым эффективно используя все ядра CPU.

    Если мы посмотрим на время обработки блюпринтов и то, как они распределяются по рабочим потокам, то увидим следующее:

    Структуры данных

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

    Пример использования

    В качестве примера того, почему и как структуру данных можно использовать в разработке игр, давайте представим игру в стиле «шутемап». Одна из главных механик «шутемапов» – это стрельба по врагам, которая генерирует тысячи пуль, носящихся по экрану. Поскольку пули в конце концов достигают своих целей (или не достигают, врезаясь в какие-нибудь объекты) и разрушаются, игровой движок должен хорошенько прибираться за этим мусором, что может повлиять на производительность игры и даже повлечь снижение фреймрейта. Чтобы справиться с этой проблемой, разработчики должны предусмотреть в своем проекте так называемый «объектный пул» – это набор объектов (в данном случае – пуль), помещенных в массив/список и обрабатываемых при запуске игры – благодаря которому разработчики могут включать/выключать пули в любое время. В результате движку отводится лишь работа по созданию пуль.

    Самый распространенный метод использования объектного пула – это взять первую, пока еще не включенную пулю в массиве/списке, переместить ее в стартовую позицию, включить ее, а затем выключить, когда она вылетит за экран или попадет во врага. Проблема этого метода во времени, которое требуется на работу скрипта, т.е. в большом «О» . Поскольку вы делаете много циклов, проверяя объекты и ища, какой из них нужно выключить, при использовании 5000 объектов на поиск одного объекта может уйти очень много циклов. У этого метода время будет представлено в виде O(n), где «n» – это количество объектов в наборе.

    Хотя O(n) – это далеко не худший алгоритм. Чем ближе мы будем к O(1) – т.е. к фиксированной «стоимости», независящей от размера – тем более эффективным будет скрипт и более шустрой будет игра. Чтобы провернуть этот прием вместе с объектным пулом, мы используем структуру данных, именуемую «очередью». Как и в настоящей очереди, эта структура данных берет первый объект в наборе, использует его, а затем удаляет – и так до тех пор, пока не использует все объекты в очереди.

    Используя эту «очередь» для нашего объектного пула, мы можем взять передний фрагмент набора, включить его, затем убрать и сразу же поместить его в заднюю часть набора. Это создаст в скрипте эффективный цикл и уменьшит время работы скрипта до O(1). Мы также можем добавить к этому циклу проверку – если удаленный объект был включен, то скрипт берет его и, не создавая новый объект, помещает в конец очереди, увеличивая размер набора, но не увеличивая времени обработки скрипта.

    Очереди

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

    • Удаление

    Реализация конструкции queue::pop в блюпринте UE4; удаляет элемент с переднего конца очереди

    • Добавление

    Реализация конструкции queue::push в блюпринте UE4; вставляет новый элемент в конец очереди

    • Определение того, пуста ли очередь
    • Определение размера очереди

    Реализация конструкции queue::size в блюпринте UE4; сообщает размер очереди

    • Возвращение указателя на первый элемент в очереди

    Реализация конструкции queue::front в блюпринте UE4; возвращает указатель на первый элемент в очереди

    • Возвращение указателя на последний элемент в очереди

    Реализация конструкции queue::back в блюпринте UE4; возвращает указатель на последний элемент в очереди

    Вставляет указанный элемент в указанное место очереди (с проверкой позиции)

    • Обмен данными

    Реализация конструкции queue::swap в блюпринте UE4; заставляет два контейнера обменяться данными (с проверкой позиции)

    Стеки

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

    • Удаление

    Реализация конструкции stack::pop в блюпринте UE4; удаляет элемент с переднего конца стека

    • Добавление

    Реализация конструкции stack::push в блюпринте UE4; вставляет новый элемент в конец стека

    • Определение того, пуст ли стек

    Реализация конструкции stack::empty в блюпринте UE4; сообщает, пуст ли стек

    • Определение размера стека

    Реализация конструкции stack::size в блюпринте UE4; сообщает размер стека

    • Возвращение указателя на последний элемент в стеке

    Возвращает указатель на последний элемент в стеке

    • Вставка элемента в определенное место стека

    Вставляет указанный элемент в указанное место стека (с проверкой позиции)