С чего начать изучать "Игрострой" и так ли это страшно.

Всем доброго времени суток! Представляю вам первый из серии пост, целью которого является популяризация мира IT.

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

"Я не даю полноценную учебную программу, я даю советы, как лучше начать и по каким примерно этапам двигаться, чтобы было проще. Следовать моим советам или нет, личное дело прочитавшего человека. У каждого с опытом складывается своя точка зрения, поэтому господа специалисты, когда будете писать гневный комментарий, то аргументируйте его и дайте совет, чтобы молодые ребята не блуждали в ужасе ещё на этапе обучения от того, какое у нас дружелюбное сообщество."

Спасибо, что прочитали и начнём!

С чего начать изучать "Игрострой" и так ли это страшно. Программирование, Игрострой, IT, Gamedev, Обучение, Книги, Текст, Длиннопост

Пришёл этот светлый день! Вы решились стать программистом. Долго думали, взвешивали все за и против, кучу раз себя переспросили, но решились. Следующим этапов является выбор специализации в которой вы будете развиваться. Благо сфер у нас много, есть где разгуляться. Сегодня подробно остановимся на разработке игр.


Маленькое отступление: чтобы в комментариях не начали снова разводить демогогию, что начинать нужно с математики, вот вам ссылка на сакральный смысл профессии и очередное упоминание, как важна математика, читаем, проникаемся, не мешаем остальным. Гайдлайнов по программе обучения на раннем этапе роста прогаммиста множество, если будут желающие, напишу очередной велосипед пост на эту тему.

С чего начать изучать "Игрострой" и так ли это страшно. Программирование, Игрострой, IT, Gamedev, Обучение, Книги, Текст, Длиннопост

Давайте сразу определимся, что сегодня мы разбираем геймдев с точки зрения программирования, мы не рассматриваем дизайн и прочее, мы разберёмся с этой стороной игростроя.


Личные качества: тут вот и запарвается большая часть молодых геймгениев. Вам нужно обладать настойчивостью, усидчивостью, открытостью к новым знаниям, хорошим чувством вкуса и думаю богатой фантазией. Аккуратность, терпение, понимание, восприятие тоже являются неотъемлимыми качествами программиста геймстроя.


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


Ну что же, будем считать, что с языком у вас всё хорошо, вы его знали/выучили, либо забили и дальше будет тяжко. Теперь продолжим с базовых знаний:

1) математика

2) навыки программирования

3) библиотеки

4) компьютерная графика

5) тестирование


Теперь каждый пункт отдельно с объснениями, ссылками и советами.


Математика

Начнём со страшных вещей, с линейной алгебры. Стартуем отсюда. А тут есть основы линейной алгебры в pdf. Хорошо бы знать и понимать школьный курс геометрии и алгебры, если всё совсем плохо, то вернитесь к нему и разберитесь. Во время разработки будет встречаться множество формул, не всегда сложных, которые зависят от текущего кадра в игре. Чтобы было более понятно, рассмотрим на примере простых движений, подчиняющихся законам физики в Unity3D. Взять простейший 2D платформер, в котором два объекта будут соудоряться, встроенная в движок физика нам тут не поможет и придётся писать собственную формулу. В самом начале вы не встретите особых затруднений с математикой, они возникнут в дальньйшем, при работе с крупными проектами, в которых сложная физика движений, что приводит к более сложной математике.


Навыки программирования

Желательно начать с книг: Программирование трёхмерных игр для Windows, Coding4Fun, Фрэнка Луна. Далее разберитесь с Unity3D. Эту платформу не стоит списывать со счетов и она очень помогает в раскрытие творческого потенциала, так как не требует на прям досканального разбора и можно довольно быстро вникнуть.

Далее советую копать в сторону C++, а конкретно:

- Программирование. Принципы и практика использования C++

- Язык программирования С++. Лекции и упражнения

- Язык программирования C++. Базовый курс

Советую читать в той последовательности, которая дана в списке. С++ не является единственным языком для программирования в играх, но лучше пишите на нём, много понятного материалы, хороие переводы, хороший язык, богатый спектр возможностей.

Так же стоит уделить внимание разору ООП в С++: Объектно-ориентированное программирование в С++


Библиотеки

