Я не разработчик игр (если не считать игру Реверси, которую я написал на ассемблере Atari 6502 в ~ 1982 г.), но у меня есть большой опыт написания коммерческого прикладного программного обеспечения на ассемблере -> C -> Objective-C (кто-нибудь помнит Next Cube?) -> C ++ -> Java и теперь C #.
Я не могу сравнить игровые библиотеки, но у меня есть некоторые мысли по поводу C ++ и C #.
IMO, аргумент для C ++ по сравнению с C # из-за производительности не так прост, как некоторые могли бы поверить. Программное обеспечение, над которым я работаю, критично для производительности. Мы конкурируем с продуктами, скомпилированными для собственного кода (предположительно написанными на C / C ++ / Assembly), и мы выигрываем в производительности до такой степени, что наши конкуренты даже используют наше программное обеспечение вместо своих для определенных приложений .
Как это может быть, если C ++ быстрее, чем C #? По моему опыту, ответ заключается в том, что для любой сложной системы архитектура и алгоритмы более важны, чем язык (при условии, что потенциальная производительность находится на одном уровне - что, безусловно, с C ++ и C #). Несмотря на то, что я был разработчиком C ++ на полную ставку больше лет, чем использовал C #, я гораздо более продуктивен в C #, чем в C ++. Это означает, что я могу потратить больше времени на рефакторинг и совершенствование своей архитектуры и алгоритмов, чем раньше.
Теперь иногда мне приходится признать, что у меня возникает соблазн переписать основной движок моего приложения на C ++, потому что я знаю, что смогу заставить его работать быстрее и использовать меньше памяти. До сих пор я сопротивлялся этому убеждению, потому что я считаю, что падение производительности означало бы, что это всего лишь вопрос времени, когда моя кодовая база C ++ станет медленнее, чем я был бы, если бы остался с C #.
Я полагаю, что это только вопрос времени, когда разработка игр перейдет на C # и / или Java и / или какой-либо другой язык, более производительный, чем C ++. Пользуясь Java в течение нескольких лет, а теперь и C #, я бы сделал ставку на C #, но это только предположение.
Если бы я начинал разработку игр сегодня, я бы определенно сделал ставку на Silverlight и / или WPF. WPF построен на Direct3D. Microsoft уже объявила, что Silverlight 3 будет поддерживать аппаратную 3D-рендеринг. Silverlight работает на различных браузерах и Mac. С Moonlight он работает на Linux. Это было объявлено для некоторых телефонных платформ. Благодаря тому факту, что Silverlight по сути является облегченной версией WPF (изначально она представлялась как «WPF / E», где «E» означает «Везде»), вы можете использовать обе цели без особых дополнительных усилий. Вы можете иметь облегченную (бесплатную или поддерживаемую рекламой) версию своей игры, используя Silverlight в браузере, и реальную сделку для серьезных геймеров, использующих WPF и работающих в Windows.
А еще лучше: создайте отличную игровую библиотеку, которая позволяет легко ориентироваться как на WPF, так и на Silverlight 3 (или Silverlight 2, если вам не требуется аппаратный 3D-рендеринг).
Хотя я не видел официального объявления, трудно поверить, что следующее поколение XBox не будет поддерживать Silverlight. Конечно, я бы не стал искать его в игровых системах Sony или Nintendo.