Что реплицируется, когда атрибуты игрового процесса синхронизируются по сети? - PullRequest
0 голосов
/ 31 октября 2018

Я понимаю, что GameplayAbabilities не нужно реплицировать для обновления GameplayAttributes по всей сети, поскольку они не влияют на атрибуты напрямую. Вместо этого это задача GameplayEffects.

Так что же обновляет значения атрибута GameplayAbilitySystem (FGameplayAttributeData) по сети:

  • реплицировать только атрибуты?
  • или отправляются только игровые эффекты?
  • или оба?

Чтобы дать контекст: у меня есть система изменения атрибутов, где мне нужно несколько «базовых значений». Эти «базовые значения» меняются очень редко, в то время как «конечное значение» часто меняется. Есть две возможности сделать это с помощью GAS

  1. использовать отдельный атрибут для каждого из «базовых значений» и «конечного значения» или
  2. добавить дополнительные члены с плавающей точкой в ​​структуру атрибута FGameplayAttributeData для всех «базовых значений» и «конечного значения»

Если бы по сети отправлялись только GE (а не атрибуты), я бы выбрал (2), поскольку размер атрибута не имеет значения для пропускной способности.

1 Ответ

0 голосов
/ 31 октября 2018

Оба реплицированы!

  • GameplayAttributes реплицируется с помощью функции OnRep , которая вызывает FActiveGameplayEffectsContainer::SetBaseAttributeValueFromReplication(), которая, несмотря на название, также обновляет текущее значение с использованием агрегаторов, существующих на локальном машина. Для того, чтобы это работало, также ...
  • GameplayEffects дублирует (см. Также Unreal GAS: GameplayEffect: разница между минимальной и полной репликацией ).

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

...