Разработка мультиплеера на blueprints. часть 1

Организация папок

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

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

Родственный

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

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

Плюсы:

  • Все близкие по семантике файлы находятся рядышком. Не приходится бегать по директориям.
  • Легко запомнить, что и где находится.

Минусы:

  • Частые повторы наименований папок.
  • Высокий риск создать хаос внутри даже маленькой директории.

Категориальный 

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

Все блюпринты класса Task хранятся в одной папке. Эта папка, в свою очередь, лежит в директории AI, к которой она логически прилегает. 

Плюсы:

Все схожие файлы рядом друг с другом

Логично и просто.
Легко соблюсти иерархию папок по убыванию важности. Наверху — “родители”, ниже — “дочки”.

Минусы:

  • Блуждания по папкам в поиске связки файлов (например, персонажа и звука его шагов).
  • Огромное количество файлов внутри одной директории. Взглядом едва получится что-то найти.

Что же выбрать?

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

И помните — ни в коем случае нельзя их совмещать! Представьте, что вы работаете в команде, и каждый расфасовывает файлы предпочтительным образом — контент браузер просто-напросто превратится в свалку, на чистку которой уйдет несколько дней. К тому же надо умудриться ничего не поломать.

Какие папки делать-то?

Я всегда придерживаюсь категориальной структуры:

  • Assets — здесь хранятся все папки и файлы, относящиеся к мешам, текстурам, материалам и партиклам.
  • Blueprints — здесь содержатся все блюпринтовые классы, начиная от персонажей и заканчивая нотифаями.
  • Data — в этой папке хранятся структуры, енамы и дата тейблы — все, что хоть как-то можно отнести к статистике.
  • Maps — игровые уровни и более ничего. 
  • Media — звуки, музыка, видеозаписи, сиквенсы и шрифты.
  • UI — все виджеты.

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

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

Когда выйдет Unreal Engine 5 и игры на этом движке

Несмотря на обилие информации по новому движку, попробовать его получится только лишь в начале 2021 года. Сначала компания Epic Games выпустит превью-версию, в которой будет работать весь основной функционал. Скорее всего, некоторые разработчики уже давно получили раннюю сборку UE5, чтобы побыстрее выпустить первые игры на новом движке.

Как утверждают создатели инструментария, прямо сейчас на базе их нового движка создается несколько проектов для консолей следующего поколения, среди которых есть и эксклюзивные игры для PlayStation 5 и Xbox Series X. Тем не менее пока что единственный проект, который точно будет работать на UE5, это Fortnite. Игру переведут на новый движок посредством крупного обновления.

Подводя итог, можно сказать, что Unreal Engine 5 — это не просто следующая версия известного движка, а большой шаг вперед для всей игровой индустрии. Разработка на этом движке будет проще, быстрее и удобнее. Это новая техническая веха и новая планка качества графики. Именно на UE5 будут создано большинство самых красивых игр в грядущие пять-десять лет. Одни плюсы и практически никаких минусов.

  • Epic Games анонсировала Unreal Engine 5 и показала графику нового поколения с PS5 — видео
  • PlayStation 5 не потянула Unreal Engine 5 в 4K — интервью Epic для Digital Foundry
  • Так выглядит будущее: Unity показала короткометражку The Heretic с фотореалистичной картинкой

Tony Hawk’s Pro Skater 1 + 2

Ремастер первых двух частей симулятора скейтбординга Tony Hawk — 1999 и 2000 годов соответственно. Создатели обновлённой версии — Vicarious Visions. Студия работала с оригинальным кодом Neversoft, разработчиков оригинала.


Скриншот: игра Tony Hawk’s Pro Skater 1 + 2 / tonyhawkthegame.com

Tony Hawk’s Pro Skater 1 + 2 получилась аутентичной, разработчики смогли передать атмосферу уровней оригинальных игр и при этом реалистично изобразить освещение, структуру материалов, отражения и анимацию трюков. Ветераны серии мгновенно узнают фирменные детали, а новых игроков может привлечь высокий темп, сложность трюков и саундтрек времён поколения MTV.

Игра стала самой быстро продаваемой в серии. Миллион копий Tony Hawk’s Pro Skater 1 + 2 купили за первые десять дней с релиза.

RPC

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

Мы создали другой ивент, производящий рассылку на все клиентские копии объекта. Чтобы он выполнился, мы обязаны вызвать этот ивент с сервера.

Теперь рассмотрим, в чем особенность каждого RPC и какие нюансы скрывает от нас движок. 

Run on owning client 

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

