Какой базовый набор навыков должен иметь профессиональный программист игр? [закрыто]

11

У меня очень общий вопрос, который меня беспокоит, но сначала я хочу добавить некоторые детали. Я основной Java-программист. Я самостоятельно создал несколько небольших игр в Java для удовольствия. Теперь, чем больше я смотрю на профессиональную разработку игр, тем больше запутываюсь. Это связано с тем, что всякий раз, когда я гуглю по темам разработки игр или посещаю форумы и т. Д., Я сталкиваюсь с разными предложениями.

Некоторые скажут, что C ++ это хорошо, в то время как некоторые говорят, JAVA может быть лучше, в то время как все еще другие будут говорить какой-либо другой язык является Ур- язык, как Python, Lua, UnrealScript и т.д. Кроме того, предполагается, что один должен иметь знания о игровые движки, такие как Unreal, Torque, Blender, Panda и т. д., а также знание OpenGL, AI, Collision Detection. Я даже создал игру, используя Android SDK.

Я хочу спросить:

  • Какой базовый набор навыков должен иметь профессиональный программист игр? Является ли это какой-либо один язык программирования + 1 язык сценариев + 1 Игра знание двигателя + OpenGL? (Уф !!)
  • Если я хочу войти в игровую индустрию в качестве программиста игрового процесса или AI-программиста, могу ли я войти в нее с моими текущими навыками и портфолио (как указано выше)?
  • Достаточно ли изучения одного языка программирования для разработки игр?

Любое руководство будет полезно.

GamDroid
источник

Ответы:

6
  1. Вы должны быть опытным и компетентным по крайней мере с одним языком программирования. Это поможет вам подобрать другие языки более легко. Тип работы, на которую вы претендуете, зависит от того, какой язык вы, вероятно, должны знать заранее. Большинство изданий Triple A, выпущенных на ПК и консоли, скорее всего, будут разработаны на C ++. С другой стороны, мобильные приложения и игры, скорее всего, будут использовать Java (Google Android и другие телефоны) или Objective-C (iPhone). Если вы посмотрите на списки вакансий для разработчиков программного обеспечения на веб-сайтах разработчиков, в них обычно будет указано, какой языковой опыт вам необходим. Например, «Опытный и знающий в C ++» или «Опыт работы с C ++, по крайней мере, двух лет.» Изучение языка сценариев не повредит вам. Это только принесет вам пользу. Обучение всегда выгоды, и никогда не причиняет боль. Вам не нужно иметь практические знания о каком-либо игровом движке, но если вы обращаетесь в компанию, которая использует этот конкретный движок, это, вероятно, поможет вам возобновить работу. Если вы являетесь экспертом по движку Source, но вы обращаетесь к программному обеспечению id и ничего не знаете о механизмах id tech, это не очень полезно (но всегда полезно изучение причин).

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

  3. Я думаю, что знание одного языка и умение пользоваться им умело и компетентно - это лучше, чем знание 5 языков и умение их использовать.

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

