Я так понял, вопрос больше про технологию чем про инструментарий. Советую вам использовать для начальной обрисовки идеи использовать OpenGL, а потом, когда опыта будет боболе, то перенесете на DirectX. XNA всетаки больше для бизнес-приложений. Я так понимаю вопрос был создан под действием топика про халфу :)
Таких бизнес-приложений: www.youtube.com/watch?v=TgChURF5fQE? :)
На платформе xbox360 XNA используется вовсю уже давно (думаю в играх типа Halo 3 — тоже).
если же включить режим телепата и предположить, что вы собираетесь делать что-то, использующее GPU под Windows (исходя из предложенных вариантов)
то я бы рекомендовал DX10 via C#
очень чистый интерфейс в отличие от предыдущего DX9, полностью пересмотрен API, стало более… эээ, cohesive (сгруппировано по функциональности)
выкинут весь fixed-function анахронизм, и — внимание — выкинут концепт «hardware capabilities», теперь гарантируется, что железяка (точнее, драйвер) должна реализовывать весь API
программировать его — одно удовольствие
с OpenGL я работал пару лет и могу точно вам сказать, что геморрой с ним будет просто космический и это может быть оправдано только лишь острой необходимостью в кросс-платформенности
а, ну ещё OpenGL используют гики — для демок, юзающих vendor-specific фичи железяк (которые, понятное дело, недоступны из DirectX)
Хм… следуя вашему рассуждению приходим к Ruby + DX10 — используя компилятор Ruby написанный на C++, или лучше на ASM.
получим такого же франкенштейна как firefox, зато скорость разработки будет невероятной :))))
1. На данный момент Ruby является самым перспективным языком в платформе, заточенной под быстрое создание приложений — дальше нам нужно определиться с тем кто нам все это будет показывать — поскольку речь идет только об одной платформе — то смело можно писать компилятор — а чтобы работал быстрее — на assembler (который с моей легкой руки был назван ASM-ом)
2. Что касается firefox — как мы все знаем ядро firefox состоит из интерпретатора XUL, к которому подключаются различные плагины и модули. Очень удачная и расширяемая архитектура — в итоге очень удачный проект.
Мой предыдущий комментарий — не более чем размышление на интересную тему и никак не попытка Вас задеть :)
Ruby не подходит для работы с DirectX, не тот уровень
с C# это ещё как-то реально без заметного performance hit (биндинги к C-коду через C++/CLI, unsafe-блоки для работы с сырой памятью, P/Invoke)
а игровую логику делать на чем-то вроде Ruby это фи… немодно уже
в конторах, где я работал, использовали Virtools и Quest3D — графические визуальные языки, для ультра-high-level кодинга (редактирование кода на живой системе — это убойная фича)
а можно по-подробнее?
у нас есть идея создания OpenSource online 3D игры и мы ищем наиболее удачную и расширяемую платформу.
Посоветуете?
И почему Ruby не модно?
идея хорошая, потом будет что в резюме показывать, когда пойдете на реальный проект спустя пару лет, когда энтузиазм пропадет
а насчет наиболее «удачной и расширяемой» — пишите на C#, и клиента, и сервер
до performance-оптимизаций у вас дело просто не дойдет
насчет немодного Ruby я пошутил, но, в любом случае, я не вижу смысла в лишнем языке — C# достаточно хорош сам по себе, чтобы не париться насчет каких-то еще языков
насчет оптимизаций — код который острее всего в ней нуждается мы выделим в отдельный модуль — для OpenSource очень даже хорошо — туда будут суваться только самые отьявленные умельцы, а все остальное будет идейно и на более высоком уровне :)
на рендеринге у него abstraction penalty минимальный, но толку с этого, если платформа не дает мне той выразительности, что необходима
на этой штуке удобно описывать вещи вроде: «вот у нас объект, машинка, сделано из таких-то моделек, налеплены такие-то материалы; вот у нас кнопка, нажали кнопку, машинка поехала»
но чтобы сделать сложную игру, например, Warcraft, мне неудобно использовать Virtools, он слишком высокоуровневый для моих задач (т.е. такую игру проще описать на C#+DirectX, чем на Virtools)
работа с графикой — это настолько интимная часть проекта, что тут нет смысла какие-то готовые абстракции использовать, с учетом того, что современный DirectX сам по себе достаточно высокоуровневый
XNA + C# vs DirectX + C++ vs OpenGL. Что лучше? И почему?