Компьютерные игры - отзывы и рецензии    

Оптимизация игр на Unreal Engine 4 -


Это руководство призвано помочь разработчикам улучшить производительность в играх, сделанных на 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 каждое действие и команда отражаются в миллисекундах. Каждую область можно изучить на предмет того, как она влияет на фреймрейт проекта.

Более подробно о Profiler читайте в документации Epic.

GPU Visualizer

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

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

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

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

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

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

Более подробно о GPU Visualizer читайте в документации Epic.

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 читайте в документации Intel.

Пример использования 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

Материал

Далее нам нужен материал, на котором мы будем использовать MPC. В этом материале создаем нод Collection Parameter. В этом ноде выбираем MPC и то, какие параметры будут использоваться.

Поиск нода 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; сообщает размер стека

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

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

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

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

Авторы статьи — сотрудники Intel Эррин М. (Errin M) и Джефф Роус (Jeff Rous).

Оригинал можно прочесть тут.



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Empire.Stranger о планах Happy, форме Братка и Heart of the Swarm -

Привет. Расскажи немного о команде. На каких лигах играете, какие ваши последние достижения? Привет. Нашим последним достижением является победа в 4-ом...

30 05 2020 15:15:46

Лига ESEA добывала биткойны с помощью компьютеров подписчиков -

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

29 05 2020 14:52:28

Знакомство с jRPG: Final Fantasy IV, VI и VII -

Разработчик: Square Издатели: SquareSoft (1991, SNES / 1994, SNES) и SCEA (1997, PlayStation) Несколько частей в одной позиции похоже на читерство... ну...

28 05 2020 14:57:23

Консольные войны: Megadimension Neptunia VII вышла на Steam -

Вы не замечали, что японские RPG, как правило, носят какие-то изумительно громоздкие и трудновыговариваемые названия? Западная версия Megadimension...

27 05 2020 2:31:21

Dignitas и Curse.na дисквалифицированы с MLG -

Вчера завершился один из самых популярных чемпионатов в дисциплине League of Legends - MLG Summer Championship. На турнире встретились 12 лучших команд...

26 05 2020 8:34:42

Российские квейкеры выиграли Prague TDM LAN -

В Праге в минувшие выходные состоялся первый за долгое время европейский LAN-ивент в командном разряде Quake Live — Prague TDM LAN 2013. Россию на турнире...

25 05 2020 5:50:26

Для FLT-подобной Abandon Ship вышел боевой трейлер -

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

24 05 2020 4:27:30

Nintendo Network и смена названия консоли Wii U -

Несколько дней назад состоялся анонс игры Theatrhythm Final Fantasy 3DS, на котором была представлена коробка с новым логотипом с надписью Nintendo...

23 05 2020 5:13:47

NieR: Automata выйдет еще и на PC -

Очень нетипичная экшен-RPG NieR от Cavia, вышедшая в 2010 году, так и не появилась на PC, но я слышал об этой игре немало хорошего, но не без ворчания,...

22 05 2020 14:35:29

Новая линейка игровой периферии от Razer на тему Star Wars: The Old Republic -

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

21 05 2020 3:55:17

Starcraft 2: сегодня в 22:00 по Москве - шоуматч Naniwa против Morrow -

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

20 05 2020 7:32:18

Разработчики извинились за небрежный запуск X: Rebirth -

Кое-кто из нашей редакции уже поиграл в X: Rebirth и здорово опечалился по этому поводу. Учитывая, что этот кто-то довольно инфантилен и впечатлителен, мы...

19 05 2020 3:35:44

Новый DLC к Black Ops 3 заселит Сталинград драконами -

« Где мои драконы?!», – прокричала Бурерожденная. « У меня плохие новости!», – ответил я. Воришки из Activision приспособили этих огнедышащих рептилий в...

18 05 2020 15:55:51

Патч 1.2 для Skyrim добавил в игру новые баги -

Первое большое обновление для The Elder Scrolls V: Skyrim помимо исправления многих недоработок внесло в код игры новые смешные и не очень баги. Прежде...

17 05 2020 5:57:35

Fnatic закроет свой корейский филиал -

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

16 05 2020 3:39:40

Обзор Razer Edge -

Дорогу мобильному геймингу! Разве это не удивительно, когда некий продукт выигрывает одну и ту же награду два года подряд? Игровой планшет от Razer...

