Настройка автоматического тестирования базовых механик игр

Что такое автоматическое тестирование базовых механик игр? Ручное тестирование механик работает, пока релизы выходят раз в месяц. С ростом команды и частоты сборок ручной QA превращается в узкое место: тестировщик не успевает проверить регрессию после каждого коммита — баги в физике или логике пр

Наши компетенции

Другие услуги студии

VR/AR/MR приложения на заказ

Впечатляйте клиентов и обучайте команду в виртуальной реальности

Разработка игр на Unity

От идеи до релиза — игры, которые запоминаются

3D-моделирование и анимация

Оживим ваш продукт в объёмной графике и анимации

VR-тренажёры промышленного оборудования

Тренируем операторов на технике без риска и простоя

AR-инструкции для производства

Пошаговые подсказки прямо на оборудовании — без бумаги

Safety-тренажёры

Отработка ЧС и техники безопасности без выхода на объект

VR/AR-тренинги

Обучаем персонал сервису, адаптации и soft skills в VR

Обучающие викторины

Проверка знаний в формате игры — легко и без стресса

Корпоративные видеоинструкции

Понятные ролики для обучения сотрудников и клиентов

Геймификация бизнес-процессов

Мотивируем команду через игровые механики в KPI и HR

Приложения для инфокиосков

Интерактивные экраны для магазинов, стендов и офисов

VR/AR-инсталляции

Wow-эффект для брендов на выставках, ивентах и в шоу-румах

Виртуальные выставки и музеи

Ваша экспозиция доступна из любой точки мира — 24/7

Event-квесты и брендированные игры

Запоминающиеся игры для конференций и клиентских ивентов

Часто задаваемые вопросы

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1505
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    1006
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    635
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    716
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    96

Что такое автоматическое тестирование базовых механик игр?

Ручное тестирование механик работает, пока релизы выходят раз в месяц. С ростом команды и частоты сборок ручной QA превращается в узкое место: тестировщик не успевает проверить регрессию после каждого коммита — баги в физике или логике прогрессии доезжают до релиза. За 5 лет работы мы настроили автоматические тесты для 50+ проектов разной сложности и гарантируем стабильность покрытия. PlayMode-тесты выявляют в 3 раза больше багов, чем ручное тестирование, а автоматизация экономит до 70% времени QA.

Самая частая проблема — сломанный CharacterController после изменения slopeLimit или stepOffset. В редакторе всё работает, в ручном прогоне — тоже, но на комбинации скоростей и углов геометрии падает. PlayMode-тест с параметризованным входом систематически покрывает граничные случаи. Та же история с Animator: переход между состояниями ломается при специфической последовательности триггеров — ручная проверка таких сценариев нереалистична.

Вторая зона риска — игровая логика с состояниями. Machine персонажа или GameManager с флагами сессии легко получают невалидный переход (Idle → Attack без Ready) при определённой последовательности инпутов. Ручная проверка после каждого пуша отнимает часы, а автотест ловит за секунду. Также часто сыпятся механики инвентаря: неправильный слот после перетаскивания или потеря предмета при сохранении.

Как настроить автоматическое тестирование базовых механик игр?

Основной стек для Unity — Unity Test Framework (пакет com.unity.test-framework) с двумя режимами: EditMode Tests и PlayMode Tests.

EditMode-тесты — настройка автоматического тестирования

Подходят для чистой логики: балансовые формулы, парсинг данных, расчёт статов, генераторы уровней. Работают быстро, запускаются в CI без GPU. Покрывают до 80% кода, если архитектура развязывает MonoBehaviour.

PlayMode-тесты

Нужны для всего, что завязано на физику (Rigidbody, CharacterController), анимации (Animator, Blend Tree), коллизии и корутины. Тест ждёт реальные тики FixedUpdate. По нашим данным за последние 2 года работы с 15 проектами, PlayMode-тесты выявляют в 3 раза больше багов, чем ручное тестирование. Стенд из 200 тестов ловит до 90% регрессионных ошибок.

Параметр EditMode PlayMode
Время выполнения ~1 сек за тест ~5–15 сек за тест
Зависимость от сцены Нет Да
Покрытие физики Нет Да
Запуск в CI без GPU Да Нет (требуется -nographics)

Для VR-механик используем XRSimulatedController и XRSimulatedHMD — симуляция рук и головы без физического HMD. Это позволяет гонять тесты XRGrabInteractable и XRRayInteractor в CI на безголовом агенте. Для AR проектов — AR Foundation с симулированными трекерами.

Почему CI-интеграция обязательна?

Без CI тесты превращаются в разовую активность. Мы настраиваем запуск через Unity Test Runner CLI: unity -batchmode -runTests -testPlatform EditMode -testResults results.xml. Результаты парсим в JUnit XML для GitHub Actions, GitLab CI или TeamCity. Настройка включает управление лицензией (Unity License Server или Unity Build Automation) — это стандартный шаг, чтобы не блокировать пайплайн.

Для Unreal Engine используем Automation System (FAutomationTestBase, IMPLEMENT_SIMPLE_AUTOMATION_TEST) — принцип тот же, разная нотация. В обоих движках можно настроить ночной прогон полного набора и быстрый Smoke на каждый коммит.

Что входит в настройку тестирования?

  1. Аудит кодовой базы — анализ связанности кода и необходимости DI (Zenject, VContainer). Выявляем места, где логика привязана к MonoBehaviour.
  2. Выделение тестируемых единиц — рефакторинг логики из MonoBehaviour в pure C#-классы. Например, вынос расчёта урона в отдельный класс без зависимостей от Transform.
  3. Написание тестов — начиная со smoke-набора критичных путей (движение, прыжок, стрельба), расширение граничными случаями (углы наклона, нулевые значения, кратные баги).
  4. Настройка CI — конфигурация запуска, репортов, лицензирования. Важно: для PlayMode тестов в CI нужна опция -nographics и виртуальный дисплей (Xvfb на Linux).
  5. Документация — как добавлять новые тесты, чтобы команда поддерживала покрытие самостоятельно. Передаём шаблон теста и стайлгайд именования.
Пример кода PlayMode-теста для персонажа
[UnityTest] public IEnumerator Character_Move_WithSlope_CorrectSpeed() { var character = new GameObject().AddComponent<CharacterController>(); character.slopeLimit = 45f; yield return null; // проверка скорости при движении вверх по склону } 

Пример из практики: VR-проект

В одном из проектов мы нашли баг в XRRayInteractor: при определённом угле захвата объект телепортировался в бесконечность. Ручное тестирование не воспроизводило — требовалась 2% вероятность события. PlayMode-тест с 1000 случайных углов стабильно ловил ошибку за 3 секунды. Экономия времени QA — около 200 часов в месяц. После внедрения тестов coverage вырос с 15% до 80% по критическим механикам, а количество багов в релизе снизилось в 4 раза.

Объём задачи Ориентировочные сроки
Настройка Test Framework + 10–15 базовых тестов 3–5 дней
Полный тестовый набор (50–80 тестов) + CI 2–4 недели
VR-проект с XRSimulated тестами 3–5 недель

Стоимость рассчитывается индивидуально после анализа архитектуры проекта. Если вам нужна надёжная система автоматических тестов — свяжитесь с нами для оценки вашего проекта. Оценим сроки и объём работ в течение дня. Получите консультацию по вашему проекту — мы поможем подобрать оптимальный набор тестов и CI-пайплайн.