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

XNA, прямой X, OpenGL

Я давно хотел дать игровое программирование и никогда не обходил его, и я наконец решил его вернуть. Я решил попробовать создать простую 2D-платформу. У меня была быстрая игра с XNA, и мне это нравится. То, что я ищу, это сравнение между XNA, directx, OpenGL. главным образом, сильные и слабые стороны между ними. Я был разработчиком .net за последние 4 года, и это были мои знания в основном.

4b9b3361

Ответ 1

Если вы хотите сделать Direct X, поздоровайтесь с Win32 и COM в качестве новых лучших друзей. Вы будете тратить много времени на изучение знаний и навыков API win32. DirectX с Win32 предоставляет вам все функции, необходимые для звука, ввода игры и графического дисплея. Вы также будете писать на C или С++, и вы узнаете все об управлении памятью и менталитете C - не то, что вам следует рассмотреть, чтобы отказаться от него. Изучение и использование C как языка для крупного проекта может быть очень освещающим, и вы благодарны за современные функции языка программирования и элементы дизайна. Вы на самом деле не вынуждены использовать C или С++ для разработки здесь; существуют различные обертки .NET и другие языковые оболочки для Direct X, но если у вас есть опыт .NET, вы можете использовать фреймворк для .NET: XNA.

XNA - это гораздо более новый, основанный на .NET набор инструментов. Он обеспечивает многие из тех же функций, что прямое использование Win32 и DirectX (звук, вход и т.д.), Но изначально на управляемой платформе. Для большинства игр (особенно когда вы только начинаете) вы можете получить отличные фреймворки с XNA-игрой (даже если родное приложение может дать вам больше), и это очень хорошо для изучения возможностей разработки игр - t действительно идет не так. Большинство фундаментальных структур данных, которые вам понадобятся (квадроциклы, архитектура Model-view-controller, обработка событий, структура вашей программы), вам все равно нужно будет учиться и реализовывать себя, а это в .NET будет безусловно, будет проще, чем на C и С++. Как хороший бонусный бонус, если у вас есть Xbox 360, игры для сообщества XNA могут, с некоторой работой, быть выпущены через рынок Xbox Live. В принципе, как разработчик .NET, вы, вероятно, почувствуете себя наиболее комфортно здесь.

OpenGL - это библиотека кросс-платоформ для рисования полигонов. Он имеет другую структуру и API от Direct X и не предоставляет каких-либо инструментов взаимодействия с ОС. Там пакеты, которые позволяют вам программировать в OGL на разных языках. Однако, как говорили другие, это, вероятно, будет так же много работать, как писать с Win32 и DirectX. Для других функций, помимо графики (клавиатура, мышь, джойстик, аудио), вы можете рассмотреть возможность использования фреймворка, например SDL некоторые из недостающих функций DirectX, Там довольно приличное сообщество, окружающее библиотеку, которое может дать вам указатели и подсказки, если вы идете по этому маршруту.

Больше мыслей об этом можно найти в почти идентичной статье, здесь: Рекомендуемая игровая платформа для изучения Direct-x, C Open GL или XNA.

Ответ 2

XNA будет самым простым/быстрым способом получить игру и запустить для 360 или Windows платформ. Это позволит вам продолжать развиваться так, как вы уже знакомы (С#.NET), и он предоставит вам значительную структуру, которая автоматически позаботится об обычно используемом материале. С этой легкостью возникают некоторые ограничения, поскольку, поскольку вы будете ограничены только вышеупомянутыми платформами, и из-за того, что это большая структура, будет много накладных расходов, которые по большей части будут неиспользованы, что приведет к ударам производительности, однако с помощью простого 2D-платформера это вероятно, не будет проблемой.

DirectX собирается ограничить вас и в платформе, и будет намного сложнее учиться и развиваться. Также вы, скорее всего, будете программировать на C или С++ здесь. Преимущества будут в производительности, так как вы обрабатываете все, что вы будете контролировать все и сможете оптимизировать все, что вам нужно. Я бы подумал, что для первой игры вам будет намного лучше начать с XNA и перейти в DirectX после того, как вы "переросли" XNA. Особенно с целью создания простого 2D-платформы.

OpenGL позволит вашей игре работать на большинстве платформ, но будет такой же сложной (если не moreso), как DirectX (хотя я должен упомянуть, что для OpenGL есть графические движки, которые довольно просты в использовании, например OGRE. Вы также будете развиваться в C/С++ для OpenGL. Снова я бы подумал, что XNA будет лучшим выбором, пока вы не почувствуете, что готовы к следующему шагу.

Ответ 3

Если ваш опыт был в основном с .NET, как вы говорите, у XNA был бы самый короткий барьер для входа, хотя вы не получите такой же хорошей производительности, как вы можете, с другими вариантами. Однако, как вы говорите, вы планируете создавать 2D-платформер (предполагая, что здесь подразумевается "неадресное" ), тогда XNA будет более чем достаточным и, вероятно, самым подходящим выбором для вашего проекта.

Ответ 4

DirectX не означает, что вам нужно использовать собственный код, там есть несколько управляемых оберток. Потери производительности находятся где-то в диапазоне 1-3% от родного DirectX, но учитывая, что вы сэкономите часы и часы времени разработки и, вероятно, никогда не понадобится, что последние 2% в любом случае, управляемый способ пойти.

Смотрите этот пример: SlimDX - полностью управляемая оболочка для DirectX в С#

Ответ 5

Один из вариантов - написать свой движок в .NET, но реализовать средство визуализации с помощью С++/CLI. Я делаю это для одного из моих проектов. XNA, OpenGL и DX слишком низки для того, что я хочу. Я не хочу писать рендерер, я хочу использовать существующий. Обертка Ogre3D, Mogre, кажется, полная беспорядок (не уверен, что это дизайн Mogre, Ogre3D или оба), и большинство других оберток безнадежно устарели. Вместо этого я реализую средство визуализации с использованием С++/CLI и Irrlicht, который кажется более быстрым и более продуманным, чем Ogre3D.

Вы можете сделать что-то подобное.

Ответ 6

Я начал использовать DirectX, но теперь перешел на XNA, главным образом потому, что хочу больше сосредоточиться на реальном игровом процессе и меньше на технологии, стоящей за игрой. Конечно, вам все равно придется немного кодировать двигатель, но он помогает многим иметь фреймворк, который поставляет готовые функции, специально предназначенные для игрового программирования.