Совместное исследование скандинавского мира Valheim в компании друзей приносит массу удовольствия, однако сетевой код игры часто омрачает геймплей серьезными техническими сбоями. Одной из самых раздражающих проблем в кооперативном режиме является десинхронизация (Desync) или сетевой рассинхрон. Игроки сталкиваются с тем, что двери на базе открываются с задержкой в несколько секунд, срубленные деревья зависают в воздухе, добытые ресурсы невозможно подобрать, а полоски здоровья врагов и боссов перестают уменьшаться, после чего персонажей внезапно телепортирует назад.
Корень данной проблемы кроется в архитектурных ограничениях сетевого движка Unity, которые разработчики из Iron Gate заложили в код Valheim по умолчанию. В оригинальной версии игры установлен жесткий лимит на максимальную пропускную способность сетевого канала для передачи данных между хостом (сервером) и клиентами — всего 64 КБ/с (61440 байт/с) на одного игрока. Когда вы находитесь в пустом биоме, этого объема данных хватает. Но стоит 3–5 игрокам сойтись на территории крупной базы с тысячами построек и прирученных животных, как сетевой буфер мгновенно переполняется. Пакеты данных начинают выстраиваться в огромную очередь и теряться, вызывая дикий десинк. Чтобы полностью ликвидировать лаги сервера, необходимо принудительно расширить эти искусственные лимиты.
Шаг 1: Ручное увеличение пропускной способности сети в конфигурационных файлах игры
Поскольку разработчики не вывели настройки сетевого буфера в обычное игровое меню, нам придется изменить цифровые лимиты передачи данных напрямую через низкоуровневые конфигурационные файлы в каталоге Valheim.
- Полностью закройте игру и клиент Steam.
- Перейдите в корневую папку, где установлен Valheim (в Steam: нажмите правой кнопкой мыши на игру -> «Управление» -> «Просмотреть локальные файлы»).
- Перейдите по следующему системному пути в каталоге игры:
..\Valheim\valheim_Data\Managed\. - Найдите файл конфигурации сети, который называется
assembly_valheim.dll. - Критически важное действие: Этот метод требует редактирования библиотек. Гораздо проще и безопаснее использовать современный фреймворк для модов
BepInExи готовый плагин ValheimPlus, либо прописать кастомный параметр в файлvalheim_plus.cfg, если вы используете модификации. Найдите строкуdataRateв секции[Server]и измените значение по умолчанию со61440до512000(это расширит канал до 500 КБ/с).
Если вы играете на чистой версии без модов, то владельцу сервера (хосту) и всем игрокам необходимо проделать манипуляцию с настройкой параметров запуска Windows и сетевой карты из следующих шагов.
Шаг 2: Отключение ограничения сетевых микропакетов в настройках брандмауэра Windows
Защитные механизмы операционной системы Windows часто воспринимают плотный многопоточный поток пакетов данных от сетевого кода Unity как потенциальную угрозу (DDoS-атаку) и начинают искусственно задерживать или отбрасывать часть пакетов, что мгновенно вызывает десинк в Valheim.
- Нажмите комбинацию клавиш
Win + R, введите в строку командуcontrolи нажмитеEnter, чтобы открыть классическую «Панель управления». - Перейдите в раздел «Система и безопасность», а затем кликните по вкладке «Брандмауэр защитника Windows».
- В левом навигационном меню нажмите на текстовую ссылку «Дополнительные параметры». Откроется окно мониторинга сетевой безопасности.
- Выберите пункт «Правила для входящих подключений» в верхнем левом углу.
- Найдите в представленном списке все строчки с названием
Valheim(их может быть несколько для протоколов UDP и TCP). - Щелкните по каждому правилу правой кнопкой мыши, выберите «Свойства» -> вкладка «Общие» -> убедитесь, что в блоке «Действие» установлен маркер «Разрешить подключение». Нажмите «Применить».
Шаг 3: Оптимизация сетевой карты и отключение алгоритма Нагла (Nagle's Algorithm)
Алгоритм Нагла встроен в сетевой стек Windows для экономии трафика: он объединяет несколько мелких пакетов данных в один крупный перед отправкой. В динамических кооперативных играх вроде Valheim это создает микроскопические задержки, которые при перегрузке базы объектами выливаются в катастрофический рассинхрон.
- Нажмите правой кнопкой мыши по кнопке «Пуск» на панели задач и выберите из списка «Диспетчер устройств».
- Найдите и разверните ветку «Сетевые адаптеры».
- Кликните правой кнопкой мыши по вашей основной сетевой карте (например, Realtek PCIe GBE Family Controller или Intel Ethernet) и выберите «Свойства».
- Перейдите на вкладку «Дополнительно».
- Найдите в списке параметров пункт «Разгрузка контрольной суммы IPv4» (IPv4 Checksum Offload) и переведите его в режим «Выкл» (Disabled).
- Аналогично найдите пункт «Энергосберегающий Ethernet» (Green Ethernet) и принудительно отключите его, чтобы сетевой чип не сбрасывал мощность во время игры. Нажмите «ОК».
Шаг 4: Переход на использование сетевого протокола Steam Networking вместо Direct IP
Если вы подключаетесь к другу напрямую по IP-адресу (
Direct IP), сетевой трафик идет в обход оптимизированных серверов-ретрансляторов Valve. При малейших проблемах на линии вашего интернет-провайдера связь будет обрываться. Использование внутренней сети Steam существенно повышает стабильность соединения.- При создании сервера хост должен обязательно поставить галочку напротив пункта «Старт сервера» и убедиться, что активен тумблер «Открытый сервер» (Community Server).
- Подключающимся игрокам ни в коем случае не стоит использовать ввод цифр IP-адреса.
- Откройте клиент Steam, найдите никнейм друга в списке контактов, нажмите по нему правой кнопкой мыши и выберите пункт «Присоединиться к игре».
В таком режиме Steam задействует свои собственные защищенные сетевые шлюзы и алгоритмы сжатия трафика Steam Datagram Relay (SDR). Это позволяет автоматически обходить проблемные узлы магистральных провайдеров, снижает пинг и минимизирует появление сетевого десинка даже при слабом интернет-соединении.
Заключение
Дикий рассинхрон и лаги на сервере в Valheim — это прямой технический результат переполнения стандартного сетевого буфера Unity, который по умолчанию ограничен скромными
64 КБ/с. Чтобы навсегда избавиться от десинхронизации в кооперативе, игрокам необходимо расширить пропускную способность сетевого канала с помощью параметра dataRate в конфигурациях модов, выставить максимальные разрешения для исполняемых файлов игры в брандмауэре Windows, отключить энергосберегающие функции и разгрузку чек-сумм в параметрах «Диспетчера устройств» для сетевой карты, а также осуществлять подключение строго через список друзей Steam, полностью отказавшись от нестабильного протокола Direct IP.
Комментариев нет:
Отправить комментарий