Добрый вечер. Собственно детская мечта(прошу сильно не критиковать), быть разработчиком в игровой индустрии. Подошел к этому делу с серьезной стороны(пока только мысленно), опираясь не на Constructor'ы вторые, языки программирования с русским синтаксисом, быдлокодинг и пошаговые инструкции как написать своего марио и добаваить его в приложения в вк, а на основательном подходе изучению IT сферы, естественно прежде чем приступить к более конкретному изучение предметов хотелось бы быть более проинформированным в том, где именно IT, а наверно более конкретно программирования ближе соприкасается с разработкой игр, а именно: "Как оно?", и какой инструментарий и знания понадобятся. На слышен, что специализации в этой области на данный момент множество, под каждую задачу подстраивают конкретную должность. Мне одному трудно разобраться, кто же в какой шкуре себя чувствует разработчиком( и им конечно же является). Поэтому мне будет очень интересно и полезно выслушать каждое мнение, совет, опыт по этому вопросу, а конкретно о специализации IT сферы в разработке игр.
Я считаю, а пока только надеюсь, что конкретно определился с целью, и не знаю, рано- поздно, мне недавно исполнилось 18 лет, учусь на 2 курсе техникума на технической специальности, которая никак не связана с IT, знание английского унылое, о программирование имею только четкие представления, но все же решился на отчаянный старт, надеюсь знания и информацию которые я наберусь из разных источников, включая этого, будут отправной точкой в "большой путь", извините, если у кого то зря отнял время.
Почитайте статьи на хабре с тэгом GameDevelopment и Unity3D. Разработка игр далеко не самая легкая сфера в IT, я бы даже сказал наоборот. Но, если это ваша детская мечта - дерзайте! Освойте для начала ЯП или платформу (Unity3D, UDK Engine).
Возможно Вам поможет моя статья: С чего начать разработку игр?
Кстати движков/платформ для создания игр сейчас уже действительно много. В статье многого нет, например CryEngine или фреймворков для разработки под мобильные платформы.
Спасибо за вашу статью, с кратко-сравнительной характеристикой актуальных игровых движков, я даже начал понимать в чем отличие UDK от Unity 3D )
Но я не уверен, что это именно тот путь который я хочу пройти, нет, даже который сделает профессионалом в данной отрасли. Более конкретно- нужны фундаментальные знания, а не гайды по юнити как создать землю, объект, освещение и т.д., нужно знать каким образом эта земля существует в окне редактора, почему имеет определенные, отличительные свойства, как создается освещение, тени которые падают от объекта. Мне нужны основательные знания, как и любому лётчику-асу необходимо очень много знать про самолеты.
Например: для профессионального подхода тебе нужно определенные предметы на уровне, английский и тд., попутно читая книги такого характера как "Совершенный код" Макконнелла и т.д. Что то типа учебного пособие охватывающая программирование в целом там, где оно требуется в разработки игр.
Давайте разложим всё по полочкам. Существует 3 типа разработчиков игр:
1) Ассетотаскатели-скриптовики
В их обязанности входит расставить объекты на карте и написать пару строчек кода на скриптовом языке. Например:"что бы светофор перемигивал раз в 0.5 сек".
Требования: lua, python
2) Программисты геимплея/игровой механики
В их обязанности входит разработка IK-систем, физики, AI, полетов снарядов, сервера, столкновений, анимации и прочего-прочего-прочего.
Требования: C++, ООП, линейная алгебра.
Вот эта страница должна стать вашим домом на пару лет, если вы хотите в эту группу. www.bulletphysics.org/Bullet/phpBB3/viewtopic.php?...
3) Спец-гости
Сюда Можно отнести людей группы Баткины-Капулькины. Людей, которые за неделю ускорят ваш рендер в 5-10 раз. Но это реально супер-оверскилл.
Сферическое собеседование в вакууме (автор Борис Баткин): blog.gamedeff.com/?p=64 Деление здесь практически бинарное – может писать код или не может писать код. (с)
Не стоит недооценивать эту строчку. Кода приходится писать РЕАЛЬНО много. Простой физ-движок сталкивающий 2 кубика и умеющий в простейшие регдолы (без якобианов, сложных сочленений и вехиклов) уровня 2001 года занимает порядка 7-10к строк, если хорошо написан.
Кажется Вы говорите именно о том, о чем я и думал, о том, что я не знаю, но его очень надо, и как ни странно я пришел в недоумение. Если я вас правильно понял под третей группой вы имеете ввиду управляющих продюсеров и директоров, к примеру Говард Тодд (Исполнительный продюсер и игровой директор компании «Bethesda Game Studios»), по фильму "за стеной: разработка skyrim" он наверно явно относится к третей группе?
И как вы правильно поняли по моему рассказу, моя метка это вторая группа :)(надеюсь из которой можно плавно переплыть в третью). Не могли бы вы поделиться со своими знаниями по подробней об этом :)
Между 2 и 3 группой есть рендертим, ваще-то. Вот когда эта тима не справляется, тогда зовут Баткин-консалтинг. Но это далеко не всегда требуется :) Шейдеры, зонирование, собственно рендер... А так да, все правильно.
Да, берите Unity или другой популярный фреймворк для разработки игр и вперёд смотреть уроки, читать книги. Да даже Construct подойдёт для понимания многих игровых механик, которые затем можно будет реализовывать и на других платформах.
Спасибо, согласен, что без понимая игровых механик, игр так таковых разрабатывать не получится, но я не уверен, что человеку который хочет дорасти до разработки игр ААА-класса нужно начинать именно с этого, ну в данном случае я хочу осваивать знания последовательно, по степени основания, подобно возведению здания, сначала прочный фундамент)
@blizzi Прочный фундамент это алгебра, геометрия, линейная алгебра, матрицы, алгоритмы, структуры данных, С++ и OpenGL. Вы точно хотите с этого начинать?
Все это пытаются впихнуть нам в школе, колледже, в вузах для чего понимаешь не скоро, а потом еще задаешься вопросом надо ли оно мне. Тут я точно поставил себе цель, поэтому изучение данных предметов будет не в тягость, а в радость, и конечно же я буду Вам бесконечно благодарен(хотя я уже очень благодарен Вам за ваш интерес к этому вопросу) если вы мне поясните какой предмет к чему:)
Сразу скажу, что в школе и ВУЗах в основном дают только поверхностные знания. Так что только на них не расчитывайте.
Алгебра и геометрия понятно для чего, без этого никуда.
Линейная алгебра и матрицы применяются для низкоуровневой работы с графикой (непосредственно вычисления).
Алгоритмы - предмет изучает разные алгоритмы, необходимые для изучения любому программисту. Структуры данных идут в связке с алгоритмами и описывают различные подходы к организации храниния данных в оперативной памяти (простота/скорость выборки/записи и многое другое). Всё это понадобится для непосредственной работы с вашими данными, будь то массив доступных персонажей или список всех точек какого-либо 3D объекта или пикселей в файле.
С++ фундаментальный язык программирования, OpenGL - фундаментальная библиотека отображения 3D графики.
Раньше это всё было обязательным к изучению, сейчас же появилось очень много разных фреймворков значительно упрощающих жизнь. Большинство ААА проектов используют готовые движки (Unreal, Crysis, Unity и другие).
Теперь понимаю, что мне необходимы наглядные примеры использования всех этих предметов, видимо лучше будет использовать два эти фактора в связке, работать в движке, получать представление о необходимых знаниях и немедленно приступать к их изучению.
Скажите пожалуйста, кроме работы в уже существующих движков, где еще можно получить наглядные представления о геймдеве?
Читать соответсвующую литературу, блоги и смотреть видео. Больше всего полезной информации на английском. Но и хабре есть много интересных статей. Вот недавно была статья про тени на OpenGL ES 3.0, она наглядная.
Начинать с 2d проще чем с 3d. Я советую начать с готовых движков. Unity, corona sdk, construct. Параллельно интенсивно учите английский, читайте книги по изученнию программирования на C++, затем непосредственно по C++ для игр. К этому времини вы должны хорошо изучить готовый движок и уже разбираться в геймдеве.
Чтобы делать хорошие игры, главное это сама игра, а на чём она написана уже не играет большой роли.
Кстати сам я к C++ больше никогда не притронусь, делаю мобильные игры сейчас на Lua и Corona SDK. Если надо будет переходить с него на более мощный язык, то это будет либо Go, либо что-то подобное.
@blizzien.wikipedia.org/wiki/Collision_response#Impulse-B... вот описание модели обработки столкновений между двумя двумерными кубиками. Вы уверены, что с вашими знаниями в матанализе вы это потяните? Ведь вы даже фактически университетский курс не прошли. А это даже не анимация, волосы или рендер.
@Lerg спасибо за ваши советы! Тогда уже начну составлять программу обучения, буду совмещать теоретические знания с работой на фреймворках и программированием на с++, смешивая все литературой и английским языком, спасибо, думаю, что из всего этого что то годное, но должно получится :)
@lookid звучит как вызов :D но не вижу ни чего сложного для человека который подошел к делу с желанием и с здравым смыслом, если что то не пойму, то буду разбираться, я не думаю, что если кто то чего то захочет- не сможет понять и разобрать необходимые для его желания вопросы. Любой профессиональный спортсмен, и даже любители будут разбираться в питание до мелочей, сколько и каких элементов когда принимать, в каком виде, как это будет зависеть от времени тренировок и тд, главное, что с целью!) Правда звучит банально)
Я специализируюсь на браузерных играх. Небольшие проекты занимают пару десятков тысяч строк кода. Затраты основном на интерфейсы, безопасность и оптимизацию.
1) Пользователи не разобравшись в игре ее покинут.
2) Баги и дыры -- это удар по гемплею.
3) А тут все просто, не умеешь правильно работать с индексами и придумать хорошую структуру базы данных заплатишь за оборудование в десятки раз больше.
А бывает и так потратили круглую сумму в проект и получилось потрясающая и очень дорогостоящая неудача. А все из за ошибок планирования, ошибки определения целевой аудитории и тп.
Для начала определитесь, чем именно хотите заниматься. И сможете ли все это.
Я лично не специалист по геймдеву, но насколько я знаю, нужно ботать Unity (книг много по нему, но на английском) и потом искать вакансии по этому ключевому слову. А английский нужно прокачивать, без него никак. Тут можно почитать, как это примерно делается. Это на самом деле совсем несложно.
UPD: тут нужно также отметить, что геймдев бывает разным. Серверсайд разработчики везде нужны к примеру, и в геймдеве и не в геймдеве. Если это браузерные игры, то нужно на веб ориентироваться. Если мобильные, то под мобильную разработку.