Год назад, когда я пробегал по холлу четвёртого этажа, меня поймал руководитель студии:
— Олег, а что у нас с производительностью?
— Ну-у, почти на всех компьютерах не больше 15 кадров в секунду.
На тот момент предстояло проделать очень большую работу по оптимизации игры. А поплавать «с комфортом» можно было только на очень мощных машинах. Вот тогда мы всерьёз взялись за нагрузочное тестирование World of Warships.
Первым делом мы задались вопросом, на каких компьютерах играют наши пользователи.
Была тщательно проанализирована статистика от наших коллег (World of Tanks и World of Warplanes) и игрового сервиса Steam. Перелопатив кучу данных, мы собрали тестовый стенд с четырьмя самыми востребованными пользовательскими конфигурациями. Это сейчас у нас металлическая стойка с аккуратно расставленными компьютерами, которую можно назвать стендом. А поначалу всё выглядело примерно так:
Мы постоянно меняли комплектующие, подбирая оптимальные компоненты для создания более мощных или, наоборот, слабых конфигураций. Мы учли, что многие игроки запускают «Танки» на ноутбуках абсолютно разной мощности и на компьютерах с видеокартами, встроенными в процессор. Вспомнили, что далеко не у всех одинаковые операционные системы и антивирусы, и постарались максимально разнообразить парк техники.
В результате мы добавили ещё четыре стендовые конфигурации, всё подключили к двум мониторам через специальные KVM-переключатели, настроили сеть и начали тестировать. Помимо тестового стенда, активно использовались обычные рабочие компьютеры коллег и две игровые комнаты.
А как тестировать?
Всё то время, что ушло на постройку стенда, мы не сидели сложа руки, а думали и пробовали разные варианты тестов. Началось всё очень просто: мы сели и начали играть. Один создаёт тренировочную комнату, к нему присоединяются остальные участники боя, а дальше все просто: стреляем-убиваем и попутно записываем количество кадров в секунду.
С учетом количества нововведений, которые поступали на тестирование, стали очевидны недостатки текущего подхода:
- Мы тратим очень много времени на ручной тест.
- Не имеем возможности фиксировать действия игрока.
- Точность такого теста очень низка за счёт разнообразия сценариев и непредсказуемости поведения игроков.
- Мы получаем только FPS — количество кадров в секунду — и не знаем, что происходит «внутри».