Является ли разработка игр лучшим способом изучения программирования? [закрыто]

21

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

обратите внимание, что он был направлен на развитие .net / xna / c #.

Эдвард
источник
3
«тот факт, что все должно быть создано в коде». А как насчет 3D-моделей, текстур, звуков и других ресурсов? Вы можете создать игровой движок без них, но полная игра с очень небольшим количеством ресурсов, даже если не невозможная, будет довольно сложной задачей.
POSIX_ME_HARDER
@ Чешир: Ну, вы могли бы запрограммировать их с такими вещами, как обработка. Я не говорю, что это очень практично.
Anto
2
@ Чешир: Да, некоторые люди принимают этот вызов очень напрямую, создавая все процедурно. Не слишком часто встречается в коммерческих играх (насколько я знаю), но популярно только для того, чтобы доказать, что это можно сделать, и я видел несколько довольно впечатляющих демонстраций, подобных этой.
FrustratedWithFormsDesigner
6
Я предполагаю, что этот вопрос означает «разработка игр», а не «игра в игры», когда спрашиваешь об играх? Не могу бросить интеллектуальный переход от Call of Duty к C ++ ...
HorusKol,
1
Если вы хотите, чтобы игра была играбельной, то вы вполне можете обнаружить, что вам нужно поставить под угрозу чистый дизайн ОО в пользу скорости.
Питер Тейлор

Ответы:

25

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

  • Графика
    • 3d расчеты
    • Оптимизация скорости
    • Взаимодействие с графическим оборудованием
  • Игра
    • Структуры данных
    • Форматы файлов для сохранения
    • Общий дизайн, иначе вы создадите беспорядок, в который невозможно добавить функции
    • Знание сети, если игра многопользовательская
  • AI алгоритмы
    • Найти путь
    • Боевые бои
  • Издательский
    • Знание ОС, например, как работают установщики
    • Возможно, веб-разработка для получения слова

Видите ли, одна игра может одновременно охватывать множество областей. Это делает его отличным инструментом обучения, если вы готовы тратить время и делать это хорошо.

Что касается ООП, это один шаблон, который работает хорошо. Вы можете использовать игру в качестве учебного пособия, чтобы практиковать хорошие методы дизайна.

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

Майкл К
источник
12
Вы забыли одну вещь, историю для этой игры, и иногда история - это все, что имеет значение.
Махмуд Хоссам
Это предполагает, что это 3D-игра.
Адам Харт
1
@Adam: Да, но у 2d тоже есть расчеты. Теперь я намеренно исключаю основанные на тестах ролевые игры;)
Майкл К
1
@Mohmoud История никогда не "все, что имеет значение". Это такая же большая ошибка, как и плохая / пропущенная история. Есть много аспектов, которые входят в создание хорошей игры. Я не хочу играть в скучную игру, какой бы классной она ни была. Также у большинства успешных головоломок нет истории.
Адам Харт
Теория игр тоже удобна.
VirtuosiMedia
46

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

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

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

Эрик Уилсон
источник
это то, что я думал изначально. Но подумайте о вашем абсолютно новом для программирования. Игры кажутся отличным инструментом для изучения различных концепций. Майкл перечисляет некоторые из них. Если честно, я бы хотел научиться ООП с игровой точки зрения. Но это могло произойти из-за того, что это плохо объяснено, или из-за того, что разработка бизнес-приложений усложняет понимание концепции. Определенно интересно наблюдать за обоими аргументами.
Эдвард
@penguin, каким образом игра Call of Duty или Halflife научит вас программированию?
jwenting
13

Это способ научиться программировать, наряду с другими способами. Когда вы пишете код, вы узнаете вещи. Теперь это лучший способ? Не уверен

По крайней мере, две причины, указанные вашим учителем, не действительны .

  • «все должно быть создано в коде» : когда вы пишете бизнес-приложение, вы фактически пишете код. Это не будет написано магией. Да, есть помощники, которые позволяют вам использовать автоматически сгенерированный код. Нет, их не обязательно использовать. Кстати, автоматически сгенерированные части, как правило, наиболее раздражают в программировании (не добавляя элементы управления в элемент управления Windows Forms, вы узнаете что-то интересное и полезное).

  • «Вы действительно получаете полный опыт и внедряете ООП в свои программы» : кто-то должен объяснить мне, почему это действительно только для игр, но недействительно для всего остального. Если вы понимаете ООП и хотите использовать его, вы можете использовать его и в бизнес-приложениях. Если вы этого не понимаете или не хотите использовать (и предпочитаете, например, функциональное программирование), разработка игр не заставит вас меняться.

