Подтвердить что ты не робот

Должны ли С# или С++ быть выбраны для изучения программирования игр (консолей)?

У меня есть базовые знания в области программирования игр в c и С++. Я изучаю С# в настоящее время. Если я хочу сделать карьеру в программировании консольных игр, какой из них я должен использовать для продолжения? Я заметил, что многие игровые компании используют С++/C (вероятно, из-за устаревших причин). Также, возможно, С++ пользуется большим количеством поддерживаемых библиотек?
На каких языках написаны современные игровые движки (unreal/crysis и т.д.)? Какой язык лучше? и почему?

4b9b3361

Ответ 1

С++, по двум причинам.

1) в С++ запрограммировано много игр. Никакая обычная игра пока не запрограммирована на управляемом языке.

2) С++ так же сложно, как и получается. Вы должны управлять ручным управлением памятью и, как правило, без проверки границ (за отличным Valgrind!). Если вы освоите С++, вы найдете это доступным для управляемых процедурных языков. Меньше, чем наоборот.

С++ имеет уровень сложности, близкий к APL! Вы никогда не поправляетесь, играя более слабых противников.

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

Ответ 2

Хорошо, вот мои два цента.

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

Лично я предпочитаю С# над С++ в любой день. Это объясняется многими причинами: всего несколько:

  • С# снова заставляет программировать весело;).
  • Управляемый код помогает мне легко выполнять сложные задачи и не забывать о безопасности.
  • С# s 'является чистым ООП, вызывая правила в ваш код, который помогает сохранить код более читабельными, "поддерживаемыми" и исполнение более стабильное. Производительность превосходит С++ на не менее 10%, лучший С++ программист может быть еще лучше С#.
  • На самом деле это не причина, больше как-то "я" о С#: LINQ.

Теперь... есть много вещей, которые я скучаю по поводу С++. Мне не хватает возможности (полностью) управлять собственной памятью. Я не могу сказать, сколько раз я поймал себя на попытке "удалить" экземпляр/ссылку. Еще одна вещь, которую мне не нравится в С#, - невозможность использования множественного наследования, но опять же это заставило меня больше думать о том, как структурировать мой код.

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

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

Ответ 3

Это зависит

Это зависит от многих вещей - ваших целей, вашего опыта, ваших временных рамок и т.д.

Большая часть игрового программирования не зависит от языка. 3D-математика - это 3D-математика в С#, как и в С++. Хотя API могут быть разными, и может потребоваться различная "бухгалтерия", фундаментальная логика и математика останутся прежними.

И это правда, что большинство игровых движков AAA - это С++ с языком скриптов поверх них. Это неоспоримо. Тем не менее, у большинства двигателей AAA также есть куча встроенных инструментов, поддерживающих их, и они могут быть во всех - Java, С#, С++ и т.д.

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

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

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

Если вы хотите научиться писать движок и быть новым разработчиком, я бы, вероятно, рекомендовал С#/XNA. Вы быстрее подойдете к игре "материал", с меньшей головной болью, изучая все возможности С++.

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

Разработка игрового движка AAA предполагает некоторый серьезный код крушения мозга.

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

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

Ответ 4

Я не буду отвечать на исходный вопрос, так как большинство сообщений здесь. Я собираюсь указать вам кое-что, что вы пропустили в своем посте. Просто зная, что C\С++\С# не даст вам карьеру в разработке игр. Большинство игровых студий получают десятки и сотни приложений для простой работы с обезьяной кода. Что заставляет вас выделяться по сравнению с ними? Что делает вас лучше, чем кто-то другой, у кого есть опыт создания игр в другой студии?

Если вы действительно хотите карьеру в игровой индустрии, даже на консолях, вы должны сделать демо-версию, которая показывает, что вы знаете. С++ - отличный выбор языка для использования в демо, если вы подаете заявку на создание консоли. Вы могли бы показать больше, создав инструмент в С#\XNA, чтобы создать активы для своей демонстрации. Вы покажете менеджерам по найму и техническим руководителям, что вы не просто парень С++, а просто парень С#: вы разработчик.

Ответ 5

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

Если вы не разрабатываете платформу Microsoft, я сомневаюсь, что вы будете использовать С#.

Ответ 6

С++.

Это золотой стандарт для программирования игр AAA. Если вам нужно сделать что-то интересное, вам нужно будет сделать С++ или вникать в неуправляемый С# (не всегда приятно).

С++ также возможно быстрее (применяются обычные оговорки).

Как учебный опыт, С# не стоит. С++, безусловно, лучше, особенно в квази встраиваемый мире консолей. Чтобы получить объектно-ориентированный опыт, перейдите к Java.

Ответ 7

Честно говоря... вы должны принять решение о том, что является лучшим языком. Я знаю, что я могу сделать с С#. Я знаю, что можно сделать на С++. С# не создан для того, чтобы сделать то, что сделал С++, чтобы написать... напишите код на самом базовом уровне и все еще будьте несколько значимыми, когда читаете человеческие глаза.

