Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество
Главная
    Документация jMonkeyEngine
        jMonkeyEngine Уроки и Документация
            Вклады
                Система Сущностей Zay-ES
                    Система Сущностей Введение

Система Сущностей Введение

Опубликованно: 11.07.2017, 16:19
Последняя редакция, Andry: 30.07.2017 13:03

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

shjWa

В этом примере нам внезапно понадобится новый блок, armored robot(бронированный робот). Это невозможно в нашей структуре, и поэтому нам нужно будет переписать код. На этом этапе начинается появляться идея Системы Сущностей.

Система Сущностей(Entity System)

Существуют различные концепции для Системы Сущностей, и все они имеют некоторые отличия. В этой статье мы сосредоточимся на том, как работает jMonkey Entity System.

Сущности(Entity)

Сущность(Entity) — это просто уникальный идентификатор(ID). Каждый Unit, Item, Bullet и.т.д. в вашей игре будет представлен одним из этих идентификаторов(ID) сущностей.

Component

Компоненты(Component) — это класс, который содержит только данные. Это означает, что у него есть конструктор и только getter методы. Примерами компонентов могут быть:

  • PositionComponent
  • MovementComponent
  • CollsisionComponent

Компоненты добавляются к Сущностям.

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

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

0WoEb

Системы(Systems)

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

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

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

Для более детального и технического обзора взгляните на статью «Система Сущностей Продвинутая»

Плюсы и Минусы

Плюсы:

  • Хороший обзор
  • Гибкость
  • Модульность

Минусы:

  • Производительность
  • Непривычно
  • Немного рискованно

Как упоминалось выше, Система имеет много преимуществ. Теперь давайте сосредоточимся на минусах: производительность немного медленнее, потому что в фоновом режиме вам нужно больше классов и больше вычислений. Этот момент не столь значителен, потому что компьютеры становятся все быстрее и быстрее. Более важным является то, что до сих пор только несколько проектов использовали системы сущностей. Одним из примеров проекта, который использует подобную систему сущностей, является приключенческая игра Mythruna.

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

Трудность

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

Должен ли я использовать систему сущностей?

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

Источники:

Можно еще глянуть

Entity-component-system: Переламывая себя


Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

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

jMonkeyEngine.ru © 2017. Все права сохранены.