Есть ли у C # будущее в разработке игр?


18

Недавно я узнал, что MMO Minecraft работает на Java из недавнего интервью на CVG.co.uk о возможном сотрудничестве между двумя бывшими и теперь конкурирующими коллегами. В интервью он прямо сказал, что основатель Minecraft - это Java-кодер, и он является C или C ++-кодером, поэтому они несовместимы друг с другом. Поэтому сотрудничество по будущим проектам будет затруднено.

Это заставило меня задуматься: может ли Java это сделать? Какое будущее у MS очень популярного языка C # и платформы .Net в плане разработки игр или массовых игр?



3
Все дело в производительности, которая вам нужна, Minecraft хорошо работает на управляемом языке, но для высокопроизводительных графических игр предпочтительнее языки C, C ++ или другие нативные языки

19
Minecraft на самом деле не MMO.
DeadMG

3
@ Guillaume86: Jittered код в настоящее время может превзойти нативный код, и Jits постоянно улучшается. Кроме того, управляемые языки создают гораздо более надежные программы. Таким образом, в конце концов C ++ теряет свое преимущество в производительности и значительно труднее писать надежные программы (что означает более длительное время разработки и большие затраты)
Martin

4
JIT может побить плохо написанный нативный код, не сильно оптимизированный и настроенный внутренний цикл. Конечно, даже с C # у вас есть возможность написать эти чувствительные сегменты на C / C ++, если вы действительно хотите.
Coderanger

Ответы:


22

Вы должны проверить XNA . Платформа для создания игр для Windows, Xbox 360 и Windows Mobile 7. Все в C # и .NET.


11

Я занимаюсь разработкой профессиональных игр более 5 лет. Большую часть времени я использовал C # почти исключительно.

C # и стек .NET в целом действительно хороши для серверных технологий. Я работал не менее чем на 4 MMO-играх с сервером, написанным на C #. Кроме того, с ростом популярности Unity3D многие браузерные и мобильные игры требуют C #. Не забудьте XNA Framework: он не является предпочтительным движком для консольных игр AAA, но с его помощью сделано много отличных игр, и многие другие находятся в стадии разработки.

В целом, у C # определенно есть будущее в разработке игр.


Это старый вопрос, но меня беспокоит одна вещь. «технология на стороне сервера» - что именно вы подразумеваете под этим? WindowsService, работающий на некоторых Windows Server с использованием .NET Framework? Я всегда думал, что серверы сделаны на С ++ и работают на Unix OS. Мне было просто любопытно
Маршалл

Да, именно это. Есть много серверов, работающих на Windows, в том числе и те, которые работают на этом сайте, AFAIK.
Nevermind

спасибо, что вернулся ко мне. Просто чтобы уточнить - «работает на Windows» как безголовые службы Windows или такие программы, как WinForms (со встроенным конфигом или что-то в этом роде)?
Маршалл

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

10

Как уже упоминалось, Mono переносит C # на несколько платформ. В этой же области вы найдете Tao , многоплатформенную библиотеку для Mono и .NET, которая обеспечивает доступ к Cg, DevIL, FreeGLUT, GLFW, GLU, ODE, OpenAl, OpenGL, PhysicsFS, SDL и WGL. Очевидно, что он не такой надежный, когда речь идет о функциях, как XNA (который предоставляет основные компоненты движка непосредственно разработчику); но это достаточно мощный.

Таким образом, кроссплатформенность вне контролируемых Microsoft ОС и аппаратного обеспечения определенно возможна Просто не все популярные инди-игры использовали эту возможность.

Как уже упоминалось, XNA в сочетании с C # позволяет независимым разработчикам публиковать на 360, ПК и Windows Phone 7.

В целом, C # жив и здоров в разработке игр как движок / игровой язык.

Как язык инструментов, он используется везде. Я создал инструменты для EA, THQ, и теперь Arkadium все использует C #.


5

Мало того, что у C # есть будущее в разработке игр, у него есть подарок - ознакомьтесь с Magicka , недавно выпущенной (и хорошо продаваемой) игрой, которая была разработана с использованием XNA. Также взгляните на выигрышные записи Dream.Build.Play . C # - жизнеспособный способ делать игры (хотя сейчас я не верю, что это правильный выбор для всех игр).

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


4

Java всегда была очень универсальным языком, и у людей всегда была возможность кодировать игры в ней, от простых веб-игр (Java-апплеты / GWT с плагином Canvas ) до полноценных 3D-зверей (извлечение JMonkey ). Так что я бы не сказал, что Java может делать такие вещи, как убийца C #, потому что большинство людей знают, что Java уже может это делать.

Тем не менее, C # будет по-прежнему популярным, поскольку он неизбежно связывается с Windows, Windows Mobile и Xbox намного лучше, чем Java (что, собственно, все разработчики игр действительно заботятся о таргетинге, поэтому кроссплатформенное преимущество, которое имеет Java, в основном потеряно). также получил XNA, которая действительно взлетела с точки зрения разработки игр.

Так что да, Java - отличная платформа для разработки игр, если кто-то хочет пойти по этому пути, но это, конечно, не убийца C # или .NET.


4

Проверьте Unity 3D; Сценарии на C # (и JavaScript, и Boo) в высокопроизводительном 3D-движке.

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


Unity также имеет веб-плеер, чтобы вы могли играть в браузере. Плагин не имеет большого проникновения на рынок, как Flash или Java, но это возможно.
Майкл Коулман

ты за единство !!
Даниэль Пендергаст

1

Да, у C # есть будущее с каркасом XNA. Большинство предпочитает C ++ из-за скорости, но C # уже не такой медленный ...


2
Это совсем не медленно. Это редко хуже, чем около 70% скорости C ++, а иногда даже быстрее!
Нолдорин

4
Связанные с процессором операции в C # довольно быстрые, они выполняют некоторую дополнительную проверку, которая значительно повышает безопасность кода за счет незначительных падений производительности, но там, где это намного хуже, чем в C ++, это потребление памяти и управление ею. Это намного проще и менее подвержено утечкам в C #, но снижение производительности GC может быть абсолютной собакой.
justin.m.chase

Однако будьте осторожны при нацеливании на Xbox360. Во время выполнения XNA не хватает возможностей для некоторых основных оптимизаций, и вы не можете переместить чувствительные к производительности части в неуправляемый код.
drxzcl


1

В этом случае он сделал с Java создание апплета, чтобы вы могли просто войти на сайт и поиграть с очень распространенным плагином, полностью прозрачным для используемой операционной системы. Я полагаю, что он думал, что Java будет достаточно прозрачным, если использовать его таким образом, и это упростит быструю итеративную разработку / тестирование, которое он заставлял поклонников делать. Я не верю, что вы можете просто сделать это с XNA, потому что обычно тестеру нужно установить все, а также игру и некоторые общие знания о том, как скомпилировать и запустить это.

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


1

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

Ничто не может быть дальше от истины.

C # и Java давно используются в играх. C и C ++ имеют еще дольше, и до сих пор есть. Lua используется в качестве языка сценариев для некоторых невероятно популярных игр с движком, написанным на C / C ++.

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.