Мы разрабатываем игровой движок с С#, DirectX... это вызов? черт возьми, да... но это то, что мы решили сделать. Мы смотрим на некоторые уровни производительности, которые очень близки к тому, что может дать С++. Таким образом, я не вижу никаких проблем с этими усилиями.

Для кросс-платформенной разработки, если бы не для .Net, у нас может не быть платформы Mono. Платформа Mono расширила нашу платформенную базу.

Вот несколько поддержка моих аргументов...

Ответ 8

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

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

Если вы хотите запрограммировать графику или другие вещи "gamesey", то С# - довольно плохой выбор - перейдите на С++ с OpenGL или DirectX.

изменить

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

Конечно, если вы можете справиться с рабочей нагрузкой, лучший способ - изучить оба языка и применить "лучший инструмент для работы". Поскольку они настолько похожи, это действительно не сложно изучить, когда вы узнали другого. (На самом деле большая часть кривой обучения, перемещающейся с С++ на С#, - это .net и LINQ и т.д., А не основной язык С# как таковой, - очень многое из этого почти идентично, причем всего несколько битов синтаксического сахара здесь и там)

Ответ 9

С++ с win32/GDI относительно легко развивается, но гораздо сложнее, чем сказать Flash или Python (pygame) - однако, используя С++, вы многому научитесь в этом процессе и будьте готовы продолжать продвигать свой карьеру в качестве разработчика игр. Вы также можете посмотреть XNA, если вы хотите запрограммировать xbox360.

Я взял несколько классов в Game Institute (GI) и много узнал о С++, win32 API и DirectX.

Ответ 10

Я думаю, что С++.

Поскольку С# требуется дополнительная установка для С# runtime, которая только поглощает пространство на диске. И С#, конечно, немного медленнее.

Ответ 11

Это зависит от того, какой тип игры вы планируете строить: многие игры могут быть выполнены на языке С#. Это говорит о том, что большинство игр разрабатывается на С++ только потому, что большая часть разработки игр должна выдержать каждый последний бит производительности, который может предоставить платформа, а это означает либо C, С++, либо (содрогающийся) ассемблер.

Ответ 12

Посмотрите на это так: пока вы можете написать игру на С#, она не откроет для вас много дверей карьеры. Если вы знаете С++ и Lua, тогда вы будете гораздо более работоспособными.

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

Разработчики игр используют С++ не по причинам, связанным с устаревшими (хотя и устанавливают возможности для С++-движков и библиотек), но и для производительности и опыта. Разработчики игр знают С++, они отлично работают, поэтому нет необходимости менять. Это не похоже на бизнес-приложения (в Windows), где разработчик mindshare перемещается с текущими инструментами Microsoft.

Ответ 13

С++ - это лингва-франка консольной игровой индустрии. К лучшему или худшему, вы должны знать, что это профессиональный программист для консольных игр.

Ответ 14

Если вы хотите профессионально работать в качестве разработчика игр, вам нужно знать C/С++.  Конец истории!

Ответ 15

Эй, если BASIC достаточно хорош для Gorillas, это достаточно хорошо для меня.

Ответ 16

Я считаю, что С++ - это тот язык, который вы ищете. Большинство игр разрабатывается на С++, потому что это язык с несколькими парадигмами (OOP, мета-программирование и т.д.) И потому, что он позволяет управлять памятью. Что еще лучше делает С++, так это то, что его можно использовать для разработки на множестве платформ, тогда как С# не может делать этого в таком большом масштабе.

Многие скажут, что с С# вам не придется беспокоиться о распределении памяти, и это верно по определенной цене. У вас будет бремя платформы .NET на ваших плечах и вы будете медленно видеть ограничения С# в том, как должны выполняться определенные задачи.

Возможно, вы прочитали из некоторых ответов, что С++ - жесткий язык программирования. Это в основном верно, но, возможно, вы не слышали о С++ 0x. Некоторые функции, найденные в С#, такие как сбор мусора, станут доступны (необязательно для вас) с С++ 0x. Кроме того, многопоточность, наконец, будет поддерживаться языком с этой версией стандарта С++.

Я бы рекомендовал вам купить несколько книг на С++, а также книги С++ DirectX/OpenGL.

Ответ 17

Его всегда трудно сказать, потому что они использовали сборку вплоть до 1993 года, NBA Jam, если кто-нибудь помнит этого плохого мальчика. Технология постоянно развивается, поэтому очень сложно сказать, куда она пойдет, я бы рекомендовал учиться C и получить очень крепкое понимание, а затем перейти на С++. Я скажу это как предостережение, если вам понравится играть в игры, вам не понравятся игры для кодирования.

Ответ 18

Если вы знали С# и XNA, вы могли бы сделать несколько пробных игр довольно простым способом, что могло бы помочь прорваться в поле.

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