15 05 2020 2:39:41

Warcraft 3: ESWC 2010 теряет Wulin'а и Fly100% из-за визовых проблем - UPDATE - также участие в турнире не примет Xlord -

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

14 05 2020 10:42:55

Непорядок в The Order: 1886 -

В The Order: 1886 присутствуют все атрибуты эксклюзива: однообразный геймплей, банальная история и длинные кат-сцены. Это не плохо, но и не хорошо. От...

13 05 2020 16:20:54

Аркады Steam: Risk of Rain, Full Mojo Rampage, Drunken Robot Pornography -

E3 прошла, почти все интересные игры были показаны с приставкой coming in 2015, на улице какие-то непонятные дожди, в пятую « Циву» наиграно уже пятьсот...

12 05 2020 6:23:50

Outlast 2 испугает нас следующей осенью -

Мои вечные поиски качественных хорроров редко приводят к чему-то хорошему, но Outlast не подвел. Из кучи заезженных киношных приемов независимые Red...

11 05 2020 8:37:44

Слухи: перестановки в отделе разработки Xbox, Xbox 720 - в 2013 году -

На верхушке айсберга разработки Xbox перестановки. Согласно сообщению Cnet, которо в свою очередь новость пересказали аж из двух инточников внутри...

10 05 2020 18:50:31

Firaxis готовит для Civilization VI первое большое дополнение -

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

09 05 2020 13:50:15

Бесконечный ранний доступ The Magic Circle -

The Magic Circle – это, вероятно, один из самых ярких примеров незавершенных игр. Геймдизайнеры вас подвели, и вам поневоле приходится примерить на себя...

08 05 2020 5:14:53

Door Kickers получит спин-офф в виде сайд-скроллера -

KillHouse Games обмолвилась, что готовит спин-офф Door Kickers в ретро-стилистике. Оригинал, если что, был, наверное, лучшей тактической игрой в 2014....

07 05 2020 7:19:34

Первый день беты Dota 2 Reborn -

Dota 2 Reborn (даром, пиар-сага о трех частях завершилась не по-валвовски быстро) уже можно опробовать в деле. Быстро-быстро рассказав о том, как все в...

06 05 2020 18:54:14

Master Cup Series от злых гениев -

Американский мультингейминговый клан Evil Geniuses объявил о старте серии онлайн-соревнований под названием Master Cup. Начиная с июня, под эгидой EG...

05 05 2020 6:10:15

Что будет с играми в случае провала Windows 8? -

После продажи своего сервиса цифровой дистрибуции Impulse, компания Stardock теперь наиболее известна как издатель франшиз Sins of a Solar Empire и...

04 05 2020 2:19:32

Это Клэнси? Это SWAT? Нет, это Takedown! -

Как не трудно догадаться из заголовка, Takedown: Red Sabre – это тактический шутер. Все так и есть. В сущности, это Kickstarter-тайтл, который доковылял...

03 05 2020 0:15:36

Тенденции 2012: что говорят аналитики -

Кто бы мог предположить, что прошлой весной 77 миллионов аккаунтов PlayStation Network будут взломаны? Кто бы мог предположить, что 3DS будет долго...

02 05 2020 8:19:16

Владелец Dallas Cowboys купил большую часть Complexity Gaming -

Владелец одного из лидирующих клубов NFL Dallas Cowboys Джерри Джонс приобрел контрольный пакет акций киберспортивного проекта Complexity Gaming. Сколько...

01 05 2020 19:44:53

Изометрический пиксельный Eitr выйдет в 2016 -

Мне очень приглянулся анонс от издателя Devolver – hack’n’slash экшен Eitr, запланированный на 2016 год. Игра от Eneme Entertainment с отголосками...

30 04 2020 2:36:21

В Steam вышла адвенчура Rakuen, вдохновленная To The Moon -

Композитор Лаура Шигихара, известная по заглавной песне к Plants Vs Zombies, выпустила свою первую игру – слезоточивую адвенчуру Rakuen....

29 04 2020 14:42:53

Клифф Блежински о Fortnite -

На красном ковре Video Game Awards журналисты изловили Клиффа Блежински и поговорили с ним о свежеанонсированной Fortnite; Клифф поведал, что проект будет...

28 04 2020 3:50:11

Весенний Dota 2 Major пройдет... летом в Филиппинах -

Основные игры зимнего Dota 2 Major еще не успели стартовать, а Valve уже огласили (примерную) дату и место проведения Major'а весеннего. Согласно посту в...

27 04 2020 19:56:39

Первая игровая мышь 5К от компании QPAD -

Начало производства аксессуаров для геймеров от компании QPAD положено – выпущена игровая мышь с загадочным названием 5 К. Возможно, данное лаконичное...

26 04 2020 1:32:29

Клавиатура Logitech K310 -

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

25 04 2020 18:36:43

GomTV анонсирует лигу по Starcraft 2 с крупнейшим призовым фондом в истории киберспорта -

Мы ждали от Starcraft 2 рекордов, и мы их получили. Никогда раньше на кону кибепрспортивного состязания не стояла такая сумма денег. Заключившая с...

24 04 2020 20:15:33

Valve не простили прошлогодних жуликов из CS:GO -

Прошлогодние турнирные баны, наложенные компанией Valve на профессионалов Counter-Strike: Global Offensive, уличенных в проведении договорных матчей,...

23 04 2020 0:46:21

Инфографика: призовые деньги в Starcraft 2 -

Работники киберспортивного ресурса Esportsscout.com подсчитали количество денег, ушедших в копилки профессиональных старкрафтеров в качестве призовых. Как...

22 04 2020 20:13:38

Подопытные четвертого поколения -

Что ж, EA решила, что сейчас пришло самое время снова дернуть за рычаг перезапуска DLC-машины, подключенной к долгоживущей франшизе под названием Sims. Да...

21 04 2020 12:34:27

Ultra Street Fighter IV – лучший файтинг на PC -

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

20 04 2020 2:28:12

Cимулятор автомобильных краш-тестов с прекрасной физикой -

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

19 04 2020 1:20:32

Обзор This War of Mine -

« Война не меняется», – не устает твердить Рон Перлман в роли закадрового рассказчика в Fallout. « Ан нет, война таки изменилась», – перечит ему Снейк из...

18 04 2020 4:52:48

Открытая бета MOBA-игры Prime World -

Prime World – это freemium-MOBA, во главе которой стоят элементы метаигры в виде строительства зданий и замка. Расширение города и модификация его...

17 04 2020 9:32:25

Трейлер Mass Effect Andromeda демонстрирует новую галактику -

Конечно, вездеход Mako из Mass Effect – нелепая развалюха, но разве не весело колесить на нём по далёким планетам? Мне ещё как. Так что, да, я был...

16 04 2020 3:45:43

Новые участники LoL World Championship 2012 -

Сегодня стали известны еще три участника самого ожидаемого турнира в дисциплине League of Legends - World Championship 2012. Больше всего, на американской...

15 04 2020 4:30:23

Разрешение 1920x1080 на 27 дюймовых мониторах -

Удобный график зависимости оптимальной диагонали от разрешения с учетом расстояния от вас до экрана. Мониторам 27 дюймов подойдет разрешение 1080p....

14 04 2020 13:44:39

Lumen – свет и магия -

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

13 04 2020 15:36:28

Новые функции контроллера Wii U -

Контроллер Nintendo с сенсорным экраном для Wii U становится мощным средством общения. Во время последней конференции инвесторов компании президент...

12 04 2020 7:57:43

Warcraft 3 не будет на 2011 European Battle.net Invitational -

Последние новости из WoW-блога Battle.net: европейский пригласительный турнир, на котором будет решаться судьба путевок на BlizzCon 2011, будет включать в...

11 04 2020 0:59:13

Day9 в рейтинге Forbes.com -

Очередной выпуск рубрики « О нас пишут большие дяди»: интернет-издание Forbes.com отметило широко известного в кругах любителей киберспорта комментатора...

10 04 2020 10:32:42

HomeStory Cup VIII и патихард в домашних условиях -

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

09 04 2020 6:39:33

Внутриигровой аукцион Diablo 3 всполошил южнокорейских чиновников -

Озабоченность по поводу продукта Diablo 3 компании Blizzard Entertainment растет теперь не в игровой индустрии, а в Национальной Ассамблее Южной Кореи....

08 04 2020 4:54:53

Анонс Dota 2 Reborn. Часть первая -

