оригинал
оригинал перевода на NSHQ.net
Блог: CCP Atlas
2010.02.04 12:03:48
После выхода аддона Dominion, мы стали получать жалобы от игроков на возросший "боевой лаг".
Перед тем, как мы продолжим, я бы хотел заверить всех, что специальная группа разработчиков постоянно занимается этой проблемой, но определение ее источника оказалось непростой задачей.
Итак, в чем же проблема?
"Лаг" это неоднозначный термин, и может относиться ко многим вещам.
Графика в клиенте может его замедлять, сеть может быть перегружена, и еще куча разных проблем могут оказывать воздействие на игру.
Мы провели много времени, пытаясь воспроизвести проблему на тестовых серверах, параллельно наблюдали за битвами, которые разворачивались на сервере Tranquility, где мы получали помощь от игроков в виде тестирования и отчетов об ошибках.
Вы могли видеть имена "CCP Atlas", "CCP GingerDude" and "CCP Warlock", появляющиеся в локале.
Не переживайте, мы просто наблюдаем за сервером, ищем ошибки.
Старшие программные инженеры проводят их вечера и выходные на Tranquility, следя за состоянием сервера, поскольку мы не смогли обнаружить эти проблемы во время тестирования - из-за того, что нужно огромное количество людей для провокации возникновения проблем, и мы не можем воспроизвести в "лабораторных условиях" те специфические сочетания состояний игровых систем, в которых возникают ошибки (хотя над этим мы тоже сейчас работаем).
То, чему мы сейчас уделяем основное внимание - это тот факт, что производительность "звездных узлов" (кластеры компьютеров, управляющие звездными системами) сейчас заметно ниже, чем раньше.
Даже несмотря на то, что нагрузки на процессоры кластеров не возросли после выхода Dominion, каждый усиленный "узел" не в состоянии справиться с тем же количеством сражающихся кораблей так же легко, как справлялся раньше.
В дополнение к этому, у нас есть проблема с тем, что "грид" (пространство и объекты в системе - прим. пер.) не подгружаются после входа в солнечную систему.
Одно дело, когда вы застреваете на входе, и не можете пройти в звездные врата - вы еще не в бою, и совершенно другое дело - когда вы уже фактически прошли врата и прибыли на другую сторону без возможности загрузить "грид" - вы можете быть уязвимы из-за того, что ваш игровой клиент неспособен на какие-либо действия.
Это может пагубно сказаться на состоянии флота, заходящего в солнечную систему.
На самом деле происходит следующее - клиент запрашивает информацию о системе от сервера, но не получает ее своевременно.
Может пройти несколько минут, прежде чем информация наконец-то дойдет до вас, потому что она "застревает" на нижних программных уровнях "звездного узла".
Анатомия "зависшего грида"
Когда складывается специфическая ситуация "зависшего грида", ее отпечаток на вашем клиенте легко узнаваем (хотя мы, к сожалению, не можем видеть эти эффекты в логах сервера).
Обратитесь к следующей диаграмме, чтобы определить, столкнулись ли вы с этой проблемой:

Вкратце: данные о новой системе, новый локал чат, новое меню в космосе, пустое овервью, старый фон космоса
Это то, как обычно выглядит ваш клиент, когда вы входите в систему, которая подвержена этой проблеме.
Хотя если вы входите в игру и находитесь в такой системе, вы увидите только черный экран и полоску "загрузка".
Если мы немного посмотрим на изображение, вы увидите, что канал локального чата, меню по правому клику мышки и информация о системе обновлены данными новой системы, в то время как звездный фон остался от старой системы.
Ваше овервью тоже будет пустым, и вы не увидите иконки объектов в космосе.
Если вы откроете меню "монитор" (Control+Shift+Alt+M), у нем будет как минимум один исходящий сигнал (outstanding call).
Это и есть ваш запрос к серверу.
Когда вы видите это - самое худшее, что вы можете сделать - это начать нажимать кнопки или писать в чате.
Это только усугубит проблему. Переподключение к серверу тоже не поможет, и может ухудшить ситуацию.
Лучшее, что вы можете делать - это просто ждать (см. ниже "Правила выживания в лаге крупной битвы").
Свет в конце туннеля
Мы наконец-то смогли воспроизвести эту проблему специальным тестом на сервере Singularity 27 января, когда более 400 человек участвовали в эксперименте и помогали нам разобраться в происходящем.
Это было замечательно, и я бы хотел поблагодарить всех, кто пришел.
28 января была массивная битва 1600 человек на сервере Tranquility, за которой наша команда внимательно наблюдала, поддерживая этот кластерный узел в живых особыми методами, приводящими наших системных администраторов в ужас.
Это было одно из крупнейших, если не самое крупное, сражение за всю историю ЕВЫ (по крайней мере, из тех, которые не обрушили сервер).
Это событие позволило нам идентифицировать причину проблемы и сразу же внести поправки.
Мы добавили несколько мер, защищающих узлы от потери связи и отключений во время таких мощных пиковых нагрузок, и разработали несколько поправок, которые будут применены в течение следующих нескольких недель.
Как я могу помочь?
Массовое тестирование запланировано на тестовом сервере Singularity в этот четверг, 4 февраля, 16:00 по времени ЕВЫ.
Те, кто хочет помочь, пожалуйста, приходите и пришлите нам логи клиента, когда вы столкнетесь с проблемой "зависшего грида", или какими-то другими ошибками.
Мы особо будем тестировать входы в несколько звездных систем, чтобы попробовать некоторые новые программные исправления.
Это тестирование потребует, чтобы программа Logserver.exe был запущена из папки, где установлен клиент, перед тем, как вы запустите сам клиент EVE.
Ваши лог-файлы критически важны, и каждый отчет об ошибках с этой информацией, который вы отправите, будет тщательно рассмотрен и приедет нас на еще один шаг ближе к решению этой проблемы.
Более подробная информация о предстоящем тесте - в этой теме.
В дополнение к этому, если вы планируете атаковать систему, мы также настоятельно рекомендуем, чтобы вы уведомили нас по крайней мере за 24 часа перед атакой через Форму Уведомлений о Битвах, чтобы мы могли перевести дополнительные ресурсы на усиление этого "звездного узла".
Это также даст нам возможность мобилизовать сотрудников и обеспечить их присутствие в этой системе, с соответствующим измерительным оборудованием, установленным на наших фригатах Polaris.
Правила выживания в лаге крупной битвы
Чтобы немного облегчить ваши страдания, я бы хотел немного поговорить о лучших тактиках, которые я смог обнаружить во время периодов экстремального серверного лага.
Обратите внимание, что я говорю о серверном лаге, а не о низких FPS или проблемах с сетевым подключением (например, если вы влезли в масштабный бой с мобильного телефона по спутниковому модему 9600 бит/сек откуда-нибудь с заснеженной вершины горы).
Лаг, о котором здесь идет речь, это когда сотни игроков сражаются в одной звездной системе и все испытывают задержки с передачей данных, когда, например, пушкам требуются буквально минуты чтобы среагировать на команды и выстрелить.
Если вы уже сталкивались с подобными ситуациями, вы наверняка знаете симптомы.
Именно в таких обстоятельствах проблема "зависания грида" проявляется.
НЕ ДОЛБИТЕ ЭТУ КНОПКУ!
Одна из наиболее важных вещей, которые вы должны держать в голове, когда вы в системе с мощным лагом - вы не должны долбить какие-то кнопки, и должны стараться отдавать клиенту как можно меньше команд.
Если вы ждете загрузки грида, самое худшее, что вы можете начать делать - это нажимать на кнопки интерфейса или писать в локальном канале чата.
Эти действия окажут отрицательное воздействие на способность вашего клиента восстановить связь (а более точно - на вашем подключении к серверу).
Если у вас есть исходящий сигнал, вы должны дождаться его завершения, и он завершится рано или поздно.
Это может занять несколько минут, но ваша пушка выстрелит, и дополнительные нажатия на кнопки не ускорят этот момент.
НЕ просматривайте региональный рынок или контракты, пока вы ждете загрузки системы.
Я понимаю, это тяжело и скучно, но вам лучше оставить клиент в покое, пока он ждет ответа от сервера, или вы ухудшите ситуацию, и ваша сессия подключения к сервер зависнет намертво.
Используйте Монитор
Закладка "Network" на внутренней уитлите мониторинга клиента (Control+Shift+Alt+M) может помочь вам лучше понять, завершились ли ваши запросы к серверу вовремя.
Если в ряду "Outstanding" (Исходящие - прим. пер.)есть число - это значит, что сервер занят выполнением вашей команды.
Подождите, пока она закончится перед тем, как отправлять следующую команду.
Запросы к серверу "умирают"
Когда я сказал, что запросы к серверу рано или поздно будут выполнены, это правда... с определенной точки зрения.
Запрос обязательно будет обработан сервером в какой-то момент, но может так случиться, что клиент уже отменит запрос к этому моменту.
Запросы обычно длятся 8 минут, и это справедливо и для запроса загрузки "грида".
Если вы прождали 8 минут, и грид не загрузился - он не загрузится вообще.
Если у вас открыт "монитор", и вы видите число в ряду "Outstanding" снижается до 0, а грид все еще не загрузился - у вас нет другого выхода, как перезагрузить клиент, и даже это может не помочь, поскольку сервер все еще перегружен.
Обратите внимание, что если вашу капсулу взорвали в этом состоянии, клиент заработает нормально как только вас переместят на станцию, где расположен ваш медицинский клон.
Заключение
Мы прошли долгий путь в понимании проблем, которые отравляли жизнь больших флотов после выхода Dominion, и получили важное осознание того, что такое "боевой лаг" в целом.
Проблемы, которые мы испытываем сейчас, уже решаются, и скоро будут исправлены, и это добавит динамизма в ваши космические сражения.
Я бы хотел попросить всех поддерживать порядок в форумной теме, связанной с этим блогом, и свести флуд и ругань к минимуму.
Спасибо,
Jon Bjarnason
Технический Директор
EVE Online, CCP Games
------------------------------------------------
Дополнение от Отдела Поддержки Пользователей
Вмешательство отдела поддержки пользователей в крупные сражения даже в самой незначительной мере очень проблематично из-за сложности ситуации.
При определенных условиях, связанных с лагом или ускользающими багами, которые трудно определить как решающий фактор, CCP не может принимать решения, кто должен был проиграть, а кто - победить.
Когда рассматриваемая в блоге проблема воздействует на каких-то игроков в определенных ситуациях, свидетельства этого воздействия в логах сервера (если они вообще есть), могут быть истолкованы неоднозначно.
Как следствие, вмешательство CCP рискует быть несправедливым.
Это означает, что CCP не будет возмещать потери, произошедшие в крупных сражениях.
Пожалуйста, поймите, что возмещение потерь в сражениях крупных флотов всегда были спорным моментом, по поводу которого было множество дискуссий в CCP.
Окончательное решение, тем не менее, всегда заключалось в том, что лучше оставить столкновения флотов в покое, чем каждый раз разбираться с ними и компенсировать все потери.
Мы приносим свои извинения за любые неудобства, которые это может вызвать, и благодарим вас за терпение, пока мы старательно работаем над решением этой проблемы.
Сообщение отредактировал Keyn Thror: 04 February 2010 - 18:48