Опять же смотрим на условие запуска ивента — “if server”.
На этой картинке — другая ситуация. В роли ивента Run on owning client выступает InputAction Sprint. Все инпут экшены вызываются из контроллера и являются по-дефолту Run on owning client. В следующей ноде мы видим приставку “if owning client” — это значит, что запрос спокойно отправится на сервер.

Run on server 

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

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

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

Multicast 

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

С клиента отправили запрос на сервер. Сервер доволен нашим запросом: никаких проверок не потребовалось. Далее он отправляет запрос на все клиентские копии этого персонажа и заставляет их проиграть монтаж.

Что за “Reliable”?

Так получилось, что сервер — не всемогущ. Иногда пакеты, которые игрок отправляет на сервер, или сервер — игрокам, могут затеряться в бесконечных просторах сети. Особенно часто это происходит, когда на сервере свыше десятка клиентов.

Чтобы мы убедились в том, что ивент точно произойдет и никто не потеряет свою часть пакетов, можно выставить галочку на Reliable в настройках ивента. Движок насильно протолкнет пакеты через сеть и получит ответ от клиента, что данные получены. Если нет — пересылка произойдет еще раз.

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

Когда использовать “Reliable”?

Но все не так просто. Злоупотребляя параметром Reliable, мы рискуем нарваться на высокую нагрузку сервера. Чтобы этого не произошло, ивенты, на которые мы его выставляем, должны быть геймплейно важны.

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

Чтобы таких казусов не было, мы и выставляем Reliable. Но! Представим ситуацию, когда мы стреляем по рандомному ящику на столе

Его падение для игрового процесса совсем не важно, т.е. никак не повлияет на баланс

На такие события Reliable не нужен — нам ни к чему нагружать сервер просчетом визуальной части.

Разделяем логику

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

На картинке ниже представлена функция OnRepDead; это значит, что когда переменная Dead изменяется на сервере, функция, привязанная к этой переменной, запустится сразу на всех клиентах и на сервере. Такие переменные имеют тип репликации OnRepNotify, который можно выставить во вкладке Details.

Следуем по цепочке: if Dead == True then… О боже! Неизвестная нам нода!

Спокойно! Эта функция очень проста — Switch Has Authority позволяет нам разделить логику на то, что происходит на сервере, и на то, что происходит на клиенте. Authority = сервер, Remote = клиент.

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

Дебаггинг

Не чурайтесь использовать инструменты отладки. Поверьте, они сэкономят вам кучу времени, а их освоение занимает от силы 10 минут (как оказалось, для многих это страшная цифра!).

Print String

Что может быть проще старого доброго Принт Стринга? Эта штука делается в два клика и позволяет увидеть значения, находящиеся и на клиенте, и на сервере.

Сообщение отобразится во время исполнения кода внутри игры.

Breakpoints

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

Над нодой должен появиться красный кружок.
Логика дошла до этой ноды. По верхней надписи становится понятно — мы смотрим на то, что происходит на клиенте.

Star Wars Jedi: Fallen Order

Action-adventure от третьего лица во вселенной «Звёздных войн». Издателем выступила Electronic Arts, разработчики — американская студия Respawn Entertainment, известная по серии шутеров Titanfall.

Скриншот: игра Star Wars Jedi: Fallen Order / Steam

Геймплей вызывает в памяти игровой процесс серии Dark Souls: игрок изучает большую локацию и сражается со сложными врагами. Места для медитации позволяют сохраняться, после каждой медитации все убитые враги возрождаются. После смерти игрок теряет очки опыта, а чтобы их восстановить, нужно добраться до места гибели.

Трейлер запуска Star Wars Jedi: Fallen Order

«Звёздные войны» актуальны всегда, а жанр souls-like стал одним из трендов игровой индустрии второй половины 2010-х годов. Стартовые продажи Fallen Order за первые полтора месяца составили более восьми миллионов копий. В мае 2020 года игра продалась тиражом более десяти миллионов копий.

«UE4 предоставил необходимую функциональность и гибкость, поэтому выбор Respawn пал на него. У нас формировалась отдельная команда для работы над Jedi: Fallen Order, было легче найти людей с опытом работы на Unreal Engine 4. EA использует Frostbite для всех своих внутренних проектов. Но в то время мы были внешней студией, у нас даже доступа к нему не было. Само собой, теперь у нас есть возможность им пользоваться, но выбор всё равно за нами — мы решаем, какой движок лучше подойдёт для нашей игры».

Стиг Асмуссен,гейм-директор Star Wars Jedi: Fallen Order

Другие возможности Unreal Engine 5

Разумеется, Lumen и Nanite — не единственные особенности нового движка. Помимо них разработчики из Epic Games добавили в UE5 продвинутую симуляцию реверберации звука, с помощью которой можно будет автоматически адаптировать звук к условиям окружения — например, создавать гулкое эхо в пещере. Впрочем, ничего принципиально нового в этом нет, потому что похожий функционал был доступен в Unreal Engine 4 с помощью сторонних плагинов.

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

В этом плане Unreal Engine 5 вообще обещает быть хорош: если все функции будут работать как следует, то разрабатывать на нем станет намного удобнее, чем на UE4 или Unity — главном движке-конкуренте, который пока еще не обзавелся аналогичным функционалом.

Какова цена?

Курс получился огромным по объёму. Такой объём материала, чтобы было всё необходимое сразу и в одном месте, Вы едва ли вообще найдёте, тем более, от специалиста с многолетним стажем. При этом я поражаюсь наглости некоторых своих конкурентов, которые на курсы с noname-авторами без истории, да и с существенно меньшим количеством материала ставят сверхвысокие цены. Вот приведу несколько скриншотов с ценами на обучение Unreal Engine у других:

Нехилые цены правда? Особенно 1400$, с учётом курса даже страшно считать. Но знаете что? Их цены справедливы и оправданы. Да-да, именно справедливы и оправданы. А знаете почему? Потому что даже начинающие специалисты по Unreal Engine получают около 100 тысяч рублей в месяц. А более опытные существенно больше. Опять же привожу скриншоты:

Как видите, зарплаты очень высокие. Поэтому даже курс стоимостью в 100 000 рублей окупается за всего 1 месяц работы начинающим UE-разработчиком.

Но есть 2 проблемы: не все будут устраиваться на работу, так как для многих это либо хобби, либо они будут создавать свои собственные игры для продажи в том же Steam. В первом случае отдавать за хобби 100 000 рублей дороговато для большинства. А во втором случае деньги вернутся очень нескоро, так как процесс создания игры и раскрутки себя как разработчика – дело долгое (хотя и интересное).

А вторая проблема – далеко не у всех есть возможность потратить 100 000 рублей на курс просто физически.

PlayerUnknown’s Battlegrounds

PUBG — игра, задавшая один из ключевых трендов игровой индустрии конца 2010-х. Именно она сделала жанр королевской битвы действительно популярным. Корейская студия Bluehole выпустила свою первую большую игру исключительно про батл-рояль.

Игра основана на модификациях для ArmA 2, созданных Бренданом PlayerUnknown Грином. Концепция была вдохновлена японским фильмом «Королевская битва» 2000 года. Увлечение модами привело Грина к созданию самостоятельной игры, где он выступил в качестве ведущего геймдизайнера.


Изображение: арт к игре PlayerUnknown’s Battlegrounds / PUBG Mobile

Жанр, эволюционировавший из режима deathmatch, стал одним из самых популярных среди игроков. Это подтверждают продажи свыше 70 миллионов копий и миллиард загрузок PUBG Mobile. В 2020 году выручка PlayerUnknown’s Battlegrounds достигла 2,6 миллиарда долларов.

«Мы стремились к реалистичному художественному стилю для максимального вовлечения и погружения игроков. Некоторые функции Unreal Engine, например „атмосферный туман“ и „экспоненциальная высота тумана“, особенно полезны для создания реалистичного освещения и поддержания нужной атмосферы. Мы могли быстро и эффективно создавать наружное освещение, меняя различные значения и сразу же проверяя результаты в редакторе».

Тэ Сок Чан,арт-директор PUBG

Вопросы и ответы

1. А когда выйдет Unreal Engine 5, этот курс будет актуален?
Unreal Engine 5 выйдет ориентировочно в конце 2021-го года. По заявлениям разработчиков будет иметь место обратная совместимость. То есть проект, созданный в, например, версии 4.25, без проблем откроется и будет работать в 5.0. А это означает то, что в плане создания игр на Unreal Engine ничего принципиально не изменится. Таким образом, курс и знания из него остаются полностью актуальными. Сами разработчики не скрывают, что выход Unreal Engine 5 — это просто маркетинговый ход. И отличаться Unreal Engine 5.0 будет от какой-нибудь 4.30 так же, как 4.25 от 4.24 или 4.24 от 4.23. И, как я понял (это уже мои догадки), этот маркетинговый ход они сделали для того, чтобы все услышали и узнали о новой системе оплаты движка. Так вот теперь платить 5% надо только, если Вы заработали на проекте больше 1 000 000$. И это отличная новость, которая полностью убивает всех конкурентов! Фактически, движок стал абсолютно бесплатным для всех, кроме тех, кто зарабатывает с его помощью целые состояния. Более того, те, кто в 2020-м году заплатили за движок 5% от продаж, получат эти деньги назад. Я думаю, что теперь ни у кого не осталось сомнений, что Unreal Engine — это движок №1 в мире.

