Налаштування CI/CD пайплайнів для збірки білдів ігор

Ручна збірка Unity-проекту на локальній машині розробника — це не пайплайн, а ризик. Збірка залежить від локальних налаштувань середовища, версії редактора, імпортованих кешів. «У мене працює» перетворюється на «а у QA немає, тому що там інша версія скриптів або інший кеш Shader Compiler». Налаштува

Наші компетенції

Інші послуги студії

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
    1515
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    1017
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    649
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    729
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Навчальна вікторина для дітей «Покупки в магазині»
    117

Ручна збірка Unity-проекту на локальній машині розробника — це не пайплайн, а ризик. Збірка залежить від локальних налаштувань середовища, версії редактора, імпортованих кешів. «У мене працює» перетворюється на «а у QA немає, тому що там інша версія скриптів або інший кеш Shader Compiler». Налаштування CI/CD пайплайнів для збірки ігор — це автоматизація, яка усуває невідтворюваність білдів. Ми вирішуємо це автоматизацією. Ми — команда з понад 7-річним досвідом у геймдеві, яка налаштувала CI/CD для 30+ проектів. Автоматизація економить до 200 000 грн на місяць на типовому проекті, а при трьох і більше платформах — до 300 000 грн. Окупається за 2-3 місяці. Замовте оцінку проекту — це безкоштовно.

CI/CD у геймдеві усуває проблему: кожен commit у гілку develop автоматично збирається у відтворюваний артефакт — білд для конкретної платформи. QA завжди тестує свіжий білд, не залежачи від програміста. Налаштований пайплайн у 3 рази швидше ручної збірки та знижує кількість багів до релізу на 80%. Зв'яжіться з нами для консультації.

GameCI як основа Unity CI/CD

GameCI (game.ci) — відкритий Docker-образ з попередньо встановленим Unity, спеціально для CI/CD. Працює з GitHub Actions, GitLab CI, CircleCI, Jenkins. Підтримує всі Unity LTS версії, всі цільові платформи (Android, iOS, WebGL, Windows, macOS, Linux).

Базовий GitHub Actions workflow для Unity Android-білду:

- name: Build Android uses: game-ci/unity-builder@v4 env: UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }} UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }} UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }} with: targetPlatform: Android unityVersion: 2022.3.20f1 buildName: MyGame androidExportType: androidAppBundle androidKeystoreName: user.keystore androidKeystoreBase64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} androidKeystorePass: ${{ secrets.ANDROID_KEYSTORE_PASS }} androidKeyaliasName: ${{ secrets.ANDROID_KEY_ALIAS_NAME }} androidKeyaliasPass: ${{ secrets.ANDROID_KEY_ALIAS_PASS }} 

Критичний момент — Unity License на CI-машині. Unity Personal/Plus вимагає seat activation. Для CI використовуємо або Unity License Server (Enterprise), або manual activation через game-ci activation workflow. Без правильної активації CI просто не запуститься. Згідно з документацією Unity, ліцензування на CI — обов'язкова умова.

Як налаштувати CI/CD для ігор: 4 ключові етапи

Етапи вибудовуються логічно: validation, build, distribution, production. На кожному є свої тонкощі. Покрокова інструкція:

  1. Validation — швидкі перевірки без повної збірки: unit tests через game-ci/unity-test-runner, codeformat check, Asset Database integrity. Запускається на кожен push, займає 5–10 хвилин.
  2. Build — повна збірка для цільових платформ. Запускається при merge в develop або за розкладом. Android: 15–40 хвилин. iOS: 30–60 хвилин. WebGL: 10–25 хвилин.
  3. Distribution — після успішного білду: Android AAB → Google Play Internal Testing через fastlane supply, iOS IPA → TestFlight через fastlane pilot, WebGL → S3/CDN-хостинг. QA отримує повідомлення в Slack з прямим посиланням на тест-білд.
  4. Production release — ручний тригер (manual approval). Фінальний білд з production-конфігом, підписаний production keystore/certificate, публікується в store.

Чому self-hosted runner швидший за хмарний?

Для студії з 3+ розробниками self-hosted runner на виділеній машині економічно вигідніший. Збірка Unity — CPU та IO інтенсивна задача. Час на GitHub Actions (4 CPU, 16 GB RAM) — 40 хвилин для Android-білду. На виділеному сервері (16 CPU, 64 GB RAM) — ті ж 12 хвилин.

Порівняння хмарного та self-hosted CI
Параметр Хмарний CI (GitHub Actions) Self-hosted runner
Час збірки Android 40 хвилин 12 хвилин
Вартість за хвилину Безкоштовно (до ліміту) Апаратні витрати
Кешування Вимагає явного налаштування Постійне на диску
Масштабування Миттєве Обмежено залізом

Unity Shader Cache та Asset Import Cache між збірками — критичні для швидкості. На self-hosted runner кеш зберігається між runs. На хмарному CI потрібно явно кешувати через actions/cache (Library/ папку), інакше кожен білд імпортує всі асети заново.

Як прискорити збірку на хмарному CI?

Використовуйте кешування Library через actions/cache з ключем по хешу залежностей. Це скорочує час імпорту асетів з 20 до 2 хвилин. Також можна застосувати incremental build через Unity Accelerator.

Реальний кейс: студія 4 програмісти + 2 художники, Android-проект. Ручна збірка займала 50+ хвилин, робилася раз на тиждень. Після налаштування GameCI + GitHub Actions на self-hosted Ubuntu-runner з Wine для Unity: автоматичний білд при кожному merge в develop, час збірки 18 хвилин, QA отримує посилання на Firebase App Distribution автоматично. Кількість виявлених багів до релізу зросла в 3 рази — просто тому, що QA почав тестувати регулярно. Окупність інвестицій у CI/CD склала 2 місяці.

Що входить у налаштування під ключ

  • Налаштування CI/CD для однієї або кількох платформ (Android, iOS, WebGL)
  • Вибір типу runner (хмарний або self-hosted)
  • Конфігурація кешування та оптимізація часу збірки
  • Автоматичний підпис для iOS (Fastlane match)
  • Інтеграція з магазинами додатків (Google Play, App Store)
  • Повідомлення в Slack/Telegram про результати збірки
  • Документація з експлуатації пайплайну
  • Навчання команди (1 година)
Масштаб задачі Орієнтовні терміни
CI/CD для однієї платформи (Android або iOS) 3–5 днів
CI/CD для двох платформ + distribution 1–2 тижні
Повний пайплайн (Android + iOS + WebGL + Slack) 2–3 тижні
Налаштування self-hosted runner + кешування 2–4 дні

Вартість розраховується після аналізу інфраструктури та цільових платформ. Зв'яжіться з нами для консультації — це безкоштовно. Ми гарантуємо стабільність та супровід. Замовте оцінку проекту, щоб отримати точні терміни та бюджет.