МУЛЬТИПЛЕЕРВЫДЕЛЕННЫЙ СЕРВЕР
Выделенный сервер
Выделенный сервер запускает игру без окна и без игрока. Он хранит состояние повреждений, которое видит каждый игрок, и ничего из него не рисует. На этой странице перечислено, что вычисляет сервер, что он пропускает и чего ждать от консоли и от собранной версии 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 не поддерживается.
На сервере деталь не качается
Заголовок раздела «На сервере деталь не качается»Причина. Сервер не запускает физику шарниров. Он решает, когда деталь отходит и когда отрывается по вмятинам, но качание показывается только на инстансах, которые рисуют.
Решение. Смотрите качание на клиенте. Копия на сервере показывает результат как отделённые детали, которые публикует.