2. Какое разрешение у видео?
FullHD (1920×1080)

3. Какова продолжительность курса?
Курс состоит из 184 уроков общей продолжительностью более 41 часа.

4. Актуальная ли информация в курсе?
Это курс 2020-го года, поэтому, безусловно, да, информация актуальная. А когда она становится уже не совсем актуальной, то курс снимается с продаж и выпускается его новая версия.

5. Можно ли оплатить картой в гривнах/долларах/евро?
Да, можно. При оплате произойдёт автоматическая конвертация по курсу Вашего банка.

6. Карты МИР принимаются?
Да, принимаются.

7. Выдаётся ли сертификат?
Да, сертификат выдаётся.

8. Есть ли упражнения в курсе?
Да, упражнения идут практически к каждому уроку, за исключением нескольких чисто теоретических уроков.

9. Есть ли защита у курса? Можно ли будет его посмотреть на разных компьютерах?
Защита у курса есть. Активировать его можно будет на 3-х различных устройствах.

10. После переустановки операционной системы потребуется ли замена лицензионного ключа?
Нет, не потребуется, так как лицензионный ключ привязывается к «железу» устройства, а не к его операционной системе.

11. Нужен ли доступ в Интернет для просмотра уроков?
Интернет нужен только во время активации, которая проводится лишь единожды. Для последующего использования курса Интернет не обязателен.

12. Можно ли будет посмотреть курс на Mac?
Да, можно будет.

13. Можно ли заказать курс на дисках?
Да, можно. Для этого при оформлении заказа надо указать способ доставки: «По почте»

Однако, обратите внимание, что этот способ дороже, так как требует оплату изготовления бокса, дисков (10 штук), а также стоимости самой доставки.

14. Нужно ли знание английского языка?
Для успешного прохождения курса точно не нужно

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

15. У меня остались ещё вопросы. Куда мне их написать?
Любые вопросы можете задать в мою службу поддержки: https://support.myrusakov.ru/ask

Гарантия

