Если вы не готовы платить 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 например.)