GameDev — что нужно знать и какую технологию выбрать?
Добрый день, знаю вопрос избитый и тема популярная, я честно пытался собрать всю информацию, но все равно остались вопросы и возникает еще большая путаница. Суть в том, что хочется попробовать себя в разработке игр.
О себе(можно пропустить):
Я знаю и читал, что там тяжело, что игры разные, и куча рутины(а где ее нет?). Но я люблю игры и люблю разные игры - от классики(начал играть 1998) до новых, от крупных ММО до три в ряд на своем телефоне, мне нравится сам процесс игры и так же нравится замечать места где добавлены фишки, какие-то приемы для продления интереса, или наоборот слишком затянутые места и ошибки баланса - все это приносит мне удовольствие.
Сам я .NET разработчик, опыт в разработке около 4 лет, основной язык С#, но пришлось пописать и на JS и на PHP, немного на Objective-C, легко понимаю новые технологии, умею сесть и начать писать код -до конца - до рабочего варианта.
Пару месяцев назад решил - нужно что-то делать и изучать для gamedev'a, и встал вопрос - с чего начать и что лучше выбрать, и тут я запутался, постоянно мечусь между несколькими и технологиями и навыками, не знаю на чем лучше сосредоточить внимание.
Т.е. общие навыки - вектора и матрицы, с чем-то не работал с института, но открывая практическое применение вроде бы все понятно, вот недавно по работе пришлось решать нетривиальную задачу с векторами и окружностями - с учебником быстро разобрался, знания остались -достаточно освежить.
Между чем сомневаюсь:
Unity3D - прекрасно, видишь результат, многое понятно интуитивно, C# для меня родной, очень улыбало смотря туториалы, как люди придумывают свой синглтон.
С++ и OpenGL - тут для меня вхождение будет дольше, с++ меня не пугает - знаю ООП, работу с памятью и тп, но я понимаю, что до уровня профессионала далеко, но работать на низком уровне тоже приятно.
Так же очень понравился cocos2D - пока успел поиграть с ним совсем немного, очень позитивное впечатление.
Вот эти несколько технологий и по какому пути пойти я не знаю:
Unity - всем хорош, но там я упускаю фундаментальные знания по графике и тп., так же наверняка большая разница между реальным проектом и учебным, а везде требуется опыт и представление о разработки игр(например только на днях узнал, что можно писать утилиты для самой среды и что это очень востребовано).
OpenGL - это будет дольше, но не понятно где тот предел после которого можно будет пробовать искать работу, опять везде стронг скил 5+ лет.
Cocos2D - почти нет вакансий.
Сейчас в реализации и планах сделать пару простых игр(сапер, змейка, три в ряд...), для Unity3D уже есть ряд наработок, думал попробовать их потом в cocos2D и потом на OpenGL.
Что лучше выбрать и придерживаться для трудоустройства? Может быть отказаться от чего-то например от Unity или OpenGL, чтоб не распылятся и больше углубляться в тему?
P.S. Как-то длинно получилось, тем кто дочитал спасибо, в общем хочется в разработку игр, что выбрать первым приоритетом, а потом остальное подтянуть? Может у кого-то есть аналогичный опыт перехода или кто-то работает в студиях и может сказать что учи "то-то".
Если вы любите игры - это не означает что вам понравится их делать, скорее наоборот, начав работать в геймдеве вы их перестанете любить.
Но, это так, к слову. Вам для начала нужно определиться с тем в какой области вы хотите работать: мобильные игры, десктопные или социальные. Как определитесь ищите вакансии по направлению и смотрите требования к кандидатам.
А начать, как мне кажется, можно с Unity3D (движок хороший и востребован сейчас ), тем более, что С# для вас родной. Ну и познакомьтесь с шейдрами, лишним точно не будет.
А вообще подумайте 10 (а лучше 20) раз нужно ли оно вам. Область сложная и трудоустроитья не так уж просто.
Спасибо, подумал, но если сейчас не попробовать, потом будет еще страшнее и сложнее, скилл/должность/доход растет, и менять что-то становится все сложнее. Да Unity3D - наверно оптимальный вариант, просто есть опасения пропустить что-то фундаментальное и нужное.