7.1 Группировка способностей – Группировка способностей
GameplayAbilities
Активация, отправка на сервер (по желанию) и завершение всего этого, два-три RPCTargetData
можно объединить в один, если все это сделать в одном кадре . Эти типы навыков обычно используются для борьбы с дробовиками.
7.2 Пакетная обработка обратной связи игры — пакетная обработка сигналов игрового процесса
Если вы хотите отправить много RPC одновременно GameplayCues
, рассмотрите возможность объединения их в один RPC . Это может эффективно сократить количество RPC ( GameplayCues
да unreliable
, многоадресной рассылки NetMulticasts
), чтобы отправлять как можно меньше данных.
7.3 Режим репликации компонентов системы способностей — Режим репликации компонентов системы способностей
По умолчанию ASC
он находится в Full Replication Mode
режиме. GameplayEffects
По умолчанию все будет скопировано в каждый клиент (нет проблем для одиночной игры). В многопользовательской игре установите для персонажей, принадлежащих игроку ASCs
и Mixed Replication Mode
управляемых ИИ, значение Minimal Replication Mode
. При этом то, что применяется к персонажу игрока, будет скопировано GEs
только владельцу персонажа; персонажи, управляемые ИИ, никогда не будут копировать это GEs
в клиент. GameplayTags
будет реплицироваться и GameplayCues
по-прежнему ненадежно транслироваться всем клиентам, независимо от того, Replication Mode
что это такое. GEs
Это может эффективно сократить объем реплицируемых данных, когда ни один из клиентов не должен их видеть .
7.4 Прокси-репликация атрибута — Прокси-репликация атрибута
Большая игра, такая как Fortnite Battle Royale (FNBR) с большим количеством игроков, будет иметь множество ASCs
существующих аналогов PlayerStates
, и многие из них придется копировать Attributes
. Чтобы устранить это узкое место, Fortnite отключает и его репликацию в моделируемой консоли игрока . Хост-агент и управляемые ИИ по-прежнему будут выполнять собственную репликацию в соответствии со своими конкретными настройками. Вместо этого вместо дублирования на соответствующем файле , FNBR использует реплицирующуюся прокси-структуру на файле . При изменениях на сервере соответственно изменится и его структура прокси. Клиент получает копию из структуры прокси и отправляет содержащиеся в ней изменения свойств в локальный файл . Это позволит вашей репликации также воспользоваться преимуществами связанных с вами механизмов . Эта прокси-структура также может реплицировать небольшой набор белых списков с использованием битовой маски. Такой подход уменьшает объем данных, передаваемых по сети, и позволяет нам использовать соответствующий контент. Позиция управляемого ИИ находится на , который уже использует этот механизм, поэтому нет необходимости делать для них эту оптимизацию отдельно.PlayerState::ReplicateSubobjects()
ASC
AttributeSets
Pawns
Replication Mode
PlayerStates
ASC
Attributes
Pawn
ASC
Attributes
Attributes
ASC
Attribute
Pawn
NetUpdateFrequency
GameplayTags
pawn
Pawns
ASC
Pawn
Я не уверен, что это все еще необходимо с другими оптимизациями на стороне сервера, которые были выполнены с тех пор (график репликации и т. д.), и это не самый удобный в обслуживании шаблон.
Ответ Дэйва Ратти из Epic на вопросы сообщества №3
7.5 Отложенная загрузка компонентов системы навыков — ASC Lazy Loading
В мире Fortnite Battle Royale (FNBR) есть множество вещей, которые можно повредить AActors
(деревья, здания и т. д.), и на них будет висеть ASC
. Это увеличит потребление памяти. Стратегия FNBR состоит в том, чтобы лениво загружать их ASCs
и загружать только тогда, когда они необходимы (когда игрок наносит этим объектам урон). В целом это может немного снизить потребление памяти, поскольку некоторые из них могут AActors
не трогаться на протяжении всей игры.