C ++ как первый язык для программирования игр под Windows?[закрыто]

StackOverflow https://stackoverflow.com/questions/1618050

  •  06-07-2019
  •  | 
  •  

Вопрос

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

Я обнаружил, что Python хорошо работает в качестве моего родного языка, поскольку меня больше интересует сетевое и веб-программирование на платформах Linux / Unix, но для кого-то, кто в основном интересуется программированием игр для Windows, я подумал, что C # может быть лучшим выбором, поскольку он мог бы учиться с помощью Visual C # Express Edition и XNA, а затем переключиться на Visual C ++, когда он будет готов начать изучать C ++ и, следовательно, уже находиться в знакомой среде.Я думаю, что управление памятью требует больших усилий, и C #, по крайней мере, справляется с этим, так что он может отложить это до тех пор, пока не начнет изучать C ++.

Что другие думают о C ++ как о первом языке программирования для такого рода приложений?Должен ли я порекомендовать ему вместо этого перейти на C #?

Это было полезно?

Решение

C ++ должен быть в порядке. Я думаю, что ему лучше всего узнать об управлении памятью, указателях и т. Д. ДО того, как перейти на C #, поскольку он поймет, как программа работает лучше. В противном случае он просто увидит память как волшебство, а сборщик мусора не будет иметь никакого реального значения. Всегда полезно иметь четкое представление о базовых языках (C, C ++, Assembly и т. Д.) Для создания лучшего кода.

Другие советы

C ++ - основной язык, используемый для наиболее "серьезных" проблем. игровые названия. Если вы программируете для крупной игровой студии, то ему нужно знать немного грязного C ++.

Начало работы с C ++ может быть немного сложным для начинающего. Я бы порекомендовал C как отличную отправную точку. Вы познакомитесь с концепциями управления памятью и другими вещами низкого уровня, прежде чем добавить сложность C ++.

Поскольку C # - это управляемый код, он не получит понимания низкоуровневого управления памятью. Это не поможет ему, когда придется иметь дело с C ++. В этом случае запуск ближе к металлу поможет ему в долгосрочной перспективе.

Программирование на C ++ великолепно. Но если вам не нравится полная боль, когда вы учитесь программировать, вы можете начать с XNA. Это позволит вам работать с игровым контентом и логикой, а не бороться с кодом вашего движка.

Теперь, если вам нравится боль, начните с DirectX и C ++.

Я думаю, что лучше изучить язык, такой как Java или C #, прежде чем переходить на C ++. Причина, по которой я это говорю, заключается в том, что вы можете легко увязнуть в деталях и тонкостях C ++.

Я несколько лет боролся с C ++ (как хобби), затем в Uni меня учили Java, я перестал заниматься любым C ++, пару лет работал на Java, затем перешел на C ++ dev. Я очень быстро все понял, потому что я уже знал, какие шаблоны и концепции я хотел применить, и это был всего лишь вопрос изучения синтаксиса и странностей и повторного привыкания к указателям. Я просто должен был узнать, КАК, а не ПОЧЕМУ. Принятие C ++ в качестве первого основного языка - это изучение того, КАК и ПОЧЕМУ одновременно, и это может быть очень запутанным!

XNA - хорошее предложение.

Python хорош в программировании игр. См. i-want-to-learn-game -развитие-который-язык должен-я использование . Попробуйте изучить Pygame .

  

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

Если он хочет попасть в индустрию, то знание C ++ жизненно важно, поскольку большинство игровых движков используют C ++. (Я также разработчик должен в некоторый момент наклонять C или C ++)
Однако, если он хочет писать игры (например, закончить написание игры), то C ++ может оказаться не лучшим способом. Он очень сложный и имеет много подводных камней, которые делают его медленным языком для разработки. Это не просто управление памятью, но такие вещи, как ужасные ошибки компиляции, связанные с stl и т. Д., Которые очень затрудняют выполнение чего-либо при первой попытке программировать.
Лучше было бы посмотреть на что-то вроде C # или Python, так как это гораздо менее сложные языки, и у каждого есть хорошая библиотека для игр.

Если он решит, что C ++ - правильный путь, я бы порекомендовал хотя бы библиотеку рендеринга. Что-то вроде Ogre3D по крайней мере. Причина этого раскрывается в этой статье Писать игры, а не движки . Хотя написание (или попытка написать) движка из базового API будет хорошим опытом, маловероятно, что игра закончится.

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

Поэтому вам следует ознакомиться с существующими библиотеками и SDK, а также с несколькими языками, которые вы хотите использовать одновременно.Адаптация к C ++ или C # не так сложна, первый является более строгим и требовательным, в то время как он дает вам более широкий контроль над памятью, второй позволяет вам сосредоточиться на основной области разработки, но берет на себя управление памятью (в основном), что означает, что у вас могут возникнуть проблемы в режиме реального времени.

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

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

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

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

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

Я бы предпочел XNA и C # для быстрого и безболезненного ознакомления.Я бы использовал C ++ и библиотеку, подобную DirectX, для программирования игр, имея некоторый опыт в этой теме.Большинство самых успешных игр были написаны на C ++.

Если ваша цель состоит в том, чтобы повеселиться и закончить игры (или в небольших командах), которые являются относительно небольшими по объему, то я говорю C # и XNA.

Если ваша цель - работать в индустрии, над супербюджетными играми с гигантскими командами ... Тогда C ++ ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top