How to become the TOP Unity developer
Як стати кращим Unity розробником
Вітаю всіх, мене звати Віталій і я працюю з Unity 5 років. Зараз працюю розробником у компанії YozmaTech
У цій статті я розповім вам про різні напрямки розвитку у сфері Unity девелопменту, які допоможуть зрозуміти цілісність проблеми, яку здатний вирішувати двигун Unity, а саме, створення відео гри. Крім цього, я опишу ряд ключових понять, про які необхідно знати та розуміти їхні основні засади, і їхній внесок у створенні кінцевого продукту. На мою думку, ця стаття більшою мірою призначена для розробників рівня junior та middle, хоча розробники рівня senior також можуть бути зацікавленні у даній інформації, щоб зіставити її зі своєю картиною світу розробника. Я підкреслюю, що інформація у цій статті є моєю рефлексією на довгий шлях персонального росту як Unity розробника, а не чимось ідеальним, еталонним. Скоріш за все, ви можете натрапити на схожу інформацію на іншомовних ресурсах, які орієнтовані на нашу сферу діяльності.
Отож, почнемо, для себе я виділяю 5 напрямків розвитку, які мене цікавлять, а саме:
1) тривимірна математика та комп’ютерна графіка;
2) мова С#, платформа Mono;
3) двигун Unity;
4) дизайн програмного забезпечення (далі ПЗ) (OOP, SOLID, Шаблони проектування ПЗ);
5) структури даних, алгоритми.
Моя зацікавленість полягає у тому, що їхнє вивчення дає мені змогу покрити всі пробіли у моїх знаннях через які у мене виникали труднощі та затримки у вирішенні різного роду завдань та втілення моїх ідей. Пройдемо по них детальніше:
1)Перш за все, у Unity є цікава особливість, це низький поріг входження. Тобто, користувач з поверхневими знаннями та маленьким досвідом може створювати готовий, завершений продукт і це може навіяти думку, що цих знань достатньо для розробки ігор, або, що Unity є спасінням від вивчення мат. та комп’ютерної графіки. Але насправді це не так, розуміння тривимірної математики та графіки є необхідним якщо ви хочете створювати цікавий та конкурентний продукт. Ці 3 книги, 1, 2, 3 допоможуть Вам наздогнати предмет, їхня спільна риса це великий об’єм матеріалу та легкий старт у читанні, який не потребує складних знань. Крім того, я вважаю, що їх бажано читати саме в такому порядку. Раджу Вам розумітись у таких поняттях як vector, quaternion, dot product, cross product, rendering pipeline, shader, vertex, texture, mesh, global illumination, тому що вони заповнять відсутні пазли у вашій специфіці роботи двигуна Unity.
2)Я прочитав близько 10 книг, які пов’язана з Unity, половину всієї офіційної документації та постійно читаю Unity Blog. На мою думку, документацію варто читати, бо вона логічно структурована і легко подає інформацію. Більше того, вона покриває всі аспекти Unity. Blog Unity описує поточні проблеми та їхнє рішення і звичайно бачення майбутнього напрямку куди буде розвиватись двигун. Крім того, у блозі можна дізнатись деталі різних частин двигуна, які не описані у документації. Щодо книг, то можу порекомендувати тільки дві, перша про оптимізацію, де подано багато деталей чому ця оптимізація важлива та як вона впливає на ігрову сесію , а друга про використання шейдерів у Unity. Інші книги я вважаю не варті виділення часу на них.
3) Мова C# є рясною функціоналами та можливостями мовою, і постійно помічаю, що вона невпинно вдосконалюється. Для її вивчення раджу почати з книги Троелсена, вона розрахована на початківця, об’ємна і з легким стартом, хоча автор не заглиблюється занадто у деталі специфічних тем. Потім раджу звернути увагу на книгу Скіта, особливістю книги є те що вона структурована по версіях мови та .Net платформи. Далі було б добре продовжити вивчення за книгою Ріхтера, на мою думку, він є глибоким дослідником і відчувається його інтерес розібрати на частини найцікавіший інструментарій мови. Ще однією цікавою книгою є твір братів Альбахарі, на відміну від попередніх двох автори не торкаються основ, а розбирають тільки більш складні теми, наприклад у ній детально розписано роботу LINQ. Загалом, ці книги мало повторюють одна одну, і в авторів різні підходи, тому не бійтеся витрачати час, у кожній з них ви знайдете щось нове та цікаве. Якщо вас цікавлять ще глибші знання, то читайте Посібник з програмування на C #. Крім того, раджу розібратися що таке Mono та .Net та особливості компіляції коду.
4)Якщо ви хочете брати участь у проекті який має хоча б кілька ігрових механік, рівнів або навантажений бізнес-логікою з відповідною візуальною частиною, то вам не обійтись без патернів проектування, не кажучи вже про такі базові поняття як OOP та SOLID. Раджу починати з масштабно твору Мейєра, знову ж таки старт легкий і книга покриває багато тем. Легкий для початківця сайт розповідає про патерни, раджу купити його книгу, вона варта своєї ціни. Для глибшого вивчення почитайте книгу Теплякова, тут як і у попередній книзі патерни розбираються у контексті саме C#, крім того, ця книга має окремий самодостатній розділ про принципи SOLID. І звичайно вивчайте першоджерело виведення поняття патернів.
5)Щоб, ефективно використовувати структури даних є недостатнім знати тільки роботу колекцій у C#, тому що це велика та незалежна від мови тема. Кожна колекція має свої плюси та мінуси й щоб знати як підібрати потрібну колекцію ви мусите знати принципи роботи всіх колекцій або хоча б основних. Працюючи з колекцією необхідно розуміти як вона розташована у пам’яті та яка складність операцій над нею по часу та по пам’яті використовуючи Нотацію Ландау. Щодо алгоритмів, то звичайно, що багато з них вже є частиною мови С# та Unity, але коли ви отримуєте не тривіальне завдання вам доводиться будувати свій алгоритм, а для цього необхідно визначити ряд критеріїв яким він має слідувати. І з цього можна вивести, що чим краще ви розбираєтесь з алгоритмами й чим більший маєте досвід їх написання, тим успішніше та швидше ви виконаєте завдання. Для цього рекомендую прочитати книгу «Вступ до алгоритмів» та попрактикуватись на «leetcode» .
Ще, хочу окремо додати володіння десятипальцевим набором та англійською мовою. Без них ви будете повзти як равлик, як осягаючи новий матеріал, так і виконуючи завдання.
І прошу тебе, молодий розробнику, не потрібно падати у відчай від об’єму знань, які необхідно освоїти, тому що це дуже цікавий шлях, хоч і довгий.
Але систематичний підхід приведе тебе до неймовірного результату.
Я буду дуже радий коментарям особливо критиці, але прошу Вас бути джентльменами, 🙂
Дякую за увагу та гарного дня !