SmoothRide и ZombieSync: синхронизация машин и зомби в мультиплеере
Опубликовано
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 м за один кадр.
| Показатель | Vanilla | 1.0.0 | 1.1.0 |
|---|---|---|---|
| Замерзание машины, среднее / максимум | 0,9 / 1,6 с | 0,95 / 1,8 с | 0 / 0 с |
| Телепорты | 49 | 24 | 0 |
| Максимальный скачок за кадр | 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 секунды.
| Показатель | Vanilla | 1.0.3 | 1.1.0 |
|---|---|---|---|
| Телепорты после сетевых задержек | 8 | 2 | 0 |
| Телепорты после задержек сервера | 40 | 14 | 45* |
| Другие телепорты | 66 | 0 | 0 |
| Кадры протаскивания быстрее 8 клеток/с | 2151 | 1006 | 84 |
| Движение назад на 1000 кадров | 1,98 | 1,90 | 0,58 |
| Задержка позиции зомби | 310 мс | 225 мс | 225 мс |
| Расстояние кусающего зомби до видимого игрока | 1,38 клетки | 0,64 | 0,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-модах