Знать их нужно, очень нужно. DirectX и OpenGL. Шейдеры- HLSL, GLSL. Плюсом будет знать некоторые популярные движки, типа Unity3d, cocos2d-x, Unreal Engine, поэтому учить их всё равно придётся. Причём знать придётся не на уровне, я в курсе, что они есть, а именно уметь под них программировать, понимать, как всё это работает и зачем это нужно. Так же хочу отметить, что нужно будет знать API к разным ОС, как например WinAPI для Windows. Вы должны понимать, как работает мультипоточность, поэтому загляните сюда. Знать основные алгоритмы - поиск пути, генерация ландшафта и тому подобное. И нужно будет понять и знать более специфичные библиотеки например такие, как Steamworks SDK. И понимать основные паттерны и архитектуру приложений.


Компьютерная графика

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


Тестирование

Думаю с этим пунктов особых объяснений не нужно. Но всё же немного поговорим на эту тему. Для начал берём книги, эту и эту.Тут не всё так срашно, как кажется. Всё это касается тестирования кода. Не путать с тестированием самой игры, тут нужно любить и уметь играть, вот например вакансия с требованиями к тестировщику именно самих игр, а не кода, по ней сразу всё поймёте.

С чего начать изучать "Игрострой" и так ли это страшно. Программирование, Игрострой, IT, Gamedev, Обучение, Книги, Текст, Длиннопост

Несколько советов

Игровой рынок стремительно развивается, места под солнца хватит всем. Чтобы скорее реализовать себя и набраться опыта я бы хотел посоветовать вам уже на ранних этапах обучения, когда вы сможете делать хоть что-то вминяемое, постучаться в какой-нибудь "игродельный" opensource проект. Обычно такие проекты всегда рады новым людям, особенно находящимся на этапе обучения, там вы сможете набраться опыта, завести новые знакомства в сфере игр, получить много советов и рекомендаций. Реализовывайте любую свою, даже самую бредовую идею, просто посмотрите на стим в разделе инди, гарантирую, любая ваша "наркоманская" идея станет гениально адеватной, по сравнению с играми там) Просто посмотрите видео по этой ссылке. Никогда не переставайте учить что-то новое. Делайте то, что вам нравится и тогда из этого будет толк.


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


Специально для Pikabu, vishcode!

Вы смотрите срез комментариев. Показать все
DELETED
Автор поста оценил этот комментарий
Чет так мало комментов и плюсов. Жаль) именно геймдев у нас в стране не популярен. Игры популярны, а их разработка к сожалению нет. Поэтому так мало годноты
раскрыть ветку (5)
1
Автор поста оценил этот комментарий

Если ты программируешь - ты находишь себе работу.
Если ты моделируешь \ рисуешь - ты находишь себе работу.
Если ты начинаешь делать игру - ты не работаешь и, соответственно, не можешь оплачивать счёт за квартиру, ком.услуги, своё проживание, блять!

Понимаешь? Твоему желудку похуй, что ты делаешь игру. Он жрать хочет сейчас, а не через год - два, когда игра ,возможно(!), окупится.

Итог - делать игры без команды, идеи и стартового бюджета - нет смысла. Выйдет хуйня и будет жалко потраченного времени.

Если нет идеи - не будет игры.
Если нет команды - игра будет унылым говном.
Если нет стартового бюджета - не будет команды, а игра выйдет(если выйдет, конечно) заранее устаревшей потому, что не возможно просто взять и захуячить за пару вечеров ахуительную игру.

раскрыть ветку (3)
DELETED
Автор поста оценил этот комментарий

ТЫ абсолютно прав. Я согласен с тобой) Но с условием, если говорить о более менее серьезных проектах. К примеру...
Условно разобьем все игры на три части. Большие, средние, малые. Большие делают крупные и не очень компании, вкладываются и т.д. Средние делают возможно достаточно солидные инди студии. И малые, которые делают простой инди-люд. (флаппи берд допустим)

И вот когда тот инди-люд замахивается даже на средний класс игр и выходит говно. Не хватает времени, денег, воли, команды. Дак вот смысл моих слов в том, чтобы оставаться в этом малом классе игр тем, кто делает простые казуалки на мобилки. (я специально игнорирую раскрутку) Ведь я точно знаю, что такие аркады и казуалки делаются не сложно. Вечерами. О ПК платформе стоит вообще забыть

Автор поста оценил этот комментарий

"захуячить за пару вечеров ахуительную игру" - за пару вечеров? Тетрис что ли?

раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ты вообще читал то, что я написал?

Автор поста оценил этот комментарий
Может недостаточно понятно написано.
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку