Что является хорошей стартовой платформой для подросткового программиста игр? [закрыто]

32

Мой сын (15 лет) решил, что хочет продолжить карьеру программиста игр. Я сказал, что он должен начать сейчас с простой игры. У него еще нет опыта программирования, но я программист (бизнес-приложения, а не игры), поэтому я могу научить его программированию, но с чего бы ему начать? Изначально я ищу что-то, что может дать быстрые результаты, чтобы поддержать его энтузиазм.

Что ты предлагаешь?

gkrogers
источник
13
Закрыто? Вы должно быть шутите! Я задал этот вопрос годом ранее, у него было по меньшей мере 19 голосов, у его ответов проголосовало не менее 86 голосов, 5 человек отметили его как фаворита. И ответы включают в себя факты, ссылки или конкретные знания. Наконец, это было невероятно полезно для меня, и, я бы сказал, других людей. Как мне обжаловать это решение?
gkrogers
1
Вы можете сделать сообщение об этом на мета, если вы действительно хотите. meta.gamedev.stackexchange.com
Тетрадь

Ответы:

30

XNA - хорошее решение для довольно уверенного программиста. Это будет хорошей целью, к которой нужно стремиться в будущем.

Комплект разработчика Unreal является способ , чтобы получить результаты гораздо более быстро и легко, и может быть хорошим местом для начала. Комментарии показали, что UDK на самом деле довольно плохая альтернатива, поэтому я не могу рекомендовать это.

Unity - это альтернатива, она будет работать на телефонах, чего UDK не может сделать (насколько я знаю). Так что, если он занимается программированием игр для телефонов, возможно, единство будет лучше?

Мартин
источник
4
Я согласен с этим. Unity является альтернативой UDK, хотя я думаю, что это немного сложнее понять. Посмотрите, сможете ли вы заставить его связываться с UnrealScript (языком сценариев Unreal Development Kit). XNA определенно является первым настоящим языком программирования игр, который ему следует использовать; это самый простой (условно говоря, не для начинающих), и я люблю его для создания прототипов, потому что вы можете довольно быстро начать рисовать вещи на экране.
Ricket
2
+1 за предложение XNA. Если он старается хорошо его изучить и у него есть хорошие идеи, он может легко заработать на продаже игр для Zune / WP7 / XBOX 360.
2
Unity работает на iPhone и в браузере, так что это хороший способ распространения игры для людей, желающих протестировать ее, и привыкнуть к раннему разгоранию
Chris S
4
Избегайте УДК. Это может быть очень мощным, но это также огромная боль. В нем полно «недочетов» и недокументированных ограничений.
Питер Олстед
4
Мне тоже 15, выучил сначала паскаль в 10, потом С, потом С ++. Пытался программировать некоторые игры на C ++ и allegro на 12+ - без особого успеха, я мог сделать много вещей, но не мог придумать, как построить целую игру. Это поддержало меня. С XNA все стало намного проще, а также простая обработка ошибок исключений C #, показанных во время отладки, очень помогает вам понять, где вы делаете что-то не так. Конечно, есть и другие языки, но я думаю, что Visual C # имеет лучший инструмент отладки.
Густаво Масиэль
20

Мне тоже 15, так что, думаю, это может помочь? :П

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

И есть графические оболочки, такие как Pygame и Pyglet поверх SDL / OpenGL.

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

Коммунистическая утка
источник
9
Python и Pygame были глотком свежего воздуха для меня после написания игр на Си в течение многих лет. Я подумал, что смогу сделать то же самое примерно в 10% случаев в Python из-за аспекта более высокого уровня для всего.
дэш-том-бэнг
Я знаю, я чувствую то же самое (и я занимался C ++ в течение года).
Коммунистическая утка
+1. Должен сказать, что, хотя я немного знаком с Python, это моя первая рекомендация для начинающих программистов. Теперь нам просто нужны питон-роботы! Также хорошие предложения, например, для палача. =)
Леандер
Чувак, ты должен изучать язык .net (мне не очень нравится C #, F #, с vb.net все в порядке. Boo не поддерживает визуальные студии :(). Языки менее подвержены ошибкам, чем C ++, и у тебя возникают исключения, когда ты что-то делаешь неправильно (очень хорошая вещь. C ++ должен делать больше этого). И вы можете узнать, как использовать стек вызовов, наблюдать переменные, точки останова (я предполагаю, что точки останова работают в Python IDE?), и вы сможете быстро отлаживать Что здорово, когда вы пишете нестабильный код новичка
13

Немного неортодоксальный ответ здесь:

Starcraft II Galaxy Editor.

Вы можете сделать практически любую игру в Starcraft 2.

Он также учит большинство конструкций программирования как циклы и операторы if в GUI-ориентированном виде.

Как только он будет уверен в основах, вы можете использовать его в сценарии.

Если он хорош в этом и находит это интересным, ему понравится правильное программирование игры.

гвоздильщик
источник
3
Я собирался предложить Warcraft III. Начало работы на простом языке сценариев - действительно хороший способ. И в Warcraft III, и в Starcraft II есть графический интерфейс, который вы можете использовать, чтобы чувствовать себя комфортно, и функция для просмотра кода в виде необработанного сценария, чтобы увидеть внутреннюю работу.
Уильям Маригер
2
Правильный путь . Начинать с ЛЮБОГО редактора уровней - это лучший способ. Он может пропустить все строительные леса и трудности и получить право на интересную часть создания сценария и разработки уровня.
Бобобобо
Безусловно, один из лучших ответов, которые я когда-либо видел на этот тип вопросов, я начал делать игру первым, когда у меня было очень мало MS PowerPoint с помощью гиперссылок и я играл в игру под названием «клуб роботов»; который в своем игровом процессе учит вас многим основам программированияiantbomb.com/ the-robot-club/3030-29776
Джим Джонс
10

Я бы грубо разделил инструменты разработки игр на три большие категории:

  1. Легко учиться и использовать, но ограничено. Game Maker, Game Salad, RPG Maker, Adventure Game Studio - все они попадают в эту категорию.
  2. Мощный, но с крутой кривой обучения. C ++ и другие "хардкорные" языки программирования подходят здесь.
  3. Промежуточные языки, обычно языки сценариев, такие как Lua, Python и ActionScript, которые разделяют разницу, требуя от вас написания некоторого кода, но заботясь о более неясных деталях, таких как управление памятью.

Людям, не имеющим опыта программирования, я обычно советую начинать с первой категории, просто чтобы начать что-то делать. Когда они чувствуют себя комфортно с данным авторским инструментом, но действительно чувствуют, что ограничения перевешивают преимущества, пришло время изучить что-то в следующей категории.

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

Я знаю, что это несколько подействует на меня, но когда я рос, мне действительно нравились P-Robots . Есть действительно простая цель (побить других роботов), простой API и короткий промежуток времени между изменениями в коде и просмотром результатов. Он переходит к искусственному интеллекту, шаблонам проектирования и даже более крупной структуре кода (некоторые из этих роботов могут стать довольно большими - а как насчет совместного использования кода между роботами?). Если вы можете найти что-то похожее, но более новое, это был бы хороший способ получить часть «начинающего программирования». Предложения:

Как только это будет сделано, подумайте о том, чтобы выбрать действительно простой 2D скролл-шутер, платформер или аналогичную игру в «аркадном стиле» - вы можете использовать SDL или XNA или любую другую, наиболее знакомую вам. Даже получить клон понга и запустить его не совсем тривиально. Это дает вам небольшое эхо о том, что значит строить что-то «с нуля».

После этого, изучите: мод для существующей 3d-игры (новый объект, или бот, или что-то), чтобы немного понять более крупные движки.

Ключи, из того, что я видел, выглядят так:

  • быстрая итерация: возможность быстро увидеть результаты
  • прототипы: множество небольших экспериментов, чтобы получить опыт и уверенность в себе (хорошо, как бы мы сделали мраморную игру? как насчет космических захватчиков? и т. д.)
  • исследование: научиться любить смотреть на то, как строятся игры других людей, настраивать их и т. д.
Leander
источник
2
+1 для мозговых штурмов, но я бы использовал ROBOCODE ( robocode.sourceforge.net ) вместо P-роботов.
Каллум Роджерс
@Callum: блестящий, обновит ответ =)
leander
Я бы использовал LegoMindstorms с NXC
Джо Человек
6

Мой совет - делать веб-игры. Зачем? Ну, во-первых, JavaScript - это прекрасный язык, который научит его всем основным понятиям программирования, и вы действительно сможете сделать из него отличную, компетентную и кроссплатформенную игру. Это также даст ему право на гораздо большее, чем просто создание игр ... Если вы по какой-то причине не хотите, чтобы ваш сын занимался веб-разработкой, тогда я предлагаю использовать Python с модулем под названием PyGame. У меня также есть опыт с этим, и я потрясающий. Я не советую начинать с C / C ++, это то, что я сделал, и это ужасно и может лишить его мотивации для программирования в целом.

С другой стороны, вы, вероятно, потрясающий отец, поздравляю!

jcora
источник
1
Хорошие предложения. Тем не менее, я начал с C (не то, чтобы тогда были реальные альтернативы), и это действительно было не так больно; конечно, это не повод использовать его сейчас, когда есть языки более высокого уровня.
о0 '.
1
Благодарность! Кроме того, я не начинал с игр, и моя точка зрения заключалась в том, что после изучения языка более высокого уровня он лучше поймет общую концепцию программирования и его мотивация не будет исчерпана. И, конечно , - я exagurating немного там;)
jcora
1
В этом возрасте мотивация позволяла мне легко делиться своими творениями с друзьями. Веб-игры более распространены. Вы публикуете свой URL на Facebook и просите своих друзей попробовать его. Actionscript / Flash или Javascript / HTML5 - это, вероятно, ваши лучшие ставки для возможности простого обмена, с Java или Unity за секунду.
amitp
5

Mindstorms Roboter действительно крутые. У нас есть несколько NXT в школе, и на прошлой неделе мы начали программировать такие вещи, как «следуй за линией» и тому подобное. Вы можете легко получить результаты.

Также я нашел www.3dgamestudio.de некоторое время назад. Я не получил больше в это, но это было действительно интересно. Вы можете программировать с lite-C, который:

Lite-C - это язык программирования для мультимедийных приложений и компьютерных игр, использующий синтаксическое подмножество языка программирования C с некоторыми элементами языка программирования C ++.

На http://tutorial.3dgamestudio.net/ вы попадаете в него. А еще есть редактор уровней, моделей и ландшафтов.

PS: Мне 16 лет, и я начал с друга, который программировал веб-сайт и настраивал запрограммированный игровой сервер. Так что это тоже может быть ему интересно.

Melzon
источник
+1 Очень простая документация, как, кажется, очень легко иметь дело действительно.
Prix
4

Я не могу предложить это достаточно, но создаю его собственные уровни для его любимой игры выбора .

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

Многие отличные игры поставляются с редактором уровней, который дает много степеней свободы.

RPG : набор инструментов OWSIDIAN NWN 2 для электроники , Elder scrolls

RTS : редактор уровней Warcraft III - это фантастический редактор RTS, который даже создал свою собственную игру ( лига легенд и героев новичков ).

FPS's : Hammer для периода полураспада 2. Counter-Strike изначально был модом Half-Life.

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

bobobobo
источник
3

Хотя вся информация здесь полезна, я хотел бы упомянуть, что у STEM Challenge (национального конкурса игр, проводимого Белым домом и ЕКА) есть некоторые предложения о платформах http://www.stemchallenge.org/about/Default.aspx

Gamestar Mechanic, Gamemaker, Kodu, Scratch, PBS KIDS готовы к обучению

У меня есть ощущение, что есть ресурсы сообщества об этих платформах, особенно в отношении STEM.

Смотрите также этот превосходный учебник о Python и Pygame (который также является онлайн-книгой) http://inventwithpython.com/chapters/, здесь находится PDF сиквела к книге, в частности, о Pygame http://inventwithpython.com/blog/making. -Игры-с-Python-Pygame /

Вот еще одна статья Нью - Йорк Таймс http://www.nytimes.com/2011/11/10/technology/personaltech/computer-programming-for-children-minus-cryptic-syntax.html?_r=2&sq=mitchel+resnick&st=cse&adxnnl= 1 & УПП = 1 & adxnnlx = 1322489239-tMp1Wjl9FUcI8rLaJ6cbOw

Обновление: вот обсуждение slashdot http://ask.slashdot.org/story/11/12/27/152228/ask-slashdot-tools-for-teaching-high-school-kids-how-to-make-games

idiotprogrammer
источник
2

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

Грегори Эйвери-Вейр
источник
5
Я не собираюсь опровергать это, но GameMaker и Visual Basic являются инструментами, которые преподают плохой синтаксис (VB), и GameMaker на самом деле не слишком хорош. С одной стороны, у вас нет доступа к хорошим IDE, таким как VS, создание игр методом Drag-and-Drop на самом деле ничему не учит.
Джо Человек
1
Я не уверен, почему вы упоминаете VB; Game Maker примерно на C. Несмотря на это, Game Maker - это хороший способ перейти от ничего не знать к пониманию мышления, необходимого для разработчиков игр. Реагирование на события, ведение игрового цикла, использование взаимосвязей между графическими ресурсами и кодом, перенос проекта из идеи в публикацию; это все, о чем вы можете узнать с помощью перетаскивания. Я согласен с тем, что GML является ограниченным языком, но система в целом является хорошей отправной точкой.
Грегори Эйвери-Вейр
1
Я упоминаю VisualBasic из-за DarkBASIC, еще одного ужасного инструмента программирования.
Джо Человек
Game Maker, безусловно, является хорошим способом обучения, ориентированного на результат. Не нужно изучать физику или рендеринг. Просто используйте встроенные функции. И перейти на C ++ легко, поскольку вы можете начать с создания dll и использовать их в Game Maker, а затем полностью отказаться от Game Maker.
Уильям Маригер
Никогда, никогда не предлагайте GameMaker кому-то старше одиннадцати лет ... Если ему пятнадцать, он может с таким же успехом заняться программированием.
jcora
2

Как упоминал Мартин, UDK - это, пожалуй, самый быстрый способ заставить что-то работать, поскольку он поставляется с таким количеством готовых вещей, как ИИ, модели, а также множество книг. Он имеет очень хороший редактор карт, и язык Java-esque (и ECMA-скрипт, как).

Альтернативой может быть попытка делать игры во Flash или Silverlight - начните с простых 2D-игр. Какой бы жанр игр он ни любил диктует инструментарий.

Крис С
источник
1
Нет! Не УДК! Это: глючный, медленный, подверженный ошибкам, сложный и т. Д. Вместо этого используйте Unity.
Джо Человек
@ firedude67 UDK глючит, подвержен ошибкам? шучу?
Quazi Irfan
по моему опыту, это невероятно отставало, все, что я делал, давало BSOD, и я не мог найти никакой полезной документации. Даже примеры проектов не запускались.
Джо Человек
1
Я никогда не находил UDK глючным, но я настоятельно НЕ рекомендую его для игрового программиста. Художник, да, но программист, нет. «Документация» - это шутка, и чтобы узнать, какие классы вы должны подклассить, вам действительно нужно открыть родительский класс, так как они решили не давать вам ссылку на API. Кроме того, для создания различных типов игр требуется много работы, так как это ядро ​​FPS.
DMan
1

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

Из Reddit -

Выберите язык, который соответствует вашим целям. Большинству игроков не важно, на каком языке запрограммирована игра. Их волнует, смогут ли они в нее играть или нет. Их волнует, работает ли он быстро на их компьютере. Их волнует, если игра не размером 10 ГБ. Им все равно, будет ли это exe или jar.

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

Однако, поскольку ваш сын не имеет никакого опыта в программировании, я предлагаю изучать язык, который быстро кодирует, например, Python, или использовать существующую платформу, такую ​​как XNA. Лично я люблю Slick2D с Java, но я думаю, это мое предпочтение ...

liamzebedee
источник
0

Я познакомился с программированием в молодом возрасте (моложе 15 лет), и мой папа решил использовать VB (1.0). Мы сделали скрученную версию понга, используя объект таймера и рисование GDI. Мне понравилось это, потому что мы начали с чистого листа и смогли изучить основы программирования, пытаясь сделать что-то веселое.

Сегодня я думаю, что выбрал бы XNA и выбрал бы простую 2D-игру. C # и XNA довольно просты, и у вас есть много возможностей для роста, и они свободны.

Джон Макдональд
источник
-4

Если он просто хочет создавать игры, он должен использовать XNA, Unreal, Unity и т. Д. Если он хочет быть программистом игр, то он должен сначала изучить C / C ++ и OpenGL / SDL или D3D.

XNA, Unreal, Unity и т. Д. Отлично подходят для создания игр, но очень плохо делают слишком много для вас. Я уверен, что люди не согласятся со мной по этому поводу, но это в основном превращает вас в ленивого программиста, и когда придет время изучать такие вещи, как пункты в C ++, это будет сложнее, потому что вы сначала пошли с более простыми опциями.

Peronally, я никогда не рекомендую использовать другой C / C ++ в качестве первого языка для изучения, если вы хотите стать программистом игр. Основная причина в том, что даже если вы пойдете изучать C # / XNA, если вы серьезно собираетесь стать разработчиком игр, вам придется знать C или C ++ на каком-то этапе, потому что иначе вас никто не наймет. Так что если они серьезно относятся к профессии, то вы только откладываете изучение того, что от вас ожидают.

Неизвестное устройство
источник
10
К тому времени, когда 15-летний подросток будет готов к профессиональному трудоустройству (через восемь лет), я не вижу причин предполагать, что все будут использовать C ++. Восемь лет назад C ++ только начал вводить использование в играх и получил свой первый действительно практический стандарт, и большинство всех поставлялось с C. Восемь лет назад этот C ++ находился в смехотворно плохом состоянии для разработки игр, и был на повестке дня. был C и ASM. Через восемь лет большинство игровых программ, вероятно, будут больше похожи на XNA, чем на C ++ 03, как сейчас. (продолжение)
8
Ключевой элемент - стать хорошим программистом , независимым от любого отдельного языка. Для новых программистов C # сделает их более мотивированными быстрее. Они вернутся и изучат более подробные вещи, если они хотят быть хорошими, но вам нужно подключить их достаточно долго, чтобы добраться до этой стадии.
5
Важные детали в программировании игры - SIMD, а не SSE; строки кэша, а не стандартная раскладка C ++; хэширование, а не std :: unordered_map; полиморфизм, а не виртуальные функции. Эти последние вещи являются минутными и случайными, а не фундаментальными. Когда вы знаете первое, последнее имеет тенденцию следовать за ним.
2
Начинать с C ++ - вообще плохая идея. Это сложный язык, и тем более как первый.
Коммунистическая утка
4
Я начал C ++ в 15 лет, и хотя я доволен тем, где я сейчас нахожусь, начинать с чего-то более легкого, вероятно, было бы гораздо менее болезненным, и позволил бы мне сосредоточиться на реальных разработчиках игры, а не на указателях и сегментах ошибок ...
Райли Адамс