- Supported Games
- Counter-Strike 2
- Resource was created using AI
- No, AI was not used
- Source Link
- https://github.com/SlynxCZ/SlowAnimationFix_mm
Плагин для Metamod который пытается исправить проблему с замедленными анимациями
Сама проблема
После длительной работы сервера CS2 на одной и той же карте без смены карты или перезапуска, игроки сталкиваются с замедленной анимацией и вялым движением при подключении.
Основная причина: переменная curtime в CGlobalVars представляет собой 32-битное число с плавающей запятой. По мере увеличения его размера точность чисел с плавающей запятой снижается — при ~24 часах работы точность падает до половины такта, при ~48 часах она превышает полный интервал такта. Это приводит к некорректным результатам анимации, движения и компенсации задержки.
Valve никогда не добавляла механизм сброса для curtime ни в одном из вариантов кода.
Что делает этот плагин?
Запускает ISource2Server::GameFrame каждый тик
Когда текущее время превышает пороговое значение и сервер пуст, вычитает большое смещение из текущего времени и соответствующим образом корректирует счетчик тиков
Сохраняет все относительные различия во времени — таймеры сущностей, обратные вызовы и запланированные события остаются неизменными
Результат
Сервер может работать неограниченное время на одной и той же карте без проблемы с замедлением.
Перезапуск карты не требуется.
Никакого влияния на активный игровой процесс — исправление происходит только на пустом сервере.
Важное уточнение
Плагин является экспериментальным — исправление основано на изменении смещений CGlobalVars в libserver.so и libengine2.so
Протестировано на выделенных серверах с частотой 64 тика
Пороговое значение по умолчанию: 1 час накопленного текущего времени на пустом сервере
Сама проблема
После длительной работы сервера CS2 на одной и той же карте без смены карты или перезапуска, игроки сталкиваются с замедленной анимацией и вялым движением при подключении.
Основная причина: переменная curtime в CGlobalVars представляет собой 32-битное число с плавающей запятой. По мере увеличения его размера точность чисел с плавающей запятой снижается — при ~24 часах работы точность падает до половины такта, при ~48 часах она превышает полный интервал такта. Это приводит к некорректным результатам анимации, движения и компенсации задержки.
Valve никогда не добавляла механизм сброса для curtime ни в одном из вариантов кода.
Что делает этот плагин?
Запускает ISource2Server::GameFrame каждый тик
Когда текущее время превышает пороговое значение и сервер пуст, вычитает большое смещение из текущего времени и соответствующим образом корректирует счетчик тиков
Сохраняет все относительные различия во времени — таймеры сущностей, обратные вызовы и запланированные события остаются неизменными
Результат
Сервер может работать неограниченное время на одной и той же карте без проблемы с замедлением.
Перезапуск карты не требуется.
Никакого влияния на активный игровой процесс — исправление происходит только на пустом сервере.
Важное уточнение
Плагин является экспериментальным — исправление основано на изменении смещений CGlobalVars в libserver.so и libengine2.so
Протестировано на выделенных серверах с частотой 64 тика
Пороговое значение по умолчанию: 1 час накопленного текущего времени на пустом сервере
- Requirements
- Install
- Выбрать нужный архив с ОС вашего сервера и раскидать все по папкам