Я решил, что действительно хочу заниматься программированием игр. Таким образом, вопрос: как 18-летнему человеку, который хочет изучать программирование с самообучением, какой язык программирования наиболее подходит между C # и C ++? (Должен сказать, что меня не волнует Unix, потому что я считаю, что Windows по-прежнему будет самой используемой ОС)
Я знаю основы C ++, но ничего не знаю о C #. Я знаю, что в C ++ есть больше руководств, dll и тому подобное, в то время как в C # этого нет, но его гораздо легче выучить и использовать одному человеку для разработки программы, но я читал, даже если программа запутана легко получить источник этого.
Ну, сначала я хочу сосредоточиться на основном, я должен сказать, что я предпочитаю C ++ только потому, что он мне больше подходит, но я должен учитывать, что я работаю один. Поэтому, даже если мне это нравится, это может быть не лучшим решением.
Я действительно не уверен, какой из них выбрать, я читал много тем на разных сайтах, и похоже, что C # становится все более популярным, чем C ++. Но да, я сказал, что хочу заниматься программированием игр. Поэтому мне нужно знать некоторые лучшие моменты, чем просто «C # проще из-за обработки памяти .net, а C ++ нет», потому что я не мог просто найти ее.
источник
Ответы:
Я изучаю C ++, программируя игру. Это был очень приятный опыт. Я настоятельно рекомендую вам сделать то же самое!
Однако теперь я программист на C #, я знаю, что был бы намного более продуктивным, если бы C # был доступен в то время.
C # является идеальным выбором для обучения разработке игр. В нем есть все, что нужно для начала, от фреймворков до книг, и язык просто потрясающий.
Я видел десятки книг, специально написанных по программированию игр на C #, и Microsoft прилагает немало усилий для улучшения его фреймворков, включая DirectX и XNA .
UPDATE : Вы можете быть заинтересованы от этого , а также. Это недавнее сообщение в блоге от Мигеля де Иказа .
ОБНОВЛЕНИЕ 2013-02-22 Microsoft планирует прекратить поддержку XNA .
источник
Большинство игровых компаний используют C ++, возможно, со сценариями Python или другими языками, работающими в фоновом режиме. Более того, поскольку привязки для OpenGL и DirectX нацелены на C ++ (хотя я совершенно уверен, что вы можете делать столько же с Direct3d в C #), но для программирования игр C ++ является основным языком.
Я собираюсь дать вам справедливое предупреждение (и не позволяйте этому сдерживать вас), но 3D-графика может быть очень сложной. Новый Direct3D сделал его немного проще, чем раньше, но все же это хорошая математика (которая может быть довольно запутанной), и только сами библиотеки могут сбивать с толку.
Сначала я бы начал с чего-то очень простого. для 2d SDL (Simple Directmedia Layer) намного легче использовать (для чего-то вроде нисходящей игры), как только вы попадаете в 3D, я ЛИЧНО считаю, что OpenGL легче изучать (но это все мнение). MS имеет несколько хороших учебников / примеров в документации по DirectX SDK, так что стоит взглянуть на них. Учебники Nehe, хотя и немного устаревшие, все еще хороши.
но, чтобы ответить на ваш вопрос, все они обычно делаются на C ++.
источник
Сначала вы захотите установить некоторые приоритеты. Вы просто хотите сначала создать игру, а потом узнать о более продвинутых аспектах программирования или наоборот. Оба подхода имеют свои плюсы и минусы, но, на мой взгляд, оба законны.
Если вы хотите начать делать игры, то я бы порекомендовал изучать C #. Если вы уже знакомы с основами C ++, у вас не должно возникнуть никаких проблем при освоении C #. Создание C # вашего инструмента имеет свои преимущества. Его легко изучать на языке (по сравнению с C ++), и он является «управляемым языком», что означает, что он автоматически выполняет установку памяти для вас (то, что многие начинающие C ++ и даже не начинающие, имеют проблемы с ). Это также дает вам доступ к Microsoft XNA Framework, которая делает для вас еще более утомительной работу. Это заставляет вас сосредоточиться на таких вещах, как игровой цикл и дизайн, не беспокоясь (слишком много) о том, чтобы заставить его работать. Правда, все эти инсталляции имеют свои накладные расходы, что означает, что вы, вероятно, не будете делать 3D-игры промышленного уровня, а только начинаете программировать, так что я сомневаюсь, что вы сделаете следующий Halo с ваших первых попыток. :)
Вот вскрытие от парня, который разработал успешную игру XNA (Weapon of Choice). Он подробно описывает, как использование C # / XNA сэкономило ему время на разработку, а не на использование C ++. http://www.gamasutra.com/view/feature/3899/postmortem_mommys_best_games_.php
При этом вам следует потратить некоторое время, чтобы хотя бы узнать, как все работает в фоновом режиме. Как программист C ++ сделал бы это. Умение создавать игры на C ++ может облегчить присоединение к другой команде разработчиков игр (так как большинство из них работает на C ++), если вы хотите добиться успеха в игровой индустрии. Но даже если вы в конечном итоге никогда не используете C ++, знание того, как работают внутренние компоненты, может сделать вас только лучшим программистом, независимо от того, какой язык вы используете.
источник
Я очень продвигаю C ++ для разработки игр. Есть несколько дополнительных препятствий, с различными плюсами и минусами, одна из лучших причин - мобильность.
С C # вы можете развиваться гораздо дольше, и в нем наверняка есть несколько удивительно хороших движков. Оба эти языка являются хорошими для программирования игр: если вы ориентируетесь только на платформы Windows / Xbox, у вас будет особенно повод склоняться к C #.
Я полагаю, что вы должны изучить язык OpenCL или CUDA, некоторый язык GPGPU. Лично я предпочитаю OpenCL, поскольку он, вероятно, переживет и продолжит расти, это в основном просто стиль C. Есть OpenTK, который является хорошей оберткой для C ++ или C #.
Мне всегда было интересно, как будет развиваться программирование в Ruby с аппаратным ускорением ...
источник
Сырое программирование игры оставит вас довольно холодно. Работа с низкоуровневыми графическими вызовами в C # или C ++ - это маленький кошмар, и вы действительно не хотите восстанавливать колесо рендеринга 2D-спрайтов, не говоря уже о 3D-моделях. Поскольку вы сами по себе и хотите изучать программирование, лучше всего найти основу, которая может немного продвинуть вас вперед.
Поскольку вы немного знакомы с языком на основе C, я бы предложил взглянуть на Unity 3D . Мало того, что он испытывает серьезный интерес к внедрению в коммерческих магазинах разработчиков игр, и имеет некоторые интересные варианты платформ (включая ПК, Android, iPhone и веб-приложения), но также у него есть бесплатная очень простая в использовании версия и множество учебных пособий. чтобы показать вам, как перейти от концепции к реализации. Лучше всего (IMO) одним из поддерживаемых языков сценариев является C #.
источник
Я сделал игру для класса два года назад (мне тогда тоже было 18 лет), и мы сделали это на C #. Хотя я заметил, что большие программы на C # обычно работают медленнее, чем большие программы на C ++, C # также требует гораздо меньше работы с вашей стороны. Управление памятью осуществляется автоматически, и для первой игры этого достаточно. (Наша игра представляет собой полноценную многопользовательскую 2D-игру в стиле Starcraft.)
Я бы болел за C #, поскольку им должно быть легче управлять. Однако, если вы хотите стать профессиональным разработчиком игр, просто помните, что он работает только на платформах Microsoft. (Тем не менее, C # может быть хорошей ступенькой к C ++, и если бы мне пришлось заново изучать два языка, я бы сначала попытался выучить C #.)
источник
Я бы проголосовал за C ++ - в первую очередь потому, что он может быть кроссплатформенным (конечно, в зависимости от того, как вы пишете свой код), а также потому, что я думаю, что он дает вам больше знаний об управлении памятью - потому что вам нужно заботиться об этом. Но так как вас не волнует linux / unix, если вы хотите на время забыть о сложности памяти, почему бы не сосредоточиться на C # прямо сейчас, а затем изучать C ++?
источник