Разработка игр в vb.Net

Каковы большие ограничения VB.Net, которые мешают людям использовать его в качестве языка для разработки игр?


person jblaske    schedule 30.04.2009    source источник


Ответы (9)


Скорость языков более высокого уровня обычно удерживает их от «серьезной» разработки игр, где главенствуют C и C++. Однако все больше и больше игр раскрывают игровую логику для таких языков сценариев, как Lua и Python.

Я слышал об инди-играх, разрабатываемых в VB, например, серия Zombie Smashers была разработана в VB Джеймсом Сильвой, который недавно сделал игру Посудомоечная машина Dead Samurai на C# .net.

Вы можете изучить платформу Xbox Live Arcade (XNA), выпущенную Microsoft. Вы можете использовать это в VB или C#.

person James McMahon    schedule 30.04.2009
comment
В качестве предостережения: вы не можете использовать VB.NET для разработки игр для Xbox 360 с помощью XNA. Поддерживается только C# 3.0. creators.xna.com/en-us/xnags_islive - person Ed Altorfer; 14.05.2009
comment
Не знал, что Эд, но игры для ПК можно делать и в том, и в другом. Возможно, именно поэтому Сильва переключился на C# для Dishwasher, он был вынужден отключить VB. - person James McMahon; 15.05.2009

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

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

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

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

Во всяком случае, настоятельно рекомендуется создать прототип игры на управляемом языке, будь то VB.NET, C#, python, ruby ​​и т. д., а затем, если окажется, что он слишком медленный, вы можете перенести его части на С++.

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

person nightski    schedule 30.04.2009

Основная проблема не в VB.NET, а в .NET Framework.

В частности, разработка игр обычно выполняется на C/C++, где можно добиться максимальной производительности. Платформа .NET для этого не подходит.

При этом есть игры, разработанные на .NET.

person Gavin Miller    schedule 30.04.2009
comment
поднялся за правду. Хотя мне нравится .NET framework, большинство крупных разработчиков открыто заявляют, что если вы хотите участвовать в разработке игр, хорошо знайте C++, а ваши структуры данных/алгоритмы еще лучше (Blizzard). - person bdd; 30.04.2009
comment
Верно, но действительно ли вы собираетесь конкурировать с Blizzard, если вы единственный программист, работающий над хобби-игрой? - person James McMahon; 30.04.2009

Частично это связано с тем, что vb все еще ассоциируется с медленным языком. (Что уже не так верно, как раньше, из-за общности фреймворка .net)

Если честно, это зависит от того, какой тип игры вы разрабатываете, если вы делаете игру с высокой частотой кадров, трехмерной графикой высокого уровня, передовую игру, то вы застряли в написании ее на C или C++, чтобы получить необходимую производительность. Но если вы делаете что-то более похожее на то, что вы видите во многих современных флеш-играх, или даже то, что вы могли видеть в старых играх, то, ИМХО, вы могли бы сделать это практически на любом языке.

person Solmead    schedule 30.04.2009
comment
Да, это действительно зависит от масштаба вашего проекта. Используйте правильный инструмент для того, чего вы хотите достичь. - person James McMahon; 30.04.2009

Что касается скорости, такие движки, как Visual3D.NET на основе XNA, убедили меня, что это возможно. чтобы получить хорошую производительность от управляемого игрового движка. Что еще более важно, ЦП не кажется узким местом ни в одной из демонстраций, а это единственная часть, на которую оказывает какое-либо влияние использование C#. И даже когда он ограничен процессором, он все равно выдает только 50-60%, поскольку движок все еще достаточно однопоточный, поэтому есть МНОГО возможностей для улучшения сегодняшних двух- и четырехъядерных процессоров, а также завтрашних восьми- и шестиядерных ядер. Я думаю, что оптимизация алгоритмов для хорошего масштабирования в эпоху многих ядер будет важнее, чем используемый язык.

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

Использование управляемого языка, такого как C#/VB.NET, может ограничивать возможности процессора, такие как физика, но опять же, меня очень впечатлила полностью управляемая библиотека физики JigLibX для XNA.

Это все C #, но я предполагаю, что это применимо и к VB.NET, поскольку в конце они компилируются в один и тот же IL, если только в компиляторе VB нет некоторых ограничений, о которых я не знаю.

person JulianR    schedule 30.04.2009

VB.NET ничем не отличается от любого другого языка .NET.

Представление о том, что VB работает медленно, больше не имеет места.

Вот список руководств по VB.NET с XNA (набор инструментов для разработки игр).

person Mitch Wheat    schedule 30.04.2009

Как отмечали другие, .Net не медленный, но есть несколько вещей, которые противостоят ему при разработке игр:

  1. Недетерминизм сборки мусора
  2. Низкая переносимость (по сравнению с C)
  3. Отсутствие зрелых инструментов/библиотек/фреймворков для разработки игр

Что касается использования VB.Net конкретно. Господи, почему? :-)

person Jim Arnold    schedule 30.04.2009

Вы можете использовать Microsoft XNA Framework для графики и обычное приложение WinForms для хранения всего вашего кода. Просто установите XNA Framework и добавьте ссылку из своего приложения VB WinForms.

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

person Nate    schedule 30.04.2009

Те, кто говорят, что Сеть медленная, ошибаются. Во время выполнения JIT-компилятор преобразует IL в машинный код. Код IL имеет много преимуществ. Вы можете написать игру на C#/VBNET и использовать фреймворк как Monogame или FNA (это повторная реализация XNA). Игра, написанная с помощью monogame/fna, является мультиплатформенной.

person Predator    schedule 10.04.2020