Добро пожаловать в новую « Доту»!  Корпорация Valve показала Dota 2 Reborn – масштабное обновление для своего детища, вместе с которым игроки получат как...

07 04 2020 21:37:26

TheLittleOne: «Я был уверен, что смогу пройти квалификацию GomTV» -

Сразу после квалификации в GomTV GSL, о которой мы писали, команда TeamLiquid взяла оперативное интервью с единственным представителем Европы на турнире -...

06 04 2020 13:20:48

Новый трейлер Mount & Blade II: Bannerlord показывает оборону замка -

Последнее, что мы видели о Mount & Blade II: Bannerlord, было осадой замка. Грандиозной осадой замка! Теперь же разработчики TaleWorlds показывают...

05 04 2020 14:50:46

SteelSeries выпускает R.U.S.E.-периферию -

Инновации инновациями, но если в новой разработке от Ubisoft, стратегии R.U.S.E. оставть только управление посредством тачскрина, то купят ее всего три с...

04 04 2020 14:48:37

Новые мыши Razer: Ouroboros, DeathAdder 2013 -

Изюминка Razer Ouroboros – в ее «многоплановости»: девайс подойдет как правшам, так и левшам, достаточно лишь переставить детали корпуса-конструктора под...

03 04 2020 2:30:58

Jinro об играх на GSL, полуфинале против oGsMC и Рождестве -

Лучший из старкрафтеров западной школы по версии Global Starcraft League, прогеймер :se: Jinro был намедни проинтервьюирован сотрудником портала...

02 04 2020 4:12:52

Stealth Inc. 2 в Steam -

Когда студия Curve Digital окрестила свою игру Stealth Bastard, которая впоследствии превратилась в Stealth Bastard Deluxe: Tactical Espionage Arsehole,...

01 04 2020 22:38:22

Starcraft 2: серебряный медалист GSL Rain подписал контракт с fnaticMSI -

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

31 03 2020 22:19:37

...а Elder Scrolls Online – королевство грибов -

Ох, The Elder Scrolls Online, сейчас не самое лучшее время вести себя таким образом. Да, я вижу тебя там, в твоей тридцатиминутной презентации, и не могу...

30 03 2020 18:14:46

Боевой интерфейс на примере Dreadnought -

Закон Фиттса в модифицированной форме применим к игровым интерфейсам. Значения индекса сложности для старых и новых показателей здоровья и энергии....

29 03 2020 20:19:24

Все на Hinode Power Japan 2017 -

В эти выходные в Москве на В Д Н Х будет солнечная по-летнему теплая погода. Осадков не ожидается, но будет легкий ветер, приносящий лепестки цветущей сакуры...

28 03 2020 5:15:48

Бета Mass Effect 3 утекла в Xbox Live -

В минувшие выходные ранняя версия Mass Effect 3 стала доступна некоторым владельцам Xbox 360, по результатам изучения которой оказались выявлены три...

27 03 2020 4:21:24

Разработчики Shemnue 3 запустили второй кикстартер игры -

Положительно потрясающие новости пришли к нам от разработчиков Shenmue 3. Поддерживаемая самими Sony студия, в свое время с серьезным лицом собравшая...

26 03 2020 20:57:10

Ограничения настольных игр -

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

25 03 2020 16:13:45

Rogue-like проект Elona ожил и обзавелся новой командой разработчиков -

Японская Elona – одна из лучших игр в жанре rogue-like всех времен. В бесплатном развлечении полным полно всего. В игре можно, как обычно, исследовать...

24 03 2020 21:58:37

Life is Strange получит ограниченное издание -

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

23 03 2020 15:17:42

Заслуживает ли японское телевидение свою репутацию? -

Оригинал статьи был опубликован на RocketNews24, автор Audrey Akcasu. Is Japanese TV really as bad as its reputation? Иностранцы, живущие в Японии, в том...

22 03 2020 5:17:43

Epic Manager – спортивная лига для любителей фэнтезийных приключений -

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

21 03 2020 16:24:45

Новый контент в Path of Exile – апдейт Sacrifice of the Vaal -

Path of Exile модифицируется, Path of Exile расширяется. Эта крайне успешная онлайн экшн-RPG вышла из беты в октябре, и судя по оценкам, в неё...

