Реклама | Adv
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
  • Rotator
Сообщения форума
Реклама | Adv

Нагрузочное тестирование World of Warships. Борьба за оптимизацию

Дата: 15.07.2014 17:00:00
Jluca: Всем привет. Вашему вниманию статья Олега Чуры, Lead of Performance QA.   "Год назад, когда я пробегал по холлу четвёртого этажа, меня поймал руководитель студии: Олег, а что у нас с производительностью? Ну-у, почти на всех компьютерах не больше 15 кадров в секунду.   На тот момент предстояло проделать очень большую работу по оптимизации игры. А поплавать «с комфортом» можно было только на очень мощных машинах. Вот тогда мы всерьёз взялись за нагрузочное тестирование World of Warships.   Первым делом мы задались вопросом, на каких компьютерах играют наши пользователи.   Была тщательно проанализирована статистика от наших коллег (World of Tanks и World of Warplanes) и игрового сервиса Steam. Перелопатив кучу данных, мы собрали тестовый стенд с четырьмя самыми востребованными пользовательскими конфигурациями. Это сейчас у нас металлическая стойка с аккуратно расставленными компьютерами, которую можно назвать стендом. А поначалу всё выглядело примерно так: Мы постоянно меняли комплектующие, подбирая оптимальные компоненты для создания более мощных или, наоборот, слабых конфигураций. Мы учли, что многие игроки запускают «Танки» на ноутбуках абсолютно разной мощности и на компьютерах с видеокартами, встроенными в процессор. Вспомнили, что далеко не у всех одинаковые операционные системы и антивирусы, и постарались максимально разнообразить парк техники.   В результате мы добавили ещё четыре стендовые конфигурации, всё подключили к двум мониторам через специальные KVM-переключатели, настроили сеть и начали тестировать. Помимо тестового стенда, активно использовались обычные рабочие компьютеры коллег и две игровые комнаты.   А как тестировать?   Всё то время, что ушло на постройку стенда, мы не сидели сложа руки, а думали и пробовали разные варианты тестов. Началось всё очень просто: мы сели и начали играть. Один создаёт тренировочную комнату, к нему присоединяются остальные участники боя, а дальше все просто: стреляем-убиваем и попутно записываем количество кадров в секунду.     С учетом количества нововведений, которые поступали на тестирование, стали очевидны недостатки текущего подхода: Мы тратим очень много времени на ручной тест. Не имеем возможности фиксировать действия игрока. Точность такого теста очень низка за счёт разнообразия сценариев и непредсказуемости поведения игроков. Мы получаем только FPS — количество кадров в секунду — и не знаем, что происходит «внутри».   Запись происходящего   Для фиксации событий мы взяли проверенную фичу из World of Tanks — запись процесса боя в файл реплея. Процесс тестирования тоже поменялся. Теперь вместо целого отдела всего один человек записывал максимально насыщенный бой с ботами. После чего оставалось воспроизвести реплей на всех стендовых компьютерах и получить статистику.   Такой способ идеально подошёл для сравнения двух разных компьютеров или версий игры, это точное повторение всех совершённых действий. Одной из первых задач стала проверка изменённых моделей кораблей: записали бой на главной версии игры, добавили в клиент новые модели, воспроизвели на обоих версиях — и вуаля, нужные данные!   Но все же идеальных инструментов для этой задачи не существует, и как только мы захотели сравнить две версии с различающейся серверной частью, реплей просто отказался воспроизводиться и игра «упала» с фатальной ошибкой. Пришлось записывать разные реплеи для двух версий. И здесь нас ждала очередная проблема. Свои действия повторить более-менее точно человек ещё может, но непрограммируемые на тот момент боты были просто неуправляемыми. Таким образом, сравнивать между собой нужно было абсолютно разные по своему сценарию бои. Вопрос мог быть решён большим количеством реплеев. И реплеев разных. Как известно, увеличение количества измерений положительно сказывается на качестве выборки и уменьшает разброс исследуемых величин (для упрощения отбросим крайние случаи, которые этот самый разброс увеличивают). Иными словами, имея под рукой достаточное количество статистических данных, мы можем делать выводы о том, в каком состоянии находится данная версия игры, даже если данные были получены в ходе сильно различающихся по сценарию сражений. Но откуда их взять? Тратить человеко-дни команды тестирования на запись нужных сценариев? Решение было найдено!   Плейтесты   В студии Lesta каждый день проводится несколько больших игровых тестов. Каждый желающий может прийти и поиграть в одну из версий игры, посмотреть новые элементы геймплея и модели техники. Во время игры с каждого компьютера автоматически записывается реплей. После каждого боя хорошо тренированные миньоны отправляют эти файлы на специальный сервер команды тестирования производительности для хранения и воспроизведения при необходимости.   Плейтесты позволяют протестировать стразу множество самых разных игровых ситуаций. Кроме того, что все участники предпочитают разные типы кораблей, у каждого есть свои собственные тактика и стиль игры. Причём некоторые игроки умудряются делать вещи, про которые мы периодически забываем. Например, был бой, в котором авианосец на полном ходу таранил эсминцы, пытавшиеся его атаковать. Или есть игроки, которые при каждом залпе переключают вид камеры, чтобы посмотреть, как красиво летят снаряды.   После плейтеста в нашем распоряжении оказывается от 70 до 150 файлов реплеев — самые разнообразные варианты боёв. Мы сортируем их по картам и длительности, готовим конфигурационные файлы и приступаем к следующему важному шагу.   Массовый тест производительности     Теперь, когда у нас есть множество записей боя, мы можем провести действительно массовый тест клиента и увидеть реальную производительность игры с учётом почти всех возможных ситуаций. Система, созданная специалистами отдела тестирования нагрузки, автоматически запускает воспроизведение отобранных записей на нужных тестовых стендах.   Во время долгих часов проведения теста с компьютеров собирается всевозможная статистика. Мы стараемся записывать всё, до чего можем дотянуться! В первую очередь, работает инструмент логирования производительности самой игры — профайлер. Именно этот парень помогает найти проблемы внутри игры. Вместе с ним трудятся ещё несколько инструментов, которые каждую секунду считывают состояние систем клиента и рассказывают об этом серверу.   30 кадров в секунду   Стоит сказать, откуда взялись 30 кадров в секунду и почему они так важны. Со времён плёнок и бобин мало что изменилось. Двигающееся изображение создаётся так же, как и раньше: видеокарта отрисовывает кадр за кадром. И чтобы обеспечить плавность изображения, компьютеру нужно успевать обработать не меньше 30 кадров в секунду. Если их меньше, играть становится некомфортно. Это именно то, что принято называть тормозами. :)     За один кадр в игре происходит множество различных операций: отрисовка воды, земли, неба, облаков, кораблей, взрывов, пожаров, трассеров, расчёт физики, получение данных от сервера, отправка данных и так далее. И все эти компоненты выполняются параллельно на процессоре и видеокарте. Мало нам того, что всё это должно работать быстро, ещё нужно настроить так, чтобы процессор не ждал, пока видеокарта пережуёт все данные или наоборот.   Сегодня, в преддверии выпуска новой версии, в том же самом месте меня поймал директор студии и спросил о ситуации на проекте. В этот раз мне было что ответить. В результате работы многих отделов, огромного количества улучшений и доработок производительность на большем количестве конфигураций достигла заветной отметки. И даже на довольно слабых компьютерах и ноутбуках играть стало действительно комфортно."       На этом всё. Читайте больше в нашем блоге разработчиков.  

Реклама | Adv