Налаштування автоматичного тестування базових механік ігор

Що таке автоматичне тестування базових механік ігор? Ручне тестування механік працює, поки релізи виходять раз на місяць. З ростом команди та частоти збірок ручний 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
    1504
  • 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
    Навчальна вікторина для дітей «Покупки в магазині»
    95

Що таке автоматичне тестування базових механік ігор?

Ручне тестування механік працює, поки релізи виходять раз на місяць. З ростом команди та частоти збірок ручний 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-пайплайн.