Топ-10 асетів та сторонніх кітів, які варто використовувати в розробці ігор
Привіт, мене звати Олесь Дібрівний, я Unity Developer в компанії Keiki з екосистеми Genesis. Ми створюємо продукт на стику EdTech та GameDev — застосунки й вебпродукти для розвитку дітей. Їх завантажили понад п’ять мільйонів юзерів.
Кілька років тому я брав участь у геймджемі як ментор. Після оголошення переможця один з моїх підопічних, підійшовши до мене, сказав:
«Олесю, але переможці зробили свою гру, скомпонувавши її з того, що знайшли на асет-сторі. Вони не написали навіть трьох рядків коду. Хіба це чесно?»
Вже не памʼятаю, що йому тоді відповів, але в той момент я впевнився в тому, що Unity Asset Store і просто сторонні SDK чи асети, які ви можете знайти — найкраще, що боги інтернету нам послали. Уявіть готове протестоване рішення, яке може зекономити вашому проєкту купу часу та грошей. Що може бути краще? Лише список з 10 таких рішень, від яких розробники точно будуть в захопленні.
Місця в списку розподілено умовно. Також тут ви не знайдете SDK внутрішньоігрових покупок чи реклами, бо такі SDK потребують окремої статті, а також контентних асетів, адже їх потрібність буде визначатися конкретним проєктом.
10 місце: Mesh Baker
Це необхідний інструмент для оптимізації 3D-проєкту. Ще потрібнішим він стане за відсутності досвідченого фултайм 3D-художника, готового прийти на допомогу в будь-який момент. Робота з моделями зі стоків чи фрилансу це про надмірно велику кількість зайвих матеріалів та сабмешів. Вставляєш одну таку модель в проєкт — кількість драв-колів злітає до небес. MeshBacker повністю візьме на себе процес оптимізації. Частинка того, що він вміє:
- Створення атласів або масивів текстур для наборів пропсів;
- Пошук, групування і комбінування мешів у великих і складних сценах;
- Модифікація префабів моделей для використання атласних матеріалів;
- Підтримка моделей з багатьма матеріалами;
- Обробка тайлових текстур;
- Комбінування, кастомізація та додавання обʼєктів до скінед-меншів;
- Комбінування динамічних мешів в один скін.
Також асет має добре прописану документацію, відеоуроки, що постійно доповнюються, та хорошу підтримку від розробників.
9 місце: Spine: 2D skeletal animation for games
Досі використовуєте покадрову анімацію в проєкті? Якщо ви втомилися від постійної зміни юнітівського інструментарію для роботи зі скелетною анімацією, то Spine створений спеціально для вас. Асет не з Unity Asset Store, але це найкраще, що було зроблено для роботи з персонажною 2D-анімацією в Unity.
Spine працює з принципом скелетної анімації: персонаж ріжеться на частини, анімація створюється шляхом зміни стану окремих частин об’єкта. Таким чином набір з
Звичайно, можна скористатися одним з 10 рішень Unity для скелетної анімації, або знайти щось на Asset Store, але Spine має над ними кілька переваг:
- Spine працює з будь-яким ігровим рушієм, що підтримує 2D, і підходить для створення анімаційних кліпів. Знайти аніматора, що працює в Spine, набагато легше за того, хто створить якісну 2D анімацію в Unity.
- Spine оминає роботу з Unity Animator. Якщо чесно, я терпіти не можу працювати з ним. Якщо ви хоч раз пробували налаштувати комплексні переходи між станами анімацій в Unity, ви мене зрозумієте. Про анімаційні івенти й роботу з анімаційними параметрами через стрінги я взагалі мовчу. Spine дозволяє керувати анімаціями з коду.
До того ж Spine має:
- Кастомну серіалізацію анімаційних кліпів і скінів;
- Анімаційні івенти кінця програвання анімаційного кліпу й анімації;
- Просту інтеграцію анімаційних івентів в середину анімації;
- Можливість підвʼязувати до вашого анімаційного скелета спрайти, які будуть брати участь в анімації — робити систему еквіпменту зі Spine одне задоволення;
- Один файл для ігрових та UI анімацій;
- Добре прописану документацію і живе комʼюніті.
Загалом, коли ви спробуєте Spine, працювати з іншими 2D аніматорами вам не захочеться.
8 місце: Amplify Shader Editor
Якщо коротко, то Amplify Shader Editor це Shader Graph здорової людини.
З переваг:
- Супердетальна документація з описом кожного шматочка функціональності. Розробники створили свою вікіпедію: Unity Products:Amplify Shader Editor — Amplify Creations Wiki;
- Шейдер темплейти (Shader Templates);
- Функції для шейдерів (Shader Templates);
- Відкритий соурс код;
- Підтримка консолей Xbox One/Xbox Series X/PS4/PS5/Switch;
- Групування шейдерів в пост процесингу;
- Величезна колекція самплів(Full List).
7 місце: Cinemachine
Якщо ваш проєкт потребує чогось більшого, ніж однопланова статична камера — використовуйте Cinemachine. Коли я востаннє створював кастомний контролер для 2D камери, то витратив на те це кілька днів. В мене вийшло й близько не таке гнучке рішення, як Cinemashine. Тепер, коли мені потрібен контролер для камери, встановлення Cinemashine — перше, що я роблю. З переваг:
- Підтримка 2D-функціональності, як от ортографічний рендеринг і 2D-фреймінг;
- Десятки різних налаштувань в контролері камери, які дозволяють вам створити її справді унікальною;
- Слідкування за групою обʼєктів з налаштуваннями вагових коефіцієнтів кожного обʼєкту;
- Бленди між різними камерами з використанням ease-функцій. Збереження цих налаштувань в скріптаблах для більшої гнучкості;
- Система для «трусіння» камери при зіткненні з обʼєктами;
- Можливість додати до 8 віртуальних камер, та контролювати їх через код чи таймлайн шкалу;
- Система уникнення перешкод з колайдерами;
- Режими розділеного екрана та картинки в картинці;
- Автоматичний зум;
- Постпроцесна обробка.
Згадані асети є надзвичайно корисними, але їх використання сильно залежить від жанру чи простору гри. Тому їм далеко до універсалів, про які мова йтиме далі.
6 місце: Firebase
Тут я трішки схитрував, об’єднавши в пункті цілу групу продуктів від одного розробника. Firebase може запропонувати вашому проєкту наступне:
Проєктна аналітика. Потрібно дізнатися, як користувачі реагують на фічі проєкту? Додаєте Firebase Analytics SDK, привʼязуєте відправку івентів з потрібного місця в коді й моніторите їх у Web консолі. Так ви побачите, в якому саме місці застосунку користувачі починають відвалюватись, чи скільки часу користувач проводить на кожному ігровому рівні.
Ремоут конфіги. Вони дозволять вам змінювати параметри застосунку без перерелізу. Детальніше в моїй статті: Як впровадити та ефективно використовувати Remote Config в дитячому EdTech продукті
АБ тести. Про них теж можна детально почитати в статті: Як впровадити та ефективно використовувати Remote Config в дитячому EdTech продукті . Якщо коротко — це інструмент перевірки впливу функціональності на ключові метрики вашого застосунку. Наприклад, ви захотіли змінити вигляд головного меню, але гадаєте, що це може відлякати користувачів. Тут допоможуть АБ тести: виділяємо групу юзерів, нехай це буде 20% від всіх користувачів. Половині з них показуємо старе меню, половині — нове. Спостерігаємо в якій групі кращі показники покупок, часу, проведеного в застосунку, й робимо висновки щодо необхідності редизайну.
Автентифікація. Firebase може керувати автентифікацією різних типів: емейл і пароль, Facebook, Google, Apple Account чи навіть Git-hub. Якщо юзер не автентифікувався, Firebase створить для нього акаунт-привид, дані з якого можна буде використати після автентифікації.
Real time data base. База даних на основі json файлу, оновлення з якої можна зчитувати в реальному часі з мінімальною затримкою.
І це, мабуть, лише менша частина того, на що здатний Firebase.
5 місце: DOTween (HOTween v2)
Краще рішення для створення анімаційних послідовностей в Unity. DotWeen дозволяє створювати компонентно базовані анімації з коду, обʼєднувати їх в послідовності, отримувати колбеки по їх закінченню, та запускати в асинхронних методах. Також DotWeen підтримує використання easing функцій — Easing Functions Cheat Sheet .
Анімації DotWeen створює на основі Unity компонент. Для Rigidbody, наприклад, ви можете керувати позицією, поворотом та швидкістю. Таким чином Dotween навіть можна використовувати для створення контролерів руху для 2D та 3D. Також DotWeen круто проявляє себе в роботі з UI анімаціями.
Посилання даю лише на безкоштовну версію — за мою карʼєру ще не було моменту, коли цієї функціональності було замало. Звісно, в pro-версії можна твінити TMPro, але без цього легко обійтись.
4 місце: Dependency Hunter/Finder
Платна й безкоштовна версія асета, без якого структурувати проєкт надзвичайно важко. Гадаю, ви стикалися з файлами, що лежать в проєкті з часів його створення, неодноразово. Вони наче ніким і не використовуються, але видаляти все одно страшно. Ці два асети покажуть вам повний список залежностей між файлами, навіть якщо вони вбудовані в систему адресаблів.
3 місце: Odin Inspector and Serializer
Відчуйте міць скандинавських богів, і зрозумійте, яким мав би бути інспектор Unity. Одін — це абсолютно новий стиль роботи з інспектором Unity:
- Статичний інспектор дозволяє вибрати будь-який тип та переглянути всі його статичні члени. Властивості, поля, навіть методи відображаються з усіма їх аргументами. Можна фільтрувати вивід за типом чи іменем члена.
- Пристойний вигляд енаму в інспекторі, а також можливість призначати його значення через пошук.
- Odin Editor Window — розширення функціональності Unity EditorWindow, з якою можна забути про написання GUI. Величезна кількість атрибутів для роботи з GUI-елементами задовольнить всі ваші бажання. Можна перевизначити метод GetTarget та передати екземпляр будь-якого типу для відображення. Він не обов’язково повинен бути серіалізованим, чи навіть об’єктом Unity. Це дозволяє серіалізувати інтерфейси, абстрактні класи й навіть колекції таких обʼєктів.
- 100+ атрибутів, що дозволять кастомізувати роботу інспектора. Вам не потрібно буде наслідуватись від чогось — помічаєте обʼєкт потрібним атрибутом і готово. Повний список за посиланням: 100+ attributes for Unity.
Я підібрав кілька найпростіших атрибутів, розписавши їх можливості:
- [ChildGameObjectsOnly] — можна використати на полях і властивостях типу Component. Компілятор проходитиме по дочірніх обʼєктах і повертатиме в дропдаун обʼєкти відповідного типу.
- [SceneObjectsOnly] — принцип роботи аналогічний попередньому, але пошук відбувається по всій сцені.
- [AssetsOnly] — можна використати тільки на полях і властивостях типу Unity.Object. Атрибут дозволяє серіалізацію лише обʼєктами, відсутніми на сцені.
- [Required] — може бути використаний на полі чи властивості типу Unity.Object. Дозволить вам виводити в інспекторі значок помилки й повідомлення про те, що обʼєкт пустий.
- [ValidateInput("VakidationMethod")] — дозволяє валідувати значення поля будь-якого типу через кастомний метод, що передається в цей атрибут.
- [ValueDropdown("IEnumerable«)] — створює дропдаун на основі IEnumerable з заданими вами значеннями.
Вишенькою на торті може стати ще один асет, що показує себе дуже пристойно в парі з серіалізатором : Odin Validator — Odin Validator . Він врятує вас від битих обʼєктів, місінгів і схожої нечисті.
2 Місце: Procedural UI Image + UI Gradient
Одразу почну з функціональності. Procedural UI Image додає в проєкт альтернативу Unity Image — вона може все, що й оригінал, та навіть більше:
- Налаштовувати радіус границі зображення(всіх відразу або кожної окремо);
- Налаштовувати ширину границі зображення;
- Якісне згладжування країв без удару по продуктивності чи драв колах;
- Підтримка розмиття границь, яке можна використати для ефекту мʼяких тіней чи світіння.
UI Gradient — це розширення попереднього асета, яке дозволяє працювати з градієнтами в UI. При цьому:
- Градієнти є процедурними та можуть бути анімованими;
- Підтримка лінійних (з 2+ кольорами) та чотирикутних градієнтів;
- Градієнти можна обертати на довільні кути;
- Висока продуктивність.
Гадаю, ознайомившись з функціональністю цієї пари, ви відразу підрахували зекономлене місце. Можна сказати «прощавай» сотні спрайтів з кружечками різних радіусів чи градієнтами, між якими бачать різницю тільки UI-дизайнери.
Бонусом буде ще одне схоже рішення: Modern Procedural UI Kit(Modern Procedural UI Kit). Цей асет має більше функціональності, але гірше в плані продуктивності.
1 Місце: SRDebugger — Console & Tools On-Device
Якщо використання попередніх асетів ще можна залишити під питанням, то цей екземпляр, чи його аналог, має бути в кожному проєкті. Все надзвичайно просто — дебаг-вікно для білду на девайсі.
Якщо ви розробляєте під платформи Standalone, iOS, Android, Windows Store, WebGL, чи Web Player і не використовуєте щось подібне, я вам співчуваю. Ну і раджу швиденько встановити цей асет.
Цей асет має бути першим, що ви додаєте у свій проєкт після його створення. Що ж він може?
- Виведення Unity логів в кастомний UI на девайсі з можливістю фільтрування, очищення і копіювання;
- Вбудований Bug Reporter, який дозволить вам відправляти логи поштою;
- Вбудований профайлер, для моніторингу ресурсів девайсу;
- Відкритий код, що дозволить вам вбудувати в панель дебагера свої дев-тулзи.
Один з магів моєї команди реалізував інтеграцію дебагера з Jira — тепер наші тестувальники заводять баги з логами у 2 кліки.
Це були 10 найкорисніших асетів на мою субʼєктивну точку зору, насправді їх існує куди більше. Нині перед початком виконання завдання я все частіше перевіряю, чи немає готового рішення в асет сторі. Ефект води — асет стор, реалістичні мотузки — асет стор, 2D пошук шляху — асет стор.
ВІдповідь на запитання «Нащо ж тоді компанії ти, якщо є скільки готових рішень?» досить проста. Хороший спеціаліст — не лише той, хто може зробити все з нуля, а й той, хто зможе підготувати найбільш вигідне бізнесу рішення в найкоротші терміни. Тому використовуйте асет стор на повну! Це допоможе оптимізувати вашу роботу та дозволить витрачати більше часу на складніші завдання.
Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини
3 коментарі
Додати коментар Підписатись на коментаріВідписатись від коментарів