ShrimpCrackers
источник
7
Я бы дополнил пункт 1 «знанием одного языка программирования , использующего указатели ». Указатели являются таким фундаментальным требованием для понимания того, что происходит с языком, который никогда не имел опыта работы с ними, может быть огромным недостатком при переходе на язык, который нуждается в них. C ++ чрезвычайно распространен для не-веб-игр, так что вы можете начать там.
Тетрад
@ShrimpCrackers Вы знаете, что с помощью редактора вы можете получить настоящие «Точки пули», верно? ;)
Бен
Вам следует показать, что вы знаете, по крайней мере, язык программирования, который не широко используется в промышленности, но имеет некоторую интересную особенность: это говорит о том, что вы учитесь из-за интереса к возможностям, что вы полиглот, который понимает разные философии / подходы и может (надеюсь) ) объединить лучшее из обоих миров.
FxIII
2

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

  • Умение хорошо работать вместе в командной атмосфере. Создание игр требует невероятного количества людей, просто чтение титров в некоторых играх ААА в настоящее время занимает более 10 минут, если вы не можете хорошо работать с людьми, и ваша цель - работать с другими людьми, чтобы сделать отличную игру, тогда я боюсь, что это не та индустрия. Это один из тех мягких навыков, который обычно развивается со временем, работая над проектами с другими людьми.
  • Найдите то, что вам нравится делать. Это своего рода открытый подход, но узнайте, что вам нравится в разработке игр и какие навыки вам нужны для этого. Я знаю, что это своего рода ответ, который вы ищете, но я мог бы воспользоваться всеми навыками, которые вам могут понадобиться, чтобы стать разработчиком движка, разработчиком графики или разработчиком игрового процесса, но вы можете найти довольно много информации в Интернете. Ваши навыки должны будут тесно увязываться с тем, что вас интересует. Пример: не беспокойтесь о том, что нужно знать о преимуществах OpenGL и DirectX, если вы действительно заинтересованы в разработке на стороне сервера и наоборот.
  • Быть опытным в языке низкого уровня С учетом вышесказанного, я согласен с другими постерами, что язык низкого уровня - это хорошая идея для изучения. Я знаю, когда я перешел с C # на C ++, я многое узнал о том, как работает магия C #, это знание, которое дает вам хорошее понимание того, как эффективно общаться с компьютером независимо от языка.
  • Понимать архитектуру компьютера. Я не имею в виду, что вам нужно иметь степень CE или EE, чтобы по-настоящему понять каждую часть архитектуры компьютера, но знать основы работы памяти, процессора и графического процессора. Независимо от области разработки игр, в которую вы войдете, будет полезно, по крайней мере, понять, как они работают. Если вы хотите перейти к графическому программированию или программированию движка, вам нужно будет понять еще больше в этой области.
Кайл С
источник
5
вы действительно чувствуете себя старым, когда люди называют C ++ языком низкого уровня
dreta
@dreta Я не такой уж старый, и я не считаю его языком низкого уровня. Вероятно, это связано с тем, что C ++ был первым языком, который я использовал.
Пол Манта
2

Многое зависит от ваших карьерных целей. Если все, что вам нужно, - это «создавать игры», прежде чем делать необходимые 5,5 лет, выжигать и уходить, тогда, я думаю, вы просто посмотрите на вакансии начального уровня и посмотрите, чего они хотят, изучите и примените. Просто. (Но, если ваш вопрос на самом деле сводится к тому, «что минимальное усилие мне нужно поставить, чтобы получить работу?», То ответ «, если вы поставите в минимальные усилия, вы собираетесь получить минимальную работу! «)

Но в долгосрочной перспективе, я не думаю, что нужно много знать о каком-то количестве языков или изучать конкретный. Языки меняются - десять лет назад никто не использовал Objective-C или XNA или C # или AS3, и через десять лет будьте уверены, что любой язык, который вы изучаете сегодня, в любом случае устареет.

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

Другая половина этого состоит в том, чтобы понять основные понятия программирования и информатики. Понимать управление памятью, указатели, рекурсию и так далее. Если вы понимаете концепции, вы можете применять их практически на любом языке.

Если вы хотите повысить свою конкурентоспособность, изучите специальность программирования, относящуюся к играм, независимо от того, что вас интересует ... ИИ, базы данных, сети, инструменты, что угодно.

Ян Шрайбер
источник
1

Есть еще один очень важный навык, который, кажется, немного упускается из виду. Вы должны знать, как вписаться и работой с командой людей, переходя от других разработчиков игры, дизайнеров и менеджеров проектов и прочего. Это не техническое мастерство, но это все еще очень важно, так как вы можете быть лучшим DEV в доме, и если вы не можете получить с людьми, делает большие игры будут проблемой!

Кроме того, как ShrimpCrackers kowing один язык хорошо лучше, чем примерно зная, 5 языков, и понимание того, что происходит под капотом, что один язык вы GOOT на еще лучше, так как для игр, вы должны знать, как получить максимальную производительность из языка.

И последнее, но не в последнюю очередь, зная немного об оборудовании, GPU, в частности, не повредит!

dotminic
источник
0

Для программирования социальных игр нужны только основные навыки.

  1. Скрипт действия программы (вы можете использовать среду elipse и svn), он используется для внешнего интерфейса игры (веб-страница)

  2. Программа Java (которая также может быть сделана при затмении с использованием SVN), это используется для действий на стороне сервера, чтобы взять из запросов веб-страницы.

Мариана Софер
источник