Я занимаюсь обучающей деятельностью с 2010-го года, за это время я записал десятки и десятки как платных, так и бесплатных видеокурсов по самым различным темам, прямо или косвенно относящихся к программированию (https://blog.myrusakov.ru/courses.html).

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

По моей статистике, клиентов, просящих у меня возврат, примерно 1%. Учитывая такое малое количество возвратов, мне нет смысла отказывать в них. Более того, я уже много лет даю безусловную гарантию. То есть независимо от причины, возврат Вам будет сделан.

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

Срок действия гарантии составляет 30 суток с момента оплаты.

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

Глобальное динамическое освещение

Каждая новая итерация Unreal Engine перерабатывает систему освещения. В случае с «Пятеркой» речь идет о технологии глобального динамического освещения Lumen. По сути это надстройка над системой освещения в UE4.

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

Как и в случае с Nanite, создание такой динамической системы стало возможным благодаря распространению твердотельных накопителей. Их чрезвычайно высокая пропускная способность позволяет отказаться от многих компромиссов в разработке, генерируя контент почти мгновенно. В одном из интервью Тим Суини сказал, что особенно его впечатлила скорость работы SSD в PlayStation 5.

CryEngine

Движок, созданный немецкой студией Crytek, автором Far Cry и Crysis. С 2004 года CryEngine обзавёлся несколькими итерациями, и его технические возможности улучшаются до сих пор. Чтобы в этом убедиться, достаточно сравнить первую часть Far Cry и современный MMO-шутер Hunt: Showdown. После выхода Crysis фотореалистичные шутеры от первого лица стали визитной карточкой технологии, однако движок подходит и для разработки игр в других жанрах, а также для неигровых проектов.

Разработчики CryEngine практикуют подход What You See Is What You Get — «что видишь, то и получишь». Когда разработчик создаёт в редакторе CryEngine Sandbox сцену и переносит её в игру, она выглядит и работает так, как задумано, и ей не требуются дополнительные правки. В 2016 году Crytek открыла доступ к исходному коду движка, чем воспользовались многие студии. Например, Warhorse Studios сильно модифицировала CryEngine для разработки ролевой игры Kingdom Come: Deliverance. Известно, что все актуальные части серии Far Cry, права на которую сейчас принадлежат Ubisoft, сделаны на движке Dunia Engine, а в его основе находится как раз CryEngine.

Презентационный трейлер движка

Скриншот из Hunt: Showdown — игры, созданной на CryEngine. Скриншот: Hunt: Showdown / Steam

Преимущества:

  • мультиплатформенность (Windows, Linux, PlayStation 4, Xbox One, Oculus Rift, OSVR, PSVR, HTC Vive), в будущем возможно портирование на Android — сейчас идёт бета-тестирование;
  • огромный выбор инструментов «из коробки»;
  • подходит для масштабных игр AAA-уровня, особенно для игр с видом от первого лица;
  • у перспективных проектов (в том числе неигровых) есть возможность получить кастомную лицензию.

Недостатки:

  • не так популярен, как его конкуренты Unity 3D и UE4;
  • сложно найти специалистов по движку из-за небольшого размера комьюнити;
  • если проекту требуется функциональность, расширенная в сравнении с той, что есть в «коробке», большинство сетевых модулей и инструментов придётся создавать с нуля: по словам разработчиков, то, что представлено в GameSDK, либо устарело, либо перегружено лишними функциями.

Скриншот из Kingdom Come: Deliverance — игры, созданной на CryEngine. Скриншот: игра Kingdom Come: Deliverance / Steam

Игры на движке: Kingdom Come: Deliverance, Deceit, Evolve, Prey, Hunt: Showdown.

«С CryEngine тяжело работать, если нужно создать динамичный шутер. Его физический движок не подходит для такой концепции. Также не стоит делать на его основе сложные RPG. Инструменты разработки недостаточно гибкие, и вам потребуется много ресурсов, чтобы построить все основные системы с нуля. <…> На данный момент сообщество CryEngine совсем небольшое, но очень отзывчивое. Большинство специалистов хорошо осведомлены о различных аспектах разработки, так как сами знакомы с движком ещё со времён моддинга Crysis. Кроме того, разработчики технологии часто делятся своими знаниями в Discord и тематических статьях

Дмитрий Шевченко, тимлид студии TALLBOYS (Pandemic Express).

«What is the best game engine: is CryEngine right for you?», январь 2020 года

Скриншот из Pandemic Express — Zombie Escape — игры, созданной на CryEngine. Скриншот: игра Pandemic Express / Steam

«Ключевая механика Deceit — смена дня и ночи в игре. С наступлением тьмы роли игроков меняются: „плохие парни“ становятся ещё ужаснее, что может напугать и ввести в замешательство „хороших“. CryEngine отлично подчёркивает эту атмосферу с помощью освещения и теней. <…> Динамика движка хорошо сочетается с итеративной разработкой, что помогает при нелинейных пайплайнах. В этом плане CryEngine значительно выделяется на фоне конкурентов. Арт-отдел тесно сотрудничает с отделом геймдизайна на всех этапах проекта, чтобы настроить освещение и разместить объекты по ходу разработки. Это преимущество помогает тестировать различные идеи и стирать границы между концепцией, дизайном и фазами препродакшна.

<…> CryEngine отлично работает с рендерингом в реальном времени, позволяя изменять огромное количество визуальных эффектов на лету. Параллельная работа наших технических специалистов со SpatialOS (технология симуляции действий) даёт нам понимание того, что наиболее релевантно для игрока. Всё это помогает добиться в игре детализированности окружения без лишних нагрузок на «железо»».

Сэм Хиллс (Sam Hills), бывший комьюнити-менеджер Automaton Games (Deceit).

«Why Developers Choose CryEngine?», сентябрь 2018 года

Скриншот из Deceit — игры, созданной на CryEngine. Скриншот: игра Deceit / Steam

Реплицируемые переменные

Еще одной деталью при общении сервера и клиента являются переменные. Здесь все гораздо проще: переменная идет только с одного конца в другой — с сервера на клиент.

Если переменная реплицированная, это значит, что единственно верное ее значение содержится только на сервере и только сервер может его изменить, что приведет к перезаписи значения и на клиенте. Не доверяем игрокам!

Все переменные на картинке реплицированы. Об этом говорят две полусферы над значком переменной.
Репликацию переменной можно поставить в ее вкладке Details. Replication Condition — это условия репликации: кому или чему значение этой переменной будет передаваться.

Рай для разработчиков

Пожалуй, главная и самая громкая новинка в арсенале Unreal Engine 5 — это продвинутая система стриминга моделей. Она получила название Nanite и представляет собой систему обработки графики, которая автоматически подстраивается под разрешение экрана и тем самым позволяет добиться лучшего соотношения качества картинки и производительности.

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector