Як стати кращим 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» .

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

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

Я буду дуже радий коментарям особливо критиці, але прошу Вас бути джентльменами, :)
Дякую за увагу та гарного дня !

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

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному5
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

Мій канал по розробці на Unity українсьоою
www.youtube.com/@drovss/videos

Як стати кращим Unity розробником

Відомо як — перемогти найсильнішого Unity боса!

Як стати кращим Unity розробником

У вас рекомендации, как стать хорошим читателем многочисленных книжек про технологии.

А чтобы стать хорошим кодером — нужно меньше читать и больше кодить. Если уж что и читать, то хороший код.

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

А чтобы стать хорошим кодером — нужно...

Давай ты это расскажешь ПОСЛЕ того, как станешь хорошим кодером.

А чтобы стать хорошим кодером — нужно меньше читать и больше кодить.

лучший рецепт чтобы стать говнокодером.
его применение наблюдаю сколько в программировании.
популярный метод, да.

Если уж что и читать, то хороший код

все равно не поймешь, как он был сделан.
да и надолго чтеца хорошего кода не хватит — хочется ж меньше читать и больше кодить

Як стати кращим Unity розробником

Кто тебе таки вот сказал, что ты с 5 годами опыта — кращий? Варианты ответа: Даннинг, Крюгер

Я маю на увазі кращим порівнючи з самим собою, а не з іншими розробниками)

Потому что ему нужны легенды на DOU. Если вдруг мне понадобятся [подскажи, зачем], сделаю под них эккаунт.

Мой интерес — чтобы мне отвечали то, что думают. Я использую ровно такой образ, чаще всего работает. Кроме людей, которые врут постоянно, испытывая тяжёлый дискомфорт когда этого не делают.

Так зачем мне легенды? Я сюда не сказать прихожу, а послушать. В данном случае я поставил противоречие на провокацию автора высказать то, что он действительно знает лучше других. А не то корпоративное бла-бла-бла, которое он навалял в теме, при этом сам не сделав и половины того, что советует. А то что сделал — совсем не факт, что сделал с пользой.

Почему толк должен быть тебе? Почему истина последней инстанции именно ты?
Хотя на вопрос «зачем» ответить не можешь. Но каждая собака должна это уметь?

Легенды ходят о том кто понятен и близок.
«скажи кто твои герои — и я скажу кто ты»
Кто делает то что ты сам трусишь делать. Лучший ты.

Или о том кто антигерой, ярко воплощает в себе какие-то уродства, пороки, из цирка уродов

Эти категории и сделали легенду.

Профессионализм же его считайте никому не известен в силу узкой специализации.

Так что — медийная легенда, даже если где-то делал доклады и их массово смотрели

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