Но:

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

Тем не менее, эти учителя заканчивают тем, что делают разработку игр такой же скучной для молодежи, как и разработку бизнес-приложений. Если они считают, что игры должны проводиться для того, чтобы изучать ООП и т. Д., Они попросят своих учеников сделать такие проекты, которые вообще не приносят удовольствия. Это была одна из самых больших ошибок моих учителей, когда я учился в колледже. Они очень часто давали нам игровые проекты для написания на Ada в режиме консоли. Нет графики. Не весело. Нет опыта пользователя. За всю свою жизнь и карьеру я никогда не видел таких скучных проектов.

Арсений Мурзенко
источник
4
Игры хорошо работать с ООП , потому что это очень легко увидеть , как каждый BadGuy, Weapon, PowerUp, и другие предметы в игре могут легко быть объектом. Вы можете программировать взаимодействия между объектами и видеть их на экране. Я думаю, что именно визуальная часть делает его таким привлекательным. Бизнес-приложения, которые имеют иерархии типов ServerTaskScheduler, AbstractDataProcessorи UserQueryAgentт. Д., Не такие захватывающие , хотя они могут обучать тем же концепциям ООП, что и в играх.
FrustratedWithFormsDesigner
4
@FrustratedWithFormsDesigner: может быть , я просто не понимаю , потому что я потратил слишком много времени на разработку бизнес - приложений, но я не понимаю , почему это было бы более трудно понять , как Customerили Productили Transactionмогут быть объектами. Но я понимаю, что гораздо приятнее иметь дело с BadGuys, чем с скучными Transactions.
Арсений Мурзенко
Это больше связано с уровнем абстрактного мышления. Некоторые программисты часто зацикливаются на именах, потому что не знают, к чему относятся. Например, я встречал некоторых разработчиков, которые понятия не имеют, что Transactionвлечет за собой.
Спойк
7

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

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

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

Анто
источник
7

Вопрос: Какой метод обучения лучше всего изучать?

Ответ: метод, который вы на самом деле делаете

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

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

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

Homde
источник
4

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

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

Стив
источник
2

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

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

IvoC
источник
2

Я никогда не слышал о том, что игра Halflife или Call of Duty учит вас навыкам программирования.

Программирование их может, но программирование чего-то подобного не является чем-то, что новичок должен даже попытаться немного. И особенно у начинающих часто создается впечатление, что они могут создать следующий блокбастер со своими несуществующими знаниями в области программирования. Скажите им, чтобы они попробовали сделать клон PacMan или Tetris, и они кричат, что это не то, что они хотят делать, и что вы должны «дать мне zuh koduz».

jwenting
источник
1

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

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

Тогда, когда мне нужно было научиться программировать то, что я делал в своем исследовании? Сейчас я достаточно уверенно говорю, что знаю 2 языка и работаю над третьим. Зачем? Потому что это соответствовало моим интересам. У меня была причина придерживаться этого, причина учиться и больше проблем, чтобы попробовать, чем просто «Упражнение 8» в книге.

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

фомиты
источник
+1 за «лучший тип проекта, который соответствует вашим интересам». Аминь.
Брайан Оукли
0

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

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

rdasxy
источник
... но если вы пишете какую- либо программу, которая взаимодействует с пользователем, вам не нужно думать о пользовательском опыте и дизайне? Вы говорите, что с традиционным клиентским приложением вам не нужно думать об этих вещах, но игра заставляет вас это делать? И разве большие настольные приложения не могут занимать несколько месяцев и требовать от вас документации? Какое отношение это имеет к играм, но не к другим типам программирования?
Брайан Оукли
0

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

В нем говорится о некоторых основных областях, чтобы сосредоточиться на

  1. Страсть к разработке игр.
  2. Учебное отношение.
  3. Важно получать удовольствие от игр.
  4. Важность ваших навыков программирования.
Картик Сринивасан
источник
0

Я бы согласился, кроме ...

Скорее всего, это был первый опыт программирования, который многие когда-либо имели, создавал и программировал робота Lego (Mindstorms).

Хотя общий термин «игра» может определять такую ​​огромную категорию, чтобы охватить почти все программирование, при использовании в контексте оригинального плаката он всегда означает «написание игр в стиле Doom».

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

Одной из моих первых программ для Windows была программа для контроллера MIDI, потому что я действительно хотел программу для контроллера MIDI, и Windows выглядела идеально подходящей (ползунки, кнопки, поддержка SDK для MIDI и т. Д.). Из этой программы я многое узнал о программировании для Windows (это было еще в Win 3.1 дней).

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

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

Huntrods
источник