Практичний посібник з аудиту Unity-проєкту

Переймаєте проєкт на Unity? Що перевірити, перш ніж починати з нуля.

Автор: Artem Shkabura ·

Unity-проєкт, що зупинився, може виглядати гірше, ніж є насправді. Відсутній SDK, незадокументований крок збірки або покинутий сервіс можуть приховувати придатний продукт. Водночас переконлива демонстрація може приховувати серйозні проблеми з випуском.

Як засновнику або продюсеру, вам потрібно знати, чого реально можна досягти наступними вкладеннями. Спочатку я з’ясовую, що ви хочете випустити, що вже працює та які проблеми можуть завадити завершенню. Для першої розмови достатньо короткого опису; перед обміном конфіденційними матеріалами чи наданням доступу до вихідного коду можемо укласти угоду про нерозголошення (NDA).

01

Збережіть те, що успадкували

Збережіть історію репозиторію, останню робочу збірку та всі нотатки з налаштування. Зафіксуйте версію Unity Editor і цільову платформу до відкриття проєкту в іншій версії. Збережіть оригінал і досліджуйте окрему робочу копію.

Перший корисний результат — відтворювана збірка: на іншій машині можна виконати задокументовані кроки й отримати застосунок, що працює. Якщо це не вдається, зафіксуйте точний блокер і відсутню залежність. «Не збирається» — це висновок для дослідження, а не достатня підстава переписувати.

Unity рекомендує створювати резервні копії перед оновленнями й оцінювати, чи виправдовують переваги витрачені зусилля. Я дотримуюся тієї самої дисципліни до зміни вихідної основи успадкованого проєкту.

Unity: оновлення Unity-проєкту

02

Перевірте інструменти, сервіси й облікові записи, потрібні проєкту

Я перевіряю версію редактора, конвеєр рендерингу, пакети Unity, ресурси Asset Store, нативні плагіни та зовнішні SDK. Огляд також охоплює інструменти збірки, середовища бекенду, доступ для підписування та контроль необхідних облікових записів.

Для кожної критичної залежності визначте версію, доступність, сумісність і відповідального. Плагін із незадокументованими локальними правками потребує іншого підходу, ніж той, який можна встановити без змін.

Зберігайте маніфест пакетів і lock-файл разом із проєктом. Lock-файл Unity фіксує розв’язані залежності пакетів і має зберігатися в системі контролю версій для відтворення однакового набору на різних машинах. Недоступний сервіс або відсутній вихідний код можуть визначати обсяг відновлення сильніше, ніж вік коду C#.

Unity: розв’язання залежностей і lock-файли

03

Перевірте швидкодію на потрібних пристроях

«На моєму комп’ютері працює плавно» не доводить готовності до мобільних пристроїв або гарнітур. Я вибираю репрезентативне обладнання та повторювані сценарії: запуск, насичений момент геймплею, перехід сцени й тривалішу сесію, де доречно.

Я шукаю навантаження на CPU чи GPU, зростання пам’яті, затримки завантаження та повторні виділення пам’яті, а потім пов’язую висновки з видимою для гравця проблемою. Записуйте пристрій, версію збірки, налаштування та кроки, щоб порівняння були змістовними.

Unity рекомендує профілювати на цільовій платформі. Editor Play Mode ділить ресурси з редактором і не відображає точно продуктивність пристрою. Збірки для розробки підтримують підключення Unity Profiler. Профілювання спрямовує діагностику; я також перевіряю запропоноване виправлення в цільовій конфігурації випуску, перш ніж вважати проблему вирішеною.

Unity: профілювання застосунку

04

Перевірте збережений прогрес, покупки й аналітику

Успішний запуск — лише одна частина сумісності. Наявні гравці можуть мати збережений прогрес, відкритий контент, покупки або стан на сервері.

Я простежую, де зберігаються ці дані, та перевіряю типові старі збереження з пропонованими змінами. Перевіряйте перерване завантаження, відсутні дані та збої міграції. До зміни форматів чи ідентифікаторів узгодьте, що має зберегтися, що може змінитися та як працює відновлення.

Потім пройдіть повний шлях прогресії: почніть, заробіть або відкрийте щось, збережіть, перезапустіть і продовжте. Перевірте пов’язані події аналітики, зокрема їхнє значення й контекст версії. Якщо історичний трекінг ненадійний, наступний випуск може встановити базу вимірювання; він не може автоматично довести покращення утримання.

05

Перевірте головне відкрите питання на невеликому робочому прикладі

Перед оцінкою значної зміни коду або повної переробки я узгоджую невеликий тест: на яке питання він має відповісти, який обсяг роботи допустимий і що вважатиметься успішним результатом.

Наприклад: чи може один типовий рівень завантажити наявне збереження, завершити ігровий цикл, надіслати очікувані події та вкластися в узгоджений бюджет продуктивності на цільовому телефоні?

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

06

Оберіть наступний крок на основі висновків.

Рекомендація має пояснювати, що виявила перевірка, чому це має значення та яку роботу варто виконати далі.

Завершити

Основна частина гри працює, а решту роботи можна чітко перелічити й оцінити.

Наступний крок: Виправте проблеми, що заважають випуску, та перевірте узгоджені функції.

Рефакторинг

Певні системи постійно спричиняють збої або перешкоджають необхідним змінам.

Наступний крок: Покращте одну частину коду й перевірте, чи пов’язані функції досі працюють.

Перебудувати

Наявний код не дозволяє розумно реалізувати потрібні функції, навіть після розгляду практичних варіантів виправлення.

Наступний крок: Перевірте підхід до заміни й сплануйте перенесення наявних даних гравців.

Невелика платна перевірка проєкту допоможе вирішити, що робити далі. До початку ми узгоджуємо питання, потрібний доступ, межі роботи та результати, які ви отримаєте. Ви отримуєте робочу збірку або пояснення того, що заважає її створити, список висновків за пріоритетом і запропонований наступний крок із чітко зазначеними припущеннями.

Конкретний приклад взаємопов’язаного геймплею, збережень і прогресії — у проєкті Polar Station Survival— гра з багатьма пов’язаними системами, у якій я був єдиним Unity-розробником.

З’ясуйте, що потрібно вашому проєкту далі.

Розкажіть про проєкт, який ви перейняли, і про те, що хочете випустити. Можемо узгодити невелику перевірку, щоб визначити потрібну роботу.

Обговорити ваш Unity-проєкт

Почніть із загального опису. Ми можемо укласти угоду про нерозголошення (NDA), перш ніж ви поділитеся чутливими деталями, вихідним кодом чи матеріалами проєкту.

Як я працюю з конфіденційною інформацією