Як стають Unity-розробниками та як подолати проблеми, що виникають на цьому шляху

Нещодавно на форумі GameDev DOU наш читач запитав поради досвідчених фахівців про те, як вони створюють ігри на Unity і як прийшли в геймдев. Тож ми попросили кількох спеціалістів у цій галузі поділитися своїм досвідом і поставили три запитання:

  • Як ви почали розробляти ігри на Unity?
  • З якими проблемами стикнулися, що було складно опанувати?
  • За скільки часу вдалось подолати проблеми і що можете порадити для цього?

Публікуємо їхні відповіді.

Сергій Авдієнко, Technical Artist в AB Games

Я завжди хотів розробляти ігри, тож з університету вивчав різні мови: Basic, Delphi, C++, C#. Брав участь в університетських і всеукраїнських олімпіадах з програмування. Пізніше, коли працював вчителем інформатики, з учнями розробляв тестові продукти, зокрема й ігри.

Продовжував вивчати 3D-моделювання та розробку в ігрових рушіях UDK (теперішній Unreal) та Unity. Наприкінці роботи в школі паралельно почав працювати в аутсорс-компанії. Вона створювала ігрові продукти для платформ Android та iOS. Тісно співпрацював із закордонними замовниками. Жага розробляти свої ігри та вивчати нові технології в цій сфері вела до набуття гарного досвіду в індустрії.

Одними з найбільших вад Unity на мою думку є нові фічі, які додають з великими оновленнями, а через одну-дві версії прибирають або не підтримують. Коли берешся вивчати Unity, маєш починати з базової функціональності, якою користується більшість.

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

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

Дуже важливо набиратися знань в усіх необхідних аспектах розробки ігор — 3D-моделюванні, текстуруванні, фізичних симуляціях тощо. Це формує повну картину того, з чим я працюю, і допомагає вирішувати більшість проблем ще до їх появи. Думаю, що досвід, помножений на бажання, дає найкращий результат. І що більше це бажання, то краще.

Володимир Бондаренко, CEO Mauris

Для розробки гіперказуальних ігор під телефони нам довелось перейти з React Native на Unity. Адже JavaScript дає дуже низьку продуктивність, коли треба використовувати фізику в грі. Однак найскладнішим в Unity для нас було створити відкритий світ для гри Corsairs Legacy зі збереженням високої частоти кадрів. Насправді цю проблему ми досі розв’язуємо. Довелось відмовитись від будь-яких рішень з «коробки», всю візуальну частину — компонент за компонентом — перероблюємо під себе заради кращої продуктивності.

Також читайте наше інтерв’ю з Володимиром Бондаренком про те, як перейти від аутсорсу до розробки власних текстових квестів, гіперказуальних мобільних ігор та піратського рольового екшену Corsairs Legacy.

Лілія Кухарець, Unity Developer у Plarium

Я почала розробляти ігри на Unity для виконання курсового проєкту з «Основ програмування» на другому курсі ФІОТ КПІ. Він був на довільну тему. Ми з подругою робили одну роботу на двох, в обох молодші брати та сестри, тому вирішили зробити дитячу гру. Не знаю, чи личить таке казати програмісту (певно, що не личить, хех) але мені тоді просто програмування здавалось нудним. Обрахунки, алгоритми, які існують лише у вигляді коду, з примітивною візуалізацією на Windows Forms (стандартні теми курсових, запропоновані тим, хто не хоче придумувати свою) не надихали абсолютно.

Гра на двох з локальним мультиплеєром та класними можливостями налаштувати UI здавалась хорошою альтернативою. А ще у Unity досить низкий поріг входження, а C# досить подібна до C++, яку ми вивчали на той момент (в порівнянні з JS або Python). Гра була агрегатором мініігор: на симетричне відтворення малюнку, на перетворення кліками різних картинок на однакові та на розв’язання простих математичних прикладів. А ще в Asset Store є багацько безкоштовних ресурсів, тому гра вийшла навіть миленька.

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

А ось з виключенням було набагато більше проблем. Бувало таке, що корутини відключались всі, не відключались взагалі, конфліктували одна з одною. Не пам’ятаю, як взагалі таке виходило, але чим менше шариш, тим неймовірніші баги (тут має бути гірка посмішка). Мені тоді допомогла документація, форуми і, звісно, поради більш досвідчених колег уже коли працювала над реальним проєктом.

Але документація від Unity і форуми — моє все. Там є відповіді буквально на всі запитання, і якщо щось не зрозуміло, за день-два чи тиждень максимум можна вивчити та натренуватися.

Віктор Антоненко, Lead Unity-розробник OBRIO

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

Та якщо бути ближчим до теми, то у 2015 році я зібрався з друзями — такими ж ентузіастами, як я — і ми стартували перший інді-проєкт. Це був топдаун-шутер з кастомізованим персонажем.

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

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

Суттєвою проблемою на старті був пошук архітектури та вміння правильно організувати зв’язки всередині програми і файли проєкту.

З технічних складнощів можу згадати ситуацію з моєю першою комерційною роботою на Unity. Це був мультимедійний застосунок з доповненою реальністю. У мене був слабкий робочий Mac, який я використовував лише для збірки на XCode, тому що він не витягував Unity, а білди я заливав зі свого ігрового комп’ютера на Windows. Проблема виникла на етапі збірки з використанням набору third-party сервісів, при тому саме з тією версією Unity, на якій я працював. У файлі, що входив до .xcodeproj, не виставлявся один символ, і це спричиняло помилки у збірці.

Але сьогодні Unity має розвинуту спільноту, дуже просунуті навчальні матеріали та цілі канали на YouTube, присвячені розробці. Тож відповідь на будь-яку проблему чи запитання вже є в інтернеті, треба лише вміти шукати.

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

На подолання проблеми зі збіркою в мене пішло 2–3 тижні, тому що я довго не міг знайти її причину. Тоді майже ніхто не стикався із цією проблемою і відповідь не можна було просто так знайти у гуглі. Тому можу порадити завжди перевіряти збірку білду одразу після додавання third-party сервісів і плагінів. Це може заощадити багато часу, який ви не згаєте на розуміння того, що проблема не у вашому коді, а в інтегрованому плагіні.

Сьогодні такі проблеми розв’язують ком’юніті всередині компаній. Колеги можуть підказати рішення і скоротити ваш час, який би ви витратили на самостійний пошук відповідей. Наприклад, Unity-розробники в OBRIO радяться з колегами з Genesis GameDev Community, де активну участь беруть спеціалісти з геймдев-бізнесів Genesis.

Максим Слободянюк, Senior Unity Developer в APPSULOVE

Мій кумир в особі Джона Кармака через Wolfenstein 3d, а потім Doom та Quake прищепив мені любов до ігор. Тож я не зміг захопитись чимось іншим. А почав розробляти ігри на Unity я випадково. Я один зі старожилів на GDRU, це означає, що у мене вже був досвід у геймдеві, але тільки особистий. Я прийшов у програмування з вивчення мови C та рушія Quake III. Загалом я не хотів створювати власний рушій, не мав досвіду, і навряд чи з цього б вийшло щось путнє. Далі мені пощастило, давно-предавно рушій був умовно безкоштовним, але ліцензія під iOS/Android була платною — і раптом Unity роздала їх безкоштовно.

Серйозних проблем в опануванні Unity у мене не виникало. Перші ігри, як і належить початківцям — були «Тетріс» та «Змійка». З першим проблем не було, оскільки Unity у своєму рушії врахували ті речі, з якими зіткнеться початківець. Наприклад, тобі не потрібно переживати, як рахується час на пристрої, у тебе є Update, тобі не потрібно дбати про складне виведення графіки, вона є і для початку це просто.

Зі змійкою були проблеми саме через те, що є той самий Update. Хотілося плавності. Зазвичай у «Змійці», раз в N часу переміщається вся змійка на одну клітинку, але у мене було 3D і хотілося, щоб змійка рухалась плавно та виключно по траєкторії ... без бананів на екрані (важко описати це словами, спробуйте уявити, як палиця повертає, ось приблизно так і моя змійка). Рішення прийшло швидко, замість використання інтерполяції (щось подібне до усереднення) координат для секції змійки між оновленнями гри, я починав запам’ятовувати у кожної секції в FixedUpdate координати позиції, і таким чином змійка проходила кожну точку і виглядало це круто. Якщо спростити і пояснити простими словами, то в точці, якою була голова змійки рано чи пізно буде хвіст, через M часу.

Складнощі мене не лякають, а викликають зацікавлення (в розумних межах). На розв’язання цієї проблеми я витратив, гадаю, тиждень. Тож щодо труднощів в опануванні Unity у мене проста порада: терпіння і праця... коли немає розуміння, що і як робити, коли немає навіть ідей чому так, просто кажите okey google і шукаєте вирішення в мережі.

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини

👍ПодобаєтьсяСподобалось8
До обраногоВ обраному0
LinkedIn


Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Підписатись на коментарі