20 03 2020 1:13:52

Киберспорт и телевизор (еще раз) -

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

19 03 2020 0:15:28

Играем в Source SDK, освещение и отражение -

Самый простой способ добавить на карту освещение – это объекты light и light_spot. Советы по базовому освещению. Наружное освещение....

18 03 2020 21:12:42

Steam Item Store - теперь шапки можно продавать для каждой первой игры -

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

17 03 2020 9:47:22

В первый эпизод King’s Quest теперь можно поиграть бесплатно -

Новый King’s Quest стал одним из первых проектов Activision, анонсированных после того, как компания стянула шкуру Sierra Entertainment со своей трофейной...

16 03 2020 19:13:24

Как Diablo удалось спасти жанр компьютерных RPG -

Можно без сомнения сказать, что на момент, когда на дворе стоял 1995 год, компьютерные ролевые игры (RPG) были близки к упадку. И упадок этот начался...

15 03 2020 6:17:51

Starsector – сингловая стратегическая RPG про космос -

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

14 03 2020 2:12:23

Не покупай Samsung! И с World Cyber Games тоже всё кончено? -

Чемпионат World Cyber Games, или WCG, долгое время считавшийся вершиной киберспортивного движения, прекращает поддержку консольных и PC-тайтлов и...

13 03 2020 22:18:10

Spiderweb выпустила завершающую часть трилогии Avadon -

Студия Spiderweb, ветеран 2-мерных пошаговых ролевых игр в стиле 90-ых, завершила трилогию Avadon игрой Avadon 3: The Warborn....

12 03 2020 10:48:20

Чем является iPhone 5 для игровой индустрии? -

Как и ожидалось, в ходе пресс-конференции в Сан- Франциско компания Apple представила публике iPhone 5 и iOS 6. Собственно анонсы никого, в общем-то, не...

11 03 2020 1:30:51

Counter-Strike: Global Offensive – Operation Wildfire и Nuke 2.0 -

Ура, ура, товарищи! Вы же еще играете в Counter-Strike: Global Offensive? Ну конечно же, играете! И будете играть дальше, потому что сегодня Valve...

10 03 2020 13:12:50

Starcraft 2: NaDa примкнул к oGs -

Недавно покинувший WeMadeFOX легендарный прогеймер :kr: NaDa наконец-то объявил, под сьими же знаменами он будет выступать теперь. Конечно, новым домом...

09 03 2020 11:42:50

Насколько физика BeamNG.drive похожа на настоящую? -

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

08 03 2020 20:10:51

Что пошло не так с Kinect -

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

07 03 2020 23:55:59

Патч 1.2 для Skyrim добавил в игру новые баги -

Первое большое обновление для The Elder Scrolls V: Skyrim помимо исправления многих недоработок внесло в код игры новые смешные и не очень баги. Прежде...

06 03 2020 14:50:23

Всё, что вы хотели знать о Dragon Age: Inquisition -

Некоторые из самых интересных игр, появившихся на E3, увидят свет не ранее 2015 года, но Dragon Age: Inquisition, тайтл нового поколения от BioWare,...

05 03 2020 23:46:55

Обзор Never Alone -

Ругать Never Alone так же трудно, как и хвалить. Решив показать миру быт и фольклор северных народов, авторы совершили большую ошибку при выборе формы...

04 03 2020 11:51:58

Обучающие ресурсы для разработчиков игр -

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

03 03 2020 9:12:38

Stephano уйдет из Millenium в сентябре -

Несмотря на то, что французский проект Millenium Gaming в целом достойно конкурирует на ниве Starcraft 2 с крупными командами, главная звезда Mill.sc2 –...

02 03 2020 3:16:57

Смерть жанра MMORPG -

Мы надолго запомним эпоху MMORPG, но уже давно пора признать: она упорно клонится к закату. Настало время упаковать весь жанр целиком в маленькую...

01 03 2020 14:49:47

Quake Live на Dreamhack Winter 2013 -

Quake Live включен в список официальных дисциплин Dreamhack Winter — регистрация уже как два дня открыта на официальном сайте фестиваля. После летней...

29 02 2020 10:13:13

Дюнкерк -

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

28 02 2020 21:33:30

Обзор Might and Magic: Heroes 6 -

Справедливо ли будет сравнивать серии Heroes of Might and Magic (от перемены мест и далее привет Ubisoft) и Starcraft? В сравнении истории серий, конечно,...

27 02 2020 5:43:46

Эволюция игровых контроллеров вплоть до PS4 и Xbox One -

Публике наконец-то показали контроллеры PS4 и Xbox One. Они оба красивые и продуманные, но их дизайн возник не на пустом месте. Игровые контроллеры...

26 02 2020 1:28:41

Tropico 6 выйдет в следующем году -

Эль Президенте возвращается на свой пост! Издатель Kalypso Media анонсировал Tropico 6, которая выйдет в 2018 году. Haemimont Games, занимавшиеся...

25 02 2020 16:32:39

Заимствуем красиво – обзор Overwatch -

« Овервотч! Овервотч, овервотч, овервотчовервотчовервотч. Овервотч…» – Редакция ProGamer.ru, лето 2016 г. Помните Team Fortress 2? Нет, не ту интерактивную...

24 02 2020 4:13:53

Джон Сноу в иллюминаторе – обзор Call of Duty: Infinite Warfare -

Кампания Infinite Warfare спотыкается, но экспериментирует со сценарием, пробует что-то новое в сеттинге и геймплее, чем и запоминается....

23 02 2020 21:54:12

Алгоритм Лучшего Момента Матча в Overwatch -

Напомним, Overwatch, новый командный шутер от Blizzard вышел на прошлой неделе, получил хорошую прессу, а вместе с ней и клеймо «очень вероятный кандидат...

22 02 2020 20:16:33

Обзор Resident Evil: Revelations -

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

21 02 2020 14:49:40

Открытая бета MOBA-игры Prime World -

Prime World – это freemium-MOBA, во главе которой стоят элементы метаигры в виде строительства зданий и замка. Расширение города и модификация его...

20 02 2020 20:56:52

Max Payne 3: Gang Wars - когда мультиплеер и сюжет сливаются воедино -

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

19 02 2020 12:41:49

BoxeR об оздоровительном отпуске, игре в Troy и возвращении к Heart of the Swarm -

Журналисты корейского Интернет-издания ThisIsGame.com, специализирующегося на новостях из мира прогейминга, недавно побеседовали с BoxeR'ом. В беседе были...

18 02 2020 21:34:17

Закрытый бета-тест Tribes: Ascend стартует 4 ноября -

Первоначальные планы студии Hi-Rez предусматривали проведение закрытого бета-тестирования компьютерной версии многопользовательского шутера Tribes: Ascend...

17 02 2020 22:52:15

Diablo 3 - 6.3 миллиона проданных копий за неделю -

Несмотря на подпорченный старт-привязку к онлайну-как так можно, Diablo 3 неплохо продается. Насколько хороши дела Blizzard? Ну, можно сказать, что очень...

16 02 2020 22:32:35

Демонстрация осад в Mount & Blade II: Bannerlord -

Нет, мы до сих пор не знаем, когда выйдет Mount & Blade II: Bannerlord. Вероятно, вы ждали от E3 именно этой информации, но может вас хотя бы порадует...

15 02 2020 22:48:50

Западные команды оставляют корейские проекты без игроков? -

Недавно в сообществе Starcraft 2 вспыхнул спор вокруг присоединения корейских игроков к «зарубежным командам». Вопреки распространенному мнению,...

14 02 2020 8:15:34

Valve вступила в The Linux Foundation -

Если вы до сих пор не осознали, что компания Valve очень серьезно и много ставит на будущее Linux (см. святая троица Steam Controller, Steam Machines и...

13 02 2020 13:43:18

Посленовогодняя неделя: Prototype 2 -

Prototype 2 – неправильная игра. Сюжет: кругом непонятный вирус, мутирующий всех вокруг, и караул. Алекс Мерсер (первая часть, главный герой, дальше не...

12 02 2020 16:34:40

Ealdorlight – процедурная фэнтезийная RPG с упором на сюжет -

На Kickstarter вышла Ealdorlight, процедурно генерируемая фэнтези-ролевка от автора Sol Trader Криса Парсонса про свержение королей....

11 02 2020 19:56:16

DLC Underground для The Division выходит 28 июня -

Ubisoft подтвердила на E3, что Underground, первое из платных DLC для The Division, будет доступно 28 июня. Помимо трейлера, без которого сейчас никак,...

10 02 2020 18:28:31

Обзор одиночной кампании Company of Heroes 2 -

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

09 02 2020 9:54:59

История PRO Даурена AdreN'а Кыстаубаева -

Приветствую всех читателей ProGamer.ru. Сегодня вы сможете ознакомиться с историей одного из лучших и титулованных игроков Казахстана, Даурена “AdreN”...

08 02 2020 11:29:23

Вперед, SteamOS! Nvidia сотрудничает с Valve и сообществом Linux -

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

07 02 2020 13:41:24

Planescape: Torment воскресят в апреле -

Очередная реставрация грядет: переиздание Planescape: Torment с приставкой Enhanced Edition появится в следующем месяце. Вместе с ним игра научится...

06 02 2020 12:41:31

Аниме про создание инди-игр -

Девушки, покоряющие новые горизонты (Shoujo-tachi wa Kouya wo Mezasu/Girls Beyond the Wasteland, почему здесь только «девушки», я так и не понял)...

05 02 2020 12:46:23

Warcraft 3: TH000 и TeD не поедут на финалы NGL One -

Впавшая в кому после завершения регулярного сезона, а недавно все-таки ожившая лига NGL One в конце концов проведет финальный оффлайн-турнир. Правда, не...

04 02 2020 13:50:54

Вр-рум! Вышел ремастер Full Throttle -

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

03 02 2020 0:54:16

Дизайн камеры от третьего лица с зоной свободного движения -

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

02 02 2020 10:25:27

WCG радует всех: призовой фонд уменьшен вдвое -

Ровно за сутки до начала Главного Турнира Года, World Cyber Games, его организаторы решили обрадовать кибер-общественность информацией по поводу призового...

01 02 2020 14:45:25

Detroit – дебютная игра Quantic Dream на PS4 -

Пока реальный Детройт оправляется от страшных экономических проблем, Детройт в представлении Quantic Dream существует в абсолютно другой временной линии....

31 01 2020 14:35:51

Race To Mars содействует космической отрасли -

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

30 01 2020 7:17:10

Стала известна дата выхода Medal of Honor: Warfighter -

В EA подтверждают, что уже 23 октября этого года Medal of Honor: Warfighter появится на прилавках специализированных магазинов и отделов. Эта дата была...

29 01 2020 14:58:18

Морфинг, Oculus Rift позволяет ощутить полет птицы -

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

28 01 2020 13:40:54

Motion Capture System от Mad Genius воплощает в жизнь смелую идею Sony -

Помните тот концепт разламывающегося на части контроллера движений DualShock 3, которым Sony занималась пять лет назад? Новая компания, именующая себя Mad...

27 01 2020 17:10:29

Первый микрофон от HyperX для стримеров -

Теперь HyperX конкурирует с Blue и Razer, выпустив свой микрофон для стримеров. Микрофон Quadcast в первую очередь нацелен на лидеров в Сети....

26 01 2020 0:33:47

Мал да удал: 10 миллионов проданных Switch за 10 месяцев -

Компания Nintendo выпустила пресс-релиз, в котором похвасталась, что с марта 2017 года было продано уже 10 миллионов консолей Nintendo Switch....

25 01 2020 0:33:59

MLG продалась Activision Blizzard -

Один из главных устроителей киберспортивных ивентов в Северной Америке, Major League Gaming полностью перешла под контроль компании Activision Blizzard....

24 01 2020 14:10:28

Oculus Rift и гильотина -

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

23 01 2020 20:30:31

Techland выпустит инструменты для создания модов к Dying Light -

Techland, создатели Dying Light, объявили о планах по выпуску моддерских инструментов для своего фриран-зомби-экшена. Разработчики, активно поддерживающие...

22 01 2020 22:19:29

Почему не умрет Warcraft 3 -

Пару последних лет сообщество поклонников Warcraft 3 хоронило свою любимую игру. Хоронило так не спеша, периодически вытаскивая признанного мертвым кумира...

21 01 2020 16:59:11

С клавиатурой Apex M750 вы никогда не пропустите уведомление из Discord -

SteelSeries выпустила новую клавиатуру со светодиодами, которые можно настроить на уведомления из различных интернет-сервисов....

20 01 2020 4:28:20

The International 4 на ESPN2 и ESPN3 -

Хорошие новости для любителей Dota 2 и энтузиастов прогейминга в целом: финальным этапом The International 4 заинтересовался главный американский...

19 01 2020 5:57:36

Hyper Light Drifter, мнение сноба -

Hyper Light Drifter очень, очень сильно хочет понравиться тусовке спидраннеров и им сочувствующих. Спидраннеры, если что, - это товарищи, проходящие игры...

18 01 2020 23:14:44

Обзор Dead Space 3: Awakened -

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

17 01 2020 2:56:37

FXO.BoSs о том, почему Oz ушел из его команды -

Вскоре после ухода прогеймера Oz'а из команды FXOpen главный человек потерпевшего потерю проекта, FXO.BoSs опубликовал запись, в которой объяснил причины...

16 01 2020 21:19:29

eSport Universe - турнир от ASUS в Москве -

11 мая в Москве пройдет весьма интересный турнир под названием eSport Universe. В ходе проводящегося уже в третий раз ивента пройдут соревнования по таким...

15 01 2020 1:19:17

Last Phoenix – в это можно поиграть -

  Как я уже писал в превью Secrets of Raetikon, все игры обозримой вселенной должны повествовать о том, каково быть птицей. Парни из студии Barbossal –...

14 01 2020 11:37:20

Обзор Kirby Star Allies -

Сказ о том, как Star Allies перечеркнула свою смелую задумку излишней простотой и стала одной из самых пресных и скучных игр в линейке Nintendo....

13 01 2020 18:44:49

Blackwood Crossing расскажет о взрослении и утрате -

Blackwood Crossing – это очень сюжетная адвенчура про двух близнецов-сирот и одного странного персонажа с человеческим телом и головой ролика. Так или...

12 01 2020 9:49:41

Обзор F1 2013 -

Современная машина класса Формула 1 имеет больше сходства с инопланетным кораблём, чем с припаркованным возле вашего дома хэтчбеком. Двигатель, обороты...

11 01 2020 10:55:40

Превью Diablo 3: Beta Patch 14, два месяца до релиза -

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

10 01 2020 2:26:38

Беспроводные клавиатуры IOGEAR GKM681R и GKM611B -

Компания IOGEAR выпустила две новые беспроводные клавиатуры. Модель с кодовым именем GKM611B или Multi-Link Bluetooth Keyboard with Touchpad поддерживает...

09 01 2020 18:47:49

Консоли никогда не дотянутся до уровня персональных компьютеров -

В преддверие анонсов новых PlayStation и Xbox, от которых многие ждут неимоверного скачка в графике на игровых домашних консолях, один из разработчиков,...

08 01 2020 13:41:17

Дом самураев-недоучек – обзор Shadow Warrior 2 -

Shadow Warrior работала благодаря своей прямолинейности и простоте, и сиквел это подтвердил. RPG-элементы явно не пошли на пользу обаянию Ло Ванга....

07 01 2020 19:38:49

Sudden Strike 4 вдарит по тактике в августе -

Издатель Kalypso Media определился с датой выпуска Sudden Strike 4 – релиз стратегии в реальном времени намечен на 11 августа 2017 года....

06 01 2020 17:31:40

Трейлер Full Bore: The First Dig -

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

05 01 2020 2:12:41

Обзор The Legend of Zelda: Breath of the Wild -

Новая The Legend of Zelda – важная веха в мире компьютерных игр. Пускай многие моменты встречались ранее, но они ощущаются совершенно по-другому. Открытый...

04 01 2020 21:34:12

Abyssus Mirror от Razer -

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

03 01 2020 3:17:29

О ролевой системе The Division -

Несмотря на то, что Tom Clancy’s The Division близится к релизу, особого внимания такому большому проекту мы как-то не уделяли. А тут, вот, появился повод...

02 01 2020 12:15:35

Еще:
Компьютерные игры -1 :: Компьютерные игры -2 :: Компьютерные игры -3 :: Компьютерные игры -4 :: Компьютерные игры -5 :: Компьютерные игры -6 :: Компьютерные игры -7 :: Компьютерные игры -8 :: Компьютерные игры -9 :: Компьютерные игры -10 :: Компьютерные игры -11 :: Компьютерные игры -12 :: Компьютерные игры -13 ::

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