Reign of Guilds
Skip

Строго по графику, Отчет №13 на связи!

Всех приветствуем и сразу к сути.

I Анимации NPC

Кто-то уже успел посмотреть новую анимацию в vk, кто-то нет.

Суть в том, что это анимации для NPC-гвардов (это и защитники замка, и патрули в городах, и мент, и каратели).

Боевые анимации гвардов немного походят на наши анимации для персонажей, но лишь издалека. Самое главное отличие – отсутствие ограничений по таймингам в анимациях NPC, поэтому они не только более реалистичные, “увесистые”, но и более раскрепощенные.

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

Несколько примеров.

Так гвард будет стоять в боевой стойке:

А так он прогуливается по охраняемым территориям:
Ну а здесь он отдает честь важным гостям:

[К слову, …]

Гварды в ROG будут представлены людьми, а не фентезийными существами.

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

Гварды будут 3 видов с боевой т.з.:

  1. воин с двуручным мечом;
  2. воин с одноручным мечом и щитом;
  3. арбалетчик.

Можно дать им прозвища: “берсерк”, “пехота” и “арбалетчик”.

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

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

Что касаемо перечисленных вначале видов гвардов по их роли в обществе – оставим на следующий раз.

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

***

II Оптимизация

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

Мердж (слияние) нескольких 3D объектов в один общий (геометрия).

Данный метод в его профессиональном обличии подарили в массы EpicGames после того, как присоединили к себе компанию Simplygon. Помимо этого данное присоединение подарило пользователям UE4 еще и встроенную прямо в движок функцию автоматического создания LOD’ов. Мы уже упоминали, что ранее эти лицензии стоили очень серьезных средств, и позволить себе их могли бы себе далеко не все студии.

На деле два данных продукта экономят огромное количество чел.-часов как программистов, так и 3D моделлеров (последним больше не нужно делать несколько LOD’ов к каждой изготовленной модели.

Теперь о самом Merge. Главные преимущества:

  1. упрощение геометрии при стыках сливаемых объектов;
  2. уменьшение количество задач на отрисовку (drawcall), которые цепляют под это дело, как ГПУ, так и ЦПУ;
  3. автоматическое создание и настройка LOD’ов для сливаемых объектов;
  4. идеально подходит для оптимизации небольших по габаритам объектов, которые почти всегда попадают в кадр целиком;

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

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

Merge Off. Вся отвесная часть скалы покрыта обособленными 3D объектами всего 3 видов. Хоть меши и повторяются – каждый из них создает задачу на отрисовку. НО! мы получаем небольшое количество трианглов, потому что удаленные от камеры меши используют свой последний LOD (нулевой около 13к, последний около 0,6к трианглов).

Merge On (примитивным способом)

Теперь мы возьмем и объединим в единый меш всю отвесную скалу (а она, к слову, более 100м). Да, количество задач на отрисовку стало меньше, условно, на количество объединенных мешей, но мы потеряли такую функцию как LOD, и теперь вся скала – это LOD_0, потому что мы находимся у одного из ее краев. Что привело к катастрофическому росту трианглов (почти в 2 раза). Даже на GTX1060 результат по ФПС на лицо.

Merge On (нормальным способом)

Итак, проблема ясна – для протяженных объектов Merge оказывает медвежью услугу. Выход простой – объединять не в 1 огромный меш, а резать по вертикали на 6-10 штук. Чтобы LOD’ы по прежнему работали.

Итак, что же мы получаем: количество задач на отрисовку стало ниже, количество трианглов стало выше, но ФПС при этом больше.

“Почему вы радуетесь всего 5% ФПС?!” – невольно спросит читатель?

Ответ прост:

  1. кадр захламлен камнями снизу, которые еще все существуют как отдельные меши, на чистой сцене эффект был бы сильнее;
  2. последний метов не до конца идеально настроен, т.к. можно еще ужать дистанцию для LOD’ов;
  3. Дистанцию LOD’ов каждый сможет настроить для себя сам, кто-то, например, вообще выключит LOD_0, кто-то заставит клиент отображать более высокие LOD’ы раньше. Самое главное – минимизировать задачи на отрисовку.

III 3D модели

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

IV Заключение

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

Что касаемо Околоразработки:

  1. Совсем забыли сообщить, что уже готовы новые правила и политика конфиденциальности, которые будут распространяться на сайт и форум проекта. Поэтому всех зарегистрировавшихся просим принять новые условия;
  2. Серверная железка до сих пор собирается, после этого мы начнем постепенный переезд игровых БД, сайта+форума, SMTP;
  3. Новый сайт верстается;
  4. Вместе с сайтом мы планируем запустить предпродажи, почему до открытой Альфы, и почему они стали чрезвычайно важны для нас – расскажу все в отдельном обращении [Вержбицкий Вацлав].

Присоединяйтесь к обсуждению отчета на нашем форуме и в группе ВК.

На этом пока все, не болейте, не скучайте и хороших выходных!

Вечер пятницы – вздROGнем, друзья!

С уважением,

Команда Reign of Guilds

int(13214)