Проблема с "тиками" на сервере
Дата: 11.02.2022 13:04:47
Rushcore: Командиры, Спешим поделиться важной информацией о баге, который в
последнее время обсуждали в сообществе. Проблема наблюдается у
орудий с высокой скоростью перезарядки: при использовании
каскадного режима стрельбы или просто при постоянной стрельбе
скорострельность таких орудий снижается. Чем выше скорость
перезарядки, тем заметнее проявляется баг. При перерывах в стрельбе
или в случае долгой перезарядки он не заметен. Иными словами, если
играть на кораблях со скорострельной артиллерией и вести
непрерывный огонь (зажав левую кнопку мыши или постоянно нажимая
ее), темп стрельбы начнет "проседать". Проблема возникает в силу
неучтенных, к сожалению, особенностей обмена данными между
компьютерами игроков и сервером. Она никак не связана с навыками
командиров, модернизациями и другими модификаторами — это часть
базовой механики стрельбы, и она работает для всех одинаково.
Работы по исправлению уже ведутся: Проблему каскадной стрельбы мы
планируем исправить в версии 0.11.2 - решение уже есть, но его
нужно протестировать и убедиться, что оно не вредит
производительности. Проблему с постоянной стрельбой можно решить
только переработав существенную часть основного кода игры; мы
немедленно приступаем к этой задаче, но пока что не можем сказать
сколько именно времени потребуется. Обязательно будем держать вас в
курсе и рассказывать о прогрессе. Несмотря на то, что эта проблема
существовала как часть основной механики игры с момента выпуска и
напрямую не влияла на такие аспекты, как навыки командира, мы все
же признаем влияние, которое она могла оказать на опыт некоторых
игроков. Таким образом, игроки, которые войдут в игру до конца
февраля (00:00 UTC, 1 марта), получат 5 дней премиум-аккаунта WoWS.
Мы благодарим вас за внимание к игре. Если вам интересны
технические подробности, пожалуйста, ознакомьтесь с информацией
ниже. Когда возникла проблема? Она существовала в игре с
самого начала. Видимо, в силу своей неочевидности и того, что в
первые годы в игре не было столько скорострельных кораблей, она
долгое время оставалась незамеченной. Как она связана с обменом
данными между клиентом и сервером? В бою одновременно происходят
сотни событий, из которых складывается цельная картина. Летят
снаряды, идут торпеды, маневрируют корабли и самолеты, все это
взаимодействует друг с другом, при этом каждый момент боя должен
быть "рассчитан" на сервере и синхронно передан всем игрокам, а от
игроков в свою очередь постоянно поступает новая информация. Для
оптимизации производительности частота вычислений на сервере
регулируется разработчиками. Ее можно измерить так называемыми
"тиками", каждый тик — это промежуток между двумя вычислениями
состояния боя. Для относительно размеренного темпа World of
Warships установлена частота 7 тиков в секунду. И этого достаточно
для правильной работы подавляющего большинства механик игры,
однако, как выяснилось, непрерывная стрельба в высоком темпе может
давать сбои. Во-первых, когда орудие перезарядилось, выстрелить оно
может только в ближайший тик сервера. Если перезарядка закончилась
между тиками, то возникает задержка пока сервер "ждет" следующего
тика. 1/7 секунды — это очень мало, но при постоянной стрельбе
нескольких орудий с быстрой перезарядкой через какое-то время
"потерянное" время можно прочувствовать. Во-вторых, при каскадной
стрельбе (непрерывное удержание левой кнопки мыши) проверка на
возможность стрельбы происходит раз в два тика, что, опять же
вызывает дополнительную задержку. Как будет решаться проблема? Для
каскадной стрельбы у нас есть потенциальная возможность решить
проблему путем настройки параметров. Мы увеличим частоту проверки
до одного раза в тик, проверим как скажется на производительности
игры. Если тестирование пройдет успешно, мы как можно скорее
(надеемся, уже в версии 0.11.2) внесем изменение в игру. Что
касается непрерывной стрельбы, тут нужно "научить" игру, ее
серверную часть, учитывать остаток перезарядки и окончание
перезарядки орудия между тиками. Задача существенно сложнее, так
как нужно будет переписать часть основного кода игры. Мы уже
приступили к работе, но пока еще сложно сказать сколько потребуется
времени. Мы постараемся доставить это изменение в надлежащем
качестве и как можно быстрее. Почему нельзя просто повысить частоту
тиков? Подавляющее большинство игровых механик отлично работает с
текущей частотой, и серверная часть игры под нее оптимизирована. В
World of Warships одновременно происходят самые разные события,
игра очень сложная и насыщенная в плане информации, которую нужно
обработать серверу. Однако, поскольку темп игры относительно
невысокий, вычисления 7 раз в секунду позволяют поддерживать
высокий уровень качества и отзывчивости. Проблема со
скорострельными орудиями - единственный прецедент, о котором нам
известно, связанный с частотой вычислений. И в данном случае
разумнее решить эту проблему локально, а не вносить глобальные
изменения во взаимодействие клиента и сервера. А что с балансом
кораблей? Нужны ли какие-то изменения? Проблема, как выяснилось, в
игре с самого начала, поэтому все расчеты по балансу и боевой
эффективности проводились в одинаковых, равных условиях. Поэтому в
данный момент изменения не требуются. Однако, мы будем внимательно
следить за статистикой и внесем корректировки если потребуется.
Надеемся, эта информация помогла вам лучше понять, что это за баг и
как он влияет на игру. Мы приложим все усилия, чтобы как можно
скорее устранить его. Спасибо за ваше понимание.
Проблема с "тиками" на сервере