C ++ как первый язык для программирования игр под Windows?[закрыто]
Вопрос
Я программист-любитель, неплохо разбирающийся в 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-языками (в некоторой степени).
Существует множество игровых движков, большинство из которых перечислены в списке на этой странице.Особый интерес представляют в свободном мире:
- Panda3D (http://www.panda3d.org/), C++ и Python;
- Неоаксис (http://www.neoaxisgroup.com/), по сути, C# (.NET);
- Ogre3D (http://www.ogre3d.org/), C++;
- Кристаллическое пространство (http://www.crystalspace3d.org/main/Main_Page), C++ и Python;
- Эсентель (http://www.esenthel.com/), ...
Несвободные пакеты включают в себя Единство, и другие.
Если вы это сделаете нет хотите любой из этих движков, есть еще очень хорошие библиотеки, такие как Qt для C ++ это позволяет создавать сценарии - хотя и не непосредственно на Python, вам пришлось бы встраивать их самостоятельно - и другие для C #, но список может получиться довольно длинным.
Как правило, люди заканчивают работу перед тем, как завершить свою первую игру. Поэтому, если ваш друг не имеет послужного списка решимости, я бы порекомендовал самый доступный вариант. Если вы выбираете между C ++ и C #, это будет C #.
Я бы предпочел XNA и C # для быстрого и безболезненного ознакомления.Я бы использовал C ++ и библиотеку, подобную DirectX, для программирования игр, имея некоторый опыт в этой теме.Большинство самых успешных игр были написаны на C ++.
Если ваша цель состоит в том, чтобы повеселиться и закончить игры (или в небольших командах), которые являются относительно небольшими по объему, то я говорю C # и XNA.
Если ваша цель - работать в индустрии, над супербюджетными играми с гигантскими командами ... Тогда C ++ ...