Тело

Предупреждение

  • BodySystem всё ещё находится в зачаточном состоянии, многие виды поведения ещё не существуют.
  • Если вы — downstream, который полагается на хирургию, многое сломается, если вы перейдёте на новую BodySystem без лёгкой замены на момент написания.
  • Поведение органов и BodySystem может измениться по мере её развития. Проверяйте ломающие изменения, когда можете!

Что такое спейсмен? Жалкая маленькая кучка Контейнеров!

Body — это группа нижележащих симуляционных систем, которые управляют мобами человеческой или животной формы в Space Station 14. Разумный торговый автомат не имеет Body. Мёртвая таракамоль — имеет.

Обзор верхнего уровня

Моб в Space Station 14 — это сущность, управляемая игроком или NPC. Таракамоль, разумный торговый автомат и командир Ядерных оперативников — все они мобы. Поведение и способности этого моба определяются компонентами, прикреплёнными к сущности.

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

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

BodySystem и связанные с ней компоненты, которые на данный момент включают BodyComponent и VisualBodyComponent, предназначены для обработки этих дополнительных сущностей, позволяя одной сущности фактически состоять из нескольких сущностей с их собственными уникальными поведениями и системами.

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

Что делает BodySystem?

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

Главная сила BodySystem в том, что она позволяет более тонко управлять поведением на основе органов. Ядро BodySystem намеренно простое, чтобы его было легко расширять; каждая сущность, составляющая тело, считается органом и хранится в контейнере body_organs для удобного запроса. Поэтому всё поведение опирается на логику вставки, извлечения и запроса органов в этом контейнере.

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

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

Визуализация тела: VisualBodyComponent

Пример

  • Ниже мы видим тело, построенное из нескольких органов с несколькими отметинами
  • Каждая отметина прикреплена к органу, а не к самому телу.
![визуализированное тело](../../../en/assets/images/medical/peak-performance.png)

Любой орган, вносящий вклад в спрайт тела, будет иметь VisualOrganComponent, который предоставляет данные для спрайта и визуализации этого органа. Органы также могут хранить отметины, которыми управляет VisualOrganMarkingsComponent, который тоже самодостаточен: он обрабатывает спрайты, слои и то, когда скрывать отметины в ответ на экипировку предметов инвентаря.

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

Что делают органы?

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

Например, тело имеет компонент-респиратор, что означает необходимость дышать. Тело выполняет метод Inhale(), который получает воздушную смесь из окружающей среды. Затем эта смесь через событие поднимается к телу, которое отправляет её органам; орган тела забирает этот газ, сохраняет его в собственной газовой смеси, а затем обрабатывает событие. Позже эта газовая смесь метаболизируется лёгкими, что увеличивает насыщение компонента-респиратора тела, не давая телу задохнуться.

Цель тела — заставить все системы работать таким образом: тело нуждается в чём-то, поэтому оно поднимает событие, которое может быть обработано органами, или, в случае сущности без тела, обработано ею самой через другой компонент.

Что отсутствует?

На данный момент самым большим отсутствующим элементом BodySystem на момент написания является полноценная система связей. Части помещаются в тело и выполняют поведения, но сейчас нет ни компонента, ни системы, определяющей структуру и проверяющей поведения, как нет и простого способа упорядочить взаимодействие определённых органов друг с другом. И то, и другое будет опираться на расширяемую систему связей сущностей, которая ещё не построена.

Subpages