Найти тему
47 подписчиков

Про авто-тестирование в геймдеве


У меня тут с утра возникло обсуждение с другом бекендером собственно про тесты. Энтерпрайс бекенд в целом всё старается покрыть тестами и это нормально. Там другие сроки разработки, другие масштабы проектов, банально другое число абстракций и интеграций. В геймдеве же тесты не так распространены. И вопрос нужны ли тесты в геймдеве?

До этого хочется написать, а зачем вообще нужно покрытие тестами? Одна из основных задач тестов "контроль работоспособности абстракций". В любом коде так или иначе возникает некоторый набор абстракций. Возьмём простой пример (писать так точно не надо) У нас идёт игра Moba. У нас есть понятие Ability. От него идут Fire Ball Ability, Frost Bolt Ability и так далее. И в базовом классе описан метод Launch, который проверяет количество маны персонажа и делает всякие другие проверки. Для запуска нужен таргет. Мы создаём тест, в котором у нас должен умирать противник с такими-то характеристиками по настройкам баланса. То есть пускаем мок скилл в мок таргет. И так со всеми скиллами. Результат теста — все таргеты всегда мертвы. И при заданных характеристиках скилл вообще запущен.

Такой тест позволит отслеживать что "скиллы не сломались за счёт изменений" той же базовой реализации метода Launch в 100 скиллах. Или при изменении баланса, так как "ящик должен умирать с одного фаерболла". Классно, удобно и так далее. Но вот вопрос. А сколько таких мест в средней игре, что у нас есть какая-то абстракция на реализацию которой опирается 100 конкретных реализаций. Игры в разы конкретнее и несут (да и должны нести) в разы меньше сложных абстракций нежели возникает в серверной разработке. То есть потребность в тестировании сильно зависит от игры. Можно подобрать примеры типа WoW (хотя там опять таки больше бекенд чем клиентские разрабы обложатся тестами).

Поэтому любопытно, а как вы считаете насколько необходимо автотестирование в играх? Именно в клиентской части. Ток не на уровне "религии" — оно надо, потому что мне так сказали. А какие проблемы оно решает, чем полезно, чем удобно, чтобы как же тот же Test Driven Development стоил того, чтобы с ним морочиться.

#мысли
1 минута