← Все истории
2013

BotWars: пусть игра тестирует себя сама, пока все спят

В Steam Defense были бои в реальном времени, свой скриптинг сценариев, AI скирмиша и сетевой PvP. Каждый плейтест находил новое зависание, а наиграть столько часов, чтобы найти их все, мы физически не могли.

Поэтому я заставил игру тестировать себя саму. Уходя домой, я запускал тестовую сцену, где боты всю ночь спавнились и убивали друг друга. Утром приходил и смотрел, где всё встало. За ночь сцена создавала несколько десятков тысяч юнитов.

Бой в реальном времени в Steam Defense

Бой в реальном времени в Steam Defense.

Причины были самые разные: бесконечный цикл, слишком много объектов, кончалась память, а иногда при странном стечении обстоятельств не удалялись визуальные эффекты. Спеллов у нас было много, и только такое тестирование позволяло проверить все комбинации их взаимодействия. Например, была ошибка: пока стрела летела, погибали и удалялись со сцены и стрелок, и жертва. Я расставлял отладочные логи в подозрительных местах, так что к утру данные уже были готовы и показывали, где именно всё зависло.

На это ушло две-три недели, и игра стала заметно стабильнее. Такие баги вручную просто не поймать.

Урок, который я использую до сих пор: если систему не протестировать руками, заставьте её саму генерировать тестовые ситуации и гоняйте, пока вы спите. Сегодня я делаю то же самое с AI-агентами и эталонными фикстурами.