Перейти к содержанию

SmoothRide и ZombieSync: синхронизация машин и зомби в мультиплеере

Два сторонних мода для Build 42.21+, их обновления 1.1 и авторские тесты.

Опубликовано

26 октября автор druidqwerty выпустил два сторонних Java-мода для мультиплеера Project Zomboid Build 42.21+: SmoothRide MP 1.0.0 для отображения машин и экспериментальный ZombieSync MP 1.0.0 для зомби. Релизы опубликованы с разницей 22 секунды; 28 октября оба получили версию 1.1.0. Приведённые замеры и результаты — сообщения автора, независимо моды не тестировались.

Установка по инструкциям релизов

ПроектВерсия 1.0.0Обновление 1.1.0
SmoothRideНужен ZombieBuddy 2.3.4+; распаковать SmoothRide в %UserProfile%\Zomboid\mods\, добавить SmoothRide в Mods= сервера; мод нужен каждому игрокуУдалить старую папку и распаковать новую либо обновить через Workshop; ZombieBuddy может один раз запросить одобрение нового JAR
ZombieSync MPНужен ZombieBuddy 2.3.4+; распаковать ZombieSyncMP в ту же папку и добавить ZombieSyncMP после ZombieBuddy в Mods= сервера; мод нужен каждому игрокуУдалить старую папку и распаковать новую либо обновить через Workshop; возможен запрос одобрения нового JAR

В архивах обеих версий автор указывает README_RU.txt. ZombieSync 1.1.0 также ссылается на Workshop ID 3827946115. Это инструкции источника: архивы не скачивались и сценарий установки не проверялся.

SmoothRide 1.0: автомобили

В авторском локальном тесте с водителем и наблюдателем удалённая машина отображалась с задержкой 80 мс против 504 мс в vanilla, средняя ошибка положения составила 0,95 м против 5,94 м, резких скачков не наблюдалось. Автор отмечает, что проект полностью сделан с помощью AI для игры с другом; тест проводился только на dedicated-сервере, а Host из меню игры в 1.0 не проверялся.

SmoothRide 1.1: задержки сервера

По описанию автора, сохранение мира примерно раз в пять минут и загрузка областей могут вызывать паузы 0,3–2 секунды с отбрасыванием накопленных обновлений машины. В 1.0 прогноз ограничивался 250 мс, после чего машина замирала и могла резко перемещаться на 10–45 м. В 1.1 движение продолжается по дуге до 2,5 секунды, затем машина плавно останавливается; после возврата данных ошибка сглаживается. Исправление setAngles считается телепортацией, чтобы избежать быстрого вращения; консоль показывает [SmoothRide] loaded 1.1.0.

Настройки перенесены в Host → Manage settings → Edit → Sandbox → SmoothRide: Enable, режим, интервал отправки водителя и перекрытие пауз сервера. Они общие для игроков; администратор может изменить их в Admin → Sandbox options во время игры, а клиенты, по заявлению автора, применяют их в течение двух секунд. В Options → Mods остаются личные переключатели статистики.

Авторский тест SmoothRide 1.1

Локальный сервер, водитель и пассажир-наблюдатель, 145 FPS: трасса на 90 км/ч с 16 искусственными задержками 0,3–2 секунды. Телепортом в таблице считался скачок более 1 м за один кадр.

ПоказательVanilla1.0.01.1.0
Замерзание машины, среднее / максимум0,9 / 1,6 с0,95 / 1,8 с0 / 0 с
Телепорты49240
Максимальный скачок за кадр7,3 м46,8 м0,10 м

При обычной езде по восьмёрке автор указал задержку изображения 72 мс, против 80 мс в 1.0.0 и 492 мс в vanilla; средняя ошибка 0,86 м, скачков ноль. Эти результаты относятся к описанному локальному тесту автора.

ZombieSync 1.0: зомби

Первый релиз обозначен экспериментальным: автор проверял его на локальном сервере с двумя клиентами, а не на публичном сервере. В тесте с 20 зомби заявлены 0 телепортов против 173, средняя ошибка 0,15 клетки против 0,58 и задержка отображения 175 мс против 300 мс.

Известное ограничение 1.0: ориентация зомби стала хуже предыдущей тестовой сборки — средняя ошибка 17,6° против 1,0°, хотя лучше указанной vanilla 30,9°.

ZombieSync 1.1: задержанные данные

Автор связывает возвраты зомби вперёд и назад у игроков через интернет с обработкой устаревших обновлений после задержки сервера: первое ожидавшее обновление могло быть старше на 2,5–4 секунды. В 1.0.3 оно принималось за новое; при отсутствии обновлений зомби замирал, через 1,2 секунды передавался vanilla и затем мог возвращаться со скоростью до 20 клеток/с. В 1.1 обновления сохраняют реальное время, слишком старые отбрасываются, короткий разрыв пережидается в замедлении с буфером по умолчанию 1,5 секунды, а после более долгого происходит один скачок.

Общие настройки находятся в Host → Manage settings → Edit → Sandbox → ZombieSync MP: включение, режим плавности, интервал отправки, предел загрузки, буфер задержек, синхронизация игроков, атаки и поедание. Администратор может изменить их во время игры через Admin → Sandbox options; применение клиентами заявлено в течение двух секунд. В Options → Mods остаются личные переключатели статистики. NPC Project A-Life остаются на vanilla-синхронизации; старый ZombieSyncMP.properties больше не закрепляет старые тайминги. Сообщение загрузки: [ZombieSync] loaded 1.1.0.

Авторский тест ZombieSync 1.1

Условия автора: локальный сервер, владелец зомби и наблюдатель, 16 зомби, 145 FPS; сеть с round trip около 130 ± 30 мс, потерями 1,5%, сетевыми паузами 0,3–1 секунду и задержками сервера 0,3–3,8 секунды; буфер 1,6 секунды.

ПоказательVanilla1.0.31.1.0
Телепорты после сетевых задержек820
Телепорты после задержек сервера401445*
Другие телепорты6600
Кадры протаскивания быстрее 8 клеток/с2151100684
Движение назад на 1000 кадров1,981,900,58
Задержка позиции зомби310 мс225 мс225 мс
Расстояние кусающего зомби до видимого игрока1,38 клетки0,640,65

* Автор объясняет 45 событий одним чистым скачком на двигавшегося зомби после четырёх задержек 1,9–3,8 секунды, превысивших буфер; 1.0.3 вместо этого 51 раз передавала зомби vanilla и затем протаскивала обратно.

При обычном соединении автор указал задержку 190 мс у 1.1.0, 185 мс у 1.0.3 и 240 мс у vanilla; среднюю ошибку 0,17 / 0,20 / 0,36 клетки, ноль телепортов у 1.1.0 против 64 в vanilla и расстояние кусающего зомби 0,56 / 0,63 / 1,24 клетки соответственно. При 300 зомби хуки мода занимали 1,4% одного ядра наблюдателя.

Известная проблема: TrippingZombies сбивает зомби на сервере только для копий других игроков; лежащая копия телепортируется vanilla каждые три клетки до подъёма. Автор отмечает такое же поведение без ZombieSync.

Контекст Java-модов

21 октября The Indie Stone отдельно сообщила о рисках и пределах поддержки Java-модификаций. Это общее предупреждение, и его связь с данным выпуском не установлена. Предупреждение The Indie Stone о Java-модах