Я хочу начать разработку для своего Xbox 360, и я слышал о платформе XNA, которая может быть ориентирована как на ПК, так и на Xbox. Это звучит как привлекательный вариант, так как мои клиенты могут использовать игру / приложение на обычных компьютерах.
Однако я очень новичок в сцене Xbox. XNA предназначен только для любителей и не рекомендуется для полупрофессиональных или корпоративных приложений? У XNA нет возможностей разработанного на C ++ решения или оно сильно снижает производительность игры / приложения, работающего на Xbox?
Можно ли нацелить Xbox с помощью C # и без XNA? Каковы преимущества?
Низкоуровневое программирование будет на C ++ напрямую работать с DirectX. Каковы преимущества?
Если вы не готовы платить 10 000 долларов за устройство XBOX или Playstation, единственной консолью, для которой вы можете разработать, является XBOX 360, и единственный способ сделать это - с помощью XNA.
Что касается профессионального развития, если вам действительно не нужно получать 100% вычислительной мощности XBOX (что не нужно большинству игр, особенно 2D-игр), тогда XNA, на мой взгляд, на самом деле намного лучше для разработки.
Некоторые ошибки, которые сделали другие ответчики:
У XBOX всего 3 ядра. Вы получаете доступ ко всем из них с XNA.
Каждое ядро имеет гиперпоточность и поддержку 2-х гиперпоточностей. Вы получаете доступ только к 4/6 темам. Одна из этих тем предназначена для XNA. Другой поток, к которому не имеют доступа разработчики игр, так как он используется ОС XBOX.
C # на XBOX намного медленнее, чем C # на Windows. XBOX использует компактную CLR .NET, которая очень легковесна и в которой отсутствуют многие варианты настольных CLR. Функции безопасности XBOX не позволяют программам изменять собственный исходный код. Это делает очень трудным даже запускать код .NET, а тем более - быстрый . Частично то, что делает управляемый код конкурентоспособным по производительности с собственным кодом C ++, заключается в том, что CLR может модифицировать свой собственный код для оптимизации когерентности кэша. Команда разработчиков XNA должна перепрыгнуть через несколько довольно больших циклов, чтобы вообще заставить C # работать на XBOX, и с этими циклами связано снижение производительности.
Вы не станете слишком ленивым с распределением памяти. XNA в Windows значительно упрощает распределение памяти, как и следовало ожидать от управляемой среды. Однако в XBOX в .NET compact CLR используется быстрый и компактный подход к сбору мусора, а типичным подходом к предотвращению заикания в вашей игре из-за коллекций является полное исключение коллекций. Это требует использования пулов объектов для ваших классов и использования структур для небольших объектов, где вы обычно используете классы в среде Windows. Как правило, для создания пула объектов требуется модель управления объектами с распределением / освобождением, что не хуже (и, возможно, немного лучше), чем управление памятью в C ++.
Тем не менее, разработка в C # / XNA все еще во много раз быстрее и проще, чем разработка в C ++ без DirectX API (что такое XNA).
Вот статус игры, которую я делаю в XNA, после 4 недель работы:
Это должно дать вам представление о том, насколько невероятно быстрая разработка с библиотекой / API XNA сочетается с C #.
Этот скриншот воспроизводится XBOX со скоростью около 65 кадров в секунду.
Если вы являетесь разработчиком игр для любителей и хотите делать игры для консоли, XNA + XBOX не только ваш единственный реалистичный вариант, это также довольно удивительный вариант, забавная среда разработки, и многие игры XBOX Live Arcade были сделанный с XNA, и сделал сотни тысяч долларов, делая это. ( Limbo например.)
источник
XNA - обоюдоострый клинок; он относительно прост в использовании, но очень расширяем и настраиваем. Проблема заключается в том, что, будучи основанным на управляемом языке и имеющем так называемую реализацию Compact Framework, выжимать производительность из сложной игры может быть очень болезненным и разочаровывающим.
Развертывание на Xbox возможно только через C # / XNA или C ++ / DirectX, но для второго варианта требуется наличие лицензии XBLA и оплата за devkit, что может быть очень дорого (~ 10000 $).
И помните, что Xbox является закрытой системой. Забудьте о прямом взаимодействии по TCP / IP, вы можете общаться только с другими консолями, присутствующими в Xbox Live! сеть, и вы не можете делать необработанные HTTP-соединения.
Итак, если вы думаете об игре, попробуйте XNA и перейдите к devkit, если вам нужно больше силы (и у вас есть деньги). Если вы думаете о приложении ... просто цель для другой платформы.
источник