О навыках
У разработчика игр на Unity 80% навыка — это навыки программиста. Еще 16% — геймдизайнера и оставшиеся 4% занимает художник. Я бы так распределил.
Навыки художника, о которых идёт речь — это базовое владение графическим редактором, в первую очередь. Теоретические знания тоже не помешают — теория цвета, композиция.
Ну и о программировании. Есть 4 направления:
- алгоритмизация;
- структуры данных и алгоритмы (немного тавтология, но что поделать — так их назвали);
- философия программирования SOLID;
- конструирование программ.
Алгоритмизация — это про то, в каком порядке выполняются вещи. Это самое начало любого программирования. В целом, не сложная тема. Кроме стандартных вещей, в Unity к этому добавляются coroutines — сопрограммы, если на русский переводить.
Структуры данных и алгоритмы — это про накопленные человечеством знания в области программирования. Есть определенные проблемы, у которых давно есть методы решения.
SOLID ближе к теоретической науке. Что такое хорошо и что такое плохо, и почему одни вещи — это ок, а другие нет.
Конструирование программ — о том, как писать код, чтобы не выстрелить себе в ногу.
Кроме программирования есть еще и математика с информатикой. В играх нужно двигать вещи. Для этого используется векторная алгебра, матричная алгебра и линейная алгебра. Звучит страшно, но на самом деле все сводится к шести формулам.
Под информатикой я имею ввиду знание о компьютерных программах — про форматы файлов, про системы управления версиями и принципы работы сети, про архивацию и цифровую безопасность.
Кроме этого есть еще так называемые гибкие навыки, или soft skills. Тайм-менеджмент, английский язык, навыки общения. Это не специфичная только для программистов вещь, но достаточно важная.
В современном мире бывает банально дешевле для компании взять человека который что-то не умеет, но готов учиться и хорошо ладит с людьми, чем взять эксперта, который всех раздражает.