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

Объекты игрового мира

Not (yet) implemented feature

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

Все рисуемые составные части уровня основываются на рендерных сущностях, в том числе и объекты игрового мира.

Рендерные сущности​

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

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

Ответственность за применение шейдеров к рендерным сущностям несет дизайнер материалов.

Движок поддерживает определенный набор рендерных сущностей, который состоит из двух видов:

  • Материальные;
  • Нематериальные;
  • GUI.

Материальные рендерные сущности​

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

  • Статическая геометрия - неподвижная (не трансформируемая) геометрия уровня, которая не изменяется в течении всей игры. Как правило она составляет большую часть уровня (здания, ландшафт, прочее). Является простейшей сущностью. Рисуется обычным рендером.
  • Растительность - автоматически анимированная статическая геометрия уровня, которой присущи элементарные анимации. Неподвижна (в плане перемещения, поворотов, масштабирования) и неизменяема в течении все игры. Представляет из себя деревья/кусты/траву. Является сложной сущностью. Рисуется при помощи hardware instancing.
  • Анимационные модели - динамические объекты уровня, которые могут быть изменены в любой момент игры. Присущи анимации, перемещения, повороты. Является сложной сущностью. Рисуется прямым рендером с реализацией скелетной анимации на стороне шейдеров.

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

  • Статическая геометрия - mtrlgeom;
  • Растительность - mtrlgreen;
  • Анимационные модели - mtrlanim.

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

Нематериальные рендерные сущности​

Нематериальные рендерные сущности - это объекты движка, которые не имеют характеристик материала. Такие сущности делятся на 2 вида:

  • Сущности игрового мира;
  • Сущности рабочего пространства.

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

  • Партиклы;
  • Декали;
  • SkyBox;
  • SkyClouds.

Нематериальные сущности рабочего пространства - это объекты движка, которые не имеют характеристик материала, и не участвуют в формировании игрового мира. Такими объектами являются:

  • AI сетка.

Виды объектов​

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

  • Статическую геометрию;
  • Растительность;
  • Игровые объекты.

Статическая геометрия​

Статическая геометрия (сокр. 'статика') - неподвижная (не трансформируемая и не анимированная) геометрия уровня, которая не изменяется в течении всей игры. Как правило она составляет большую часть уровня (здания, ландшафт, прочее). Является простейшей сущностью. Рисуется обычным рендером.

Может состоять из множества моделей (объекты расставляются в редакторе уровней), либо из одной целой (модель собирается 3d редакторе, а затем загружается в редакторе уровней).

Модели должны быть формата dse экспортированные как статические модели.

Каждая модель имеет:

  • Имя (name) (опционально) - для идентификации пользователем в редакторе уровня;
  • Трансформации (position - позиция, rotation - повороты, scale - масштаб);
  • Лод (LOD - level of detail)(опционально) - упрощенная модель, которая рисуется на дальних от наблюдателя расстояниях в целях экономии вычислительных ресурсов;
  • Физическая модель (physics)(опционально) - упрощенная модель для просчетов физики;
  • Свойство сегментации (segmentation) (опционально) - деление модели на куски, с целью экономии вычислений при рендере. Применяется в случаях если модель является объемной в плане габаритов и количества полигонов (модель 100х100х100 метров в 100 000 полигонов надо загружать, устанавливая свойство сегментации).

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

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

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

Растительность​

Растительность - автоматически анимируемая статическая геометрия уровня, которой присущи элементарные анимации. Неподвижна (в плане перемещения, поворотов, масштабирования) и неизменяема в течении все игры. Представляет из себя деревья/кусты/траву. Является сложной сущностью. Рисуется при помощи hardware instancing.

Для рендера растительности существует 3 дистанции рендера:

  1. 50 метров от наблюдателя;
  2. от 50 до 100 метров до наблюдателя;
  3. от 100 метров до наблюдателя и до конца видимости.

Деревья и кусты являются однотипными объектами, для них необходимо наличие основной модели и двух лодов. Такие объекты рисуются на всю дистанцию видимости:

  • Модель рисуется на первой дистанции;
  • Первый лод рисуется на второй дистанции;
  • Третий лод рисуется на третьей дистанции.

Трава имеет только одну модель и не может иметь лоды. Трава рисуется только на первой дистанции, причем с уменьшением по дальности, начиная с 30 метров и до 50 объекты уменьшаются от 100% до 0%. При перемещении по уровню с травой, можно увидеть как трава появляется и увеличивается при уменьшении расстояния до нее.

Только вершинные шейдеры определяют как рисовать объекты: либо как деревья/кусты, либо как траву (с уменьшением по дальности). Поэтому при установке шейдеров материалам, необходимо удостоверится, что шейдер рисует объект так как предполагается (например стандартные шейдеры материалов).

Игровые объекты​

Основная статья Игровые объекты.

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

Игровые объекты могут быть:

  • Статическими моделями - просто геометрия. Рисуется при помощи тех же шейдеров что и Статическая геометрия. Формат моделей dse.
  • Анимационными моделями (с костями, иерархией, анимациями). Это является сложной сущностью. Рисуется прямым рендером с реализацией скелетной анимации на стороне шейдеров. Формат моделей dse. Для обработки анимационных моделей необходимо использовать Редактор анимационных моделей.
  • Невидимые объекты, то есть без визуала, например Trigger, Logic relay. Существуют также невидимые объекты, которые вносят вклад в итоговое изображение, это источники света (точечные, направленные).

Другие объекты​

Также свой вклад в итоговый игровой мир вносят: