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