Перейти к содержимому
CRUSHFORMV1.1.0
ПОЛУЧИТЬ НА FAB

МУЛЬТИПЛЕЕРВЫДЕЛЕННЫЙ СЕРВЕР

Выделенный сервер

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

  • Истинная решётка. Сервер применяет удары, которые принимает, и публикует изменённые чанки клиентам. Он выполняет Repair и Wash как инстанс-авторити. См. Репликацию и предсказание.
  • Навесные детали. Для машины, которую симулирует сервер, сервер решает, когда деталь отходит и когда отрывается по вмятинам, и публикует и то, и другое. Он не качает детали и никогда не сбрасывает деталь, потому что не запускает физику шарниров.
  • Коллизия кузова. Коллизия кузова следует за вмятинами и на сервере, поэтому кузова на сервере встречают те же вмятины, что и кузова у клиентов.
  • Вердикты по стёклам. Сервер решает, трескается или разбивается каждая панель. Он не пишет данных панели, не строит осколков, не создаёт систему осколков (систему по умолчанию там никогда не загружают) и не воспроизводит звук.
  • Разрушаемые элементы и деревья. Сервер решает уровни элементов и то, когда дерево поддаётся и успокаивается. Он не создаёт кусков обломков, потому что у него нет пула обломков, и пропускает визуальную работу деревьев.
  • События повреждений. OnDamageChanged срабатывает на каждом инстансе, в том числе на выделенном сервере, от подтверждённых сервером повреждений.
  • Нет атласа. У сервера нет подсистемы рендеринга, поэтому он не рисует ни вмятин, ни краски, ни грязи.
  • Нет событий грязи. Сервер не строит сетку грязи, поэтому OnDirtChanged, OnWashed и OnWheelSurfaceChanged там не срабатывают. AddDirt и WashAt действуют только на том инстансе, который их вызывает.
  • Нет колёс. При модели Server адаптер автомобиля отключает своё обновление каждый кадр и не показывает колёс. Шины, звук качения, эффекты качения и звук двигателя там простаивают.
  • Нет звука и эффектов. Отклик на удары на выделенном сервере ничего не воспроизводит, как и вызов Play Impact.
  • Crushform.Stats на сервере выводит Crushform atlas: none in this process (a dedicated server draws nothing). вместо строки атласа. Строки решётки, что идут следом, говорят server lattice.
  • Crushform.Stats, Crushform.Debug, Crushform.ShowZones, Crushform.ShowCollision, Crushform.RepairAll и Crushform.DebugImpact вырезаны из сборок Shipping. Переменные шин, например Crushform.Tire.Enable, остаются.
  • Модуль CrushformDebug запрещён в сборках Shipping, поэтому режим отладки не входит в сборку Shipping. Сервер Development с клиентами Shipping не поддерживается.
  • Crushform.DebugMode.AllowClients решает, могут ли удалённые клиенты пользоваться инструментами отладки сервера. По умолчанию 1. Задайте 0, чтобы оставить инструменты только за сервером-хостом.
  • Все 12 модулей времени выполнения перечисляют Win64, Linux и Mac, поэтому сборка сервера под Linux поддерживается.

Запустите настоящий процесс выделенного сервера из папки Binaries\Win64 движка: UnrealEditor.exe "<path to your .uproject>" -server -game -log. Play In Editor — не выделенный сервер: его сервер работает внутри редактора, у которого есть подсистема рендеринга, поэтому строка none in this process там никогда не появляется.

В консоли лога сервера (окне, которое открывает -log) введите Crushform.Stats. Строка атласа — единственная, которая говорит, что сервер ничего не рисует:

Crushform atlas: none in this process (a dedicated server draws nothing).

Каждая строка деформации говорит server lattice, с полями, перечисленными в Репликации и предсказании. На экране ничего не видно. Подключите клиента из второго экземпляра, например UnrealEditor.exe "<path to your .uproject>" <server address> -game -windowed, и врежьте машину в стену. Строка сервера показывает растущий счётчик hits, а счётчик accepted растёт за каждый отчёт клиента, который сервер принимает.

Консольные команды ничего не делают в собранной версии

Заголовок раздела «Консольные команды ничего не делают в собранной версии»

Причина. Crushform.Stats, Crushform.Debug, Crushform.ShowZones, Crushform.ShowCollision, Crushform.RepairAll и Crushform.DebugImpact вырезаны из сборок Shipping. Режим отладки находится в модуле CrushformDebug, который там запрещён. Переменные шин, например Crushform.Tire.Enable, не вырезаны, но это настройки, а не инструменты.

Решение. Поставляйте инструменты в сборке Development. Держите серверы Development и клиенты Development вместе, потому что сервер Development с клиентами Shipping не поддерживается.

Причина. Сервер не запускает физику шарниров. Он решает, когда деталь отходит и когда отрывается по вмятинам, но качание показывается только на инстансах, которые рисуют.

Решение. Смотрите качание на клиенте. Копия на сервере показывает результат как отделённые детали, которые публикует.