Учусь в школе, 10 класс, своей профессией выбрал программирование, в будущем очень хочу заняться игростроем. Из языков знаю Pascal и Python, но пользуюсь только пайтоном. Ничего выдающегося не написал, несколько простых 2d игрушек (Змейка, Арканоид, ...) на PyGame, пару скриптов и граббер для личных целей. Btw, как я уже сказал - хочу заняться геймдевом. От вас, уважаемые хабравчане, хотелось бы услышать ответы на следующие вопросы:
1. Какой язык выбрать первым (основным в будущем)? Критерии - хорошая документация и кроссплатформенность. Довольно долгий гуглёж поставил перед выбором - C++/C#/Java. Лично я склоняюсь к C#, но пугает его анальное рабство у Microsoft. Mono мне кажется костылём, поправьте если я не прав. Меньше всего хотелось бы изучать Java. Причину не знаю, неприязнь какая-то, просто не нравится. На счет C++ - под критерии он подходит отлично, но мне кажется изучение затянется на слишком долгий срок, меня это пугает. Прошу, укажите на преимущества какого-либо из языков, или предложите свои варианты (желательно аргументируя).
2. Какую литературу почитать? Я понимаю что для создания хороших игр нужна хорошая математическая подготовка, и если с Алгеброй у меня все отлично, то с Геометрией и Физикой не всё так гладко. Наверняка есть специализированная литература где описаны именно те аспекты математики которые нужны в геймдеве. Плюс, возможно литература по проектированию игр, их архитектура и т.п. Естественно, если вы ответили на первый вопрос, желательно указать хорошие книги по языку.
P.S От книжек по программированию (именно программированию, написанию кода, а не языках) я бы тоже не отказался.
Я не профессионал в игроделе, более того, я тоже только собираюсь влиться в игродел, правда, имею опыт в "обычном программировании" (Objective-C - программирование под OS X/iOS), но вставлю свои "5 копеек" по теме:
1) С#
Да, корни в Microsoft, да, Mono это что-то вроде костыля... но на данный момент мы имеем отличный язык с кросс-платформенными решениями любого уровня сложности.
2) Книги. Из концептуального и свежего:
— Designing Games - от с чего начать до работы в команде.
Из практики, возьмем, к примеру, Unity3D (даю его, так как сам начинаю в нем работать): Beginning 3D Game Development with Unity 4. Больше на примере других языков смотреть здесь. Ахтунг - везде английский! И без него никуда.
Спасибо! Техническую литературу на английском, признаться, еще не пробовал читать, но надеюсь проблем не возникнет. А по поводу Unity - наверно еще рановато для меня, да и C# нужно выучить что бы там работать.
Обращайся. На самом деле, я рекомендую все таки вот просто взять и начать с Unity прямо сейчас, благодаря видео-урокам выйти на азы разработки едва ли сложнее, чем выучить Word или Photoshop. Самое главное, что во время обучения возникнут конкретные вопросы, на которые проще найти ответы, чем такие концептуальные, как "с чего вообще начать" :-)
Согласен, в процессе создания игр и язык учить...
То есть все сразу знать не обязательно.
Только поправлю, Unity3D. Так будет правильней гуглиться, и сразу ссылку дам unity3d.com/
1. C++ & Lua/Python/другой скриптовый язык. C++ для основы игры, второй язык для написанря скриптов, например, поведения персонажей. Кстати, связку с Lua если я не ошибаюсь использует Valve.
2. C# & JavaScript & Boo. Потому что это языки Unity.
3. Продолжать изучать Python и PyGame, если тебе понравился питон. Потому то на самом деле питон — классный язык.
4. Сейчас становится модным делать web-приложения (в том числе и игры) на HTML, CSS и JS. С помощью таких инструментов, как nod-webkit и Adobe AIR эти приложения можно переносить на десктоп. Если пойдёшь по этому пути, обрати внимание на библиотеку WebGL — она позволяет создавать 3D-приложения прямо в браузере. А в качестве языка для сервернгой асти можно использовать тот же Python (если будешь онлайн-игр делать)
Для того что бы делать игры в команде всё-равно ведь нужны знания. Не могу же я прийти в команду без знания языков, с плохим пониманием архитектуры и непониманием расчетов.
Советую начать с конструкторов. Помимо уже рекомендованного юнити, есть множество простых и достаточно мощных (для начинающего) инструментов. Программирования и там вполне достаточно, чтобы "с нуля" понять общие принципы. Кроме того, результат будет виден почти сразу. Всё таки, "обычное" программирование демонтивирует тем, что играбельное нечто у новичка на нём появляется не скоро. От себя могу посоветовать Stencyl. Он архипростой и, что немаловажно, делает игры в формате флэш. Которые окружающие смогут оценить без всяких танцев с JVM и библиотеками.