Разработка игр почти всегда подразумевает какой-то фреймворк, будто то Unreal Engine, Unity или другой движок. У каждого движка есть свои особенности.
Unreal Engine появился на основе Unreal Tournament. Изначально он использовался, в основном, для шутеров, и сейчас этот движок — самый подходящий для разработки шутеров. Unreal Engine до определенного момента был несколько зарытым, можно сказать, элитным движком, и поэтому его поддержка не была на фантастическом уровне. Но после успеха Fortnight этот движок стал развиваться и на ПК, и на мобилках, подтянулась его производительность и функциональность.
На данный момент Unreal Engine — самый универсальный движок, независимо от проекта.
Unity появился как мобильный движок и свою популярность получил в мобильных играх. До определенного момента Unity был самым поддерживаемым движком в силу того, что очень много людей и компаний использовали его на мобильных играх. Вообще, чем меньше проект, тем больше для него подходит Unity, и чем больше проект, тем больше для него подходит Unreal Engine, — просто в силу технологии, подхода и функционала движка.
CryEngine — движок, который вырос из игры, и лучше всего подходит для игр вроде PUBG. В последнее время CryEngine не очень активно развивается, — в него мало вкладываются, поэтому он отстает от Unity и от Unreal с точки зрения универсальности и функционала.
Входные требования к будущему разработчику игр на Unreal Engine:
- Знание C++, понимание структур данных и алгоритмов. Поскольку Unreal Engine использует C++, то базовое понимание того, как устроен этот язык, и вообще знание алгоритмов — это необходимые условия, чтобы обучить человека специфике конкретно Unreal Engine.
- Опыт коммерческого программирования. Вообще, коммерческое программирование отличается тем, что у сотрудника-программиста всегда есть понимание сроков и задач. Это особенно важно, когда несколько людей работают над одним проектом и есть четкие правила, по которым ведется совместная разработка. Это касается умения работать с системами контроля версий (GitHub, Perforce), системами контроля и учета ведения задач (например, Confluence), и с таск-трекерами (Jira, Redmine).
- Понимание игровых механик и увлеченность играми разных жанров. Если человек не играет в игры и не понимает, как работают те или иные механики, ему будет очень сложно их реализовать. Разработка игр — это не программирование в вакууме, это понимание того, что должно получиться в итоге. Да, всегда есть документация, которую пишут геймдизайнеры, но этого недостаточно.