27-02-2020, 13:02
(Сообщение последний раз редактировалось: 27-02-2020, 13:40 SneakySnake.)
![[Изображение: tech_optimization.png]](https://d5u0rv9n5kjyc.cloudfront.net/media/filer_public/f9/f4/f9f44386-56bb-4829-9460-785a6b91fa18/tech_optimization.png)
В этом дневнике разработчиков будут рассмотрены некоторые технологические оптимизации, над которыми они сейчас работают, для улучшения игры в будущем.
Привет Noveans!
Когда мы выпустили новую дорожную карту в конце прошлого года, мы заявили, что этап после Альфы-3 будет состоять из оптимизации и исправлений игры. Цель этого дневника - рассказать вам о некоторых технологиях оптимизации, с которыми мы работали, и их значение для игроков. Имейте в виду, что многие из них все еще находятся на ранней стадии разработки и могут даже не быть выпущены. Однако мы понимаем, что многие в нашем сообществе заинтересованы в разработке игры, поэтому мы решили рассказать об этих технологиях.
GPU Culling
Dual Universe представляет собой детализированную среду, заполненную неинтерактивными элементами, которые мы называем «декорами». К ним относятся такие вещи, как трава, деревья, небольшие камни и многое другое. Движок, который мы используем для игры, Unigine, вычисляет геометрию этих предметов - обычно это исчисляется десятками тысяч в любой момент времени - используя ЦП компьютера, и решает, какие из них важнее. Например, элементы, которые находятся позади игрока или менее видимы (то есть где-то на дальнем фоне), не будут отображаться. Это особенно важно в более плотных средах, таких как леса. Этот процесс известен как «отбор», и наша команда разработчиков кодировала движок, чтобы использовать графический процессор компьютера для выполнения этих вычислений вместо процессора. Учитывая, что он уже отвечает за рендеринг этих декоров, это значительно улучшит скорость выполнения этих вычислений. Для игрока это означает увеличение частоты кадров и более детальное окружение.
Global Illumination (Глобальное освещение)
В любой момент в Dual Universe в сцене может быть несколько источников света, как естественных, таких как солнечный свет, так и искусственных, таких как фары или фонари для освещения. Они предоставляют отдельные источники света с целью создания теней и исторически работали только таким образом (что неверно, учитывая, что мы все еще можем видеть в тенях из-за рассеянного света от различных поверхностей). Глобальное освещение направлено на то, чтобы источники света вели себя более реалистично, имитируя непрямое освещение: отражение, рассеяние и окклюзию окружающей среды. Отражение и рассеяние довольно очевидны, но давайте коснемся последней функции. Окружающая окклюзия - это геометрический подход, который определяет, насколько яркий объект относительно источника света - другими словами, блокируются ли определенные его части другими объектами в сцене. Используя динамическое глобальное освещение на основе световых полей, мы можем отобразить их для любой конкретной сцены, и это сделает игру более реалистичной и динамичной. Наконец, это также значительно улучшит видимость при слабом освещении, с чем у многих игроков возникали проблемы.
Ground Shader (Наземный шейдер)
При рендеринге ландшафта в Dual Universe, существует множество требований, всё зависит от среды, типа биома, различных ориентаций текстур (например, скалы) и многое другое. В отличие от других игр, Dual Universe уникальна тем, что должна быть полностью настраиваема игроками, поэтому смешивание различных текстур вместе для создания одного конгруэнтного участка ландшафта является более сложным. В настоящее время мы визуализируем ландшафт за один проход через сеть вершин. То есть происходит много ненужных выборок текстур, которые съедают ценную вычислительную мощность. Новый метод затенения грунта, который все еще находится в стадии разработки, требует нескольких проходов для различных операций: рендеринга глубины геометрии, получения ландшафта геометрии, рендеринга высоты материалов, рендеринга текстуры поверхности материала (т.е. шероховатой по сравнению с гладкой), а затем рендеринг любых переменных для веса объекта. Этот метод, который все еще находится в стадии разработки, потребляет меньше ресурсов при вычислении отдельных сцен путем преобразования рендеринга ландшафта в несколько проходов для его различных свойств (то есть высоты, текстуры, ландшафта и т. д). Это дает нам возможность значительно улучшить внешний вид планет, обеспечивая при этом более высокую производительность с точки зрения частоты кадров.
HexOctree
Эта новая технология была разработана полностью собственными силами и была создана для решения проблем, связанных с процедурно генерируемыми вокселями планет. Dual Universe хранит свои воксели, которые составляют почти всю игру, за исключением определенных элементов, в кубической сетке. Hexoctree - это новый тип воксельной сетки, созданный специально для планет, который значительно упрощает многие внутренние операции, связанные с геометрией планеты. «Обычная» воксельная сетка не очень хорошо выравнивается по поверхности сферы, что делает вычисления утомительными, особенно когда мы приближаемся к ядру. Hexoctrees, с другой стороны, «изгибают» воксельную сетку в сферическую форму оболочки, делая ее идеально выровненной по поверхности планеты, что позволяет нам очень быстро рассуждать о связи между поверхностью планеты и воксельной сеткой.
![[Изображение: height_map_diagram.jpg__720x366_q85_subsampling-2.jpg]](https://d5u0rv9n5kjyc.cloudfront.net/media/filer_public_thumbnails/filer_public/ae/f3/aef3140a-74fa-4304-940a-f23dc52debdc/height_map_diagram.jpg__720x366_q85_subsampling-2.jpg)
Dual Universe также использует карты высот, определенные желтыми линиями на диаграмме выше, для моделирования высоты. Диаграмма слева - наш текущий способ использования этих карт высот для вычисления вокселей. Как вы можете видеть, когда уровень детализации (LOD) перемещается вверх по уровню, эти фигуры являются случайными. В примере справа они более однородны.
Dynamic load balancing (Динамическая балансировка нагрузки)
Цель этого состоит в том, чтобы существенно перераспределить игроков по всей серверной архитектуре и служит для балансировки рабочей нагрузки каждого серверного процессора. Преимущество этого заключается в увеличении стабильности работы, значительно меньшем количестве лагов и возможности подключения большого количества игроков в непосредственной близости.
Visibility (Видимость)
Общая идея, лежащая в основе видимости в отношении серверных технологий, заключается в том, что сервер выбирает для показа игрокам, а также в количестве ресурсов, которые он решает выделить для них. Сервер также отвечает за принятие решения о частоте обновления объектов в игровом мире. Например, если вы идете по поверхности Алиота с товарищем к кораблю, расположенном на определенном расстоянии этому другому игроку потребуется высокая видимость из-за их близости, сервер будет часто обновлять свои действия. Однако корабль будет менее детализированным, и его нужно будет только периодически обновлять сервером. Конечно, объекты позади вашего игрока и плавающие километры над поверхностью планеты будут иметь нулевую видимость, поскольку они не влияют на ваши непосредственные обстоятельства.
Kubernetes
Эта технология управления сервером, которая контролирует жизненный цикл наших серверных компонентов, автоматизирует работу, развертывание и масштабирование. Думайте о каждом компоненте сервера как о отдельном человеке, который является частью одного гигантского кластера. Когда отдельным компонентам нужно проделать больше работы, эта система добавит больше реплик, а затем удалит их, когда эта нагрузка уменьшится. Таким образом, мы можем легче сбалансировать нагрузку на несколько реплик и обеспечить постоянный игровой процесс с низкой задержкой. Эта система также предлагает будущий потенциал игрового процесса в режиме 24/7 с минимальными простоями для обслуживания.
Mesh server (Ячеистый сервер)
Иногда при запуске Dual Universe некоторые объекты могут выглядеть непрогруженными или некачественными. Это связано с тем, что сервер должен загружать большое количество отдельных данных вокселей и накладывает LOD с низким low-poly. Тем не менее, то, что позволяет нам делать технология ячеистых серверов - это предварительно загружать конструкции ячеек, что в итоге будет выглядеть намного лучше. Нет больше уродливых форм, а будут более детализированных модели! В случае PvP это также значительно повысит эффективность обнаружения попаданий.
Мы надеемся, что этот дневник разработчиков даст вам возможность взглянуть на некоторые из новых решений технологических оптимизаций, над которыми мы сейчас работаем. Помните, что пока все они находятся на ранней стадии исследований и разработок, и могут быть изменены для будущих версий игры.
Команда Novaquark
Ссылка на оригинал: https://www.dualthegame.com/